Amazonで商品を見るセール会場へ

Claude Codeをスマホから操作する|Remote Control設定でハマった3つの罠

Macで Claude Code に作業させながら、席を外したあともスマートフォンから続きを指示したい場面があります。

その操作を実現するのが Remote Control 機能です。

公式ドキュメントの手順通りなら数分で完了する設定ですが、実際には3か所でつまずきました。

同様のエラーで止まりやすいポイントについて、原因と対処法をまとめます。

まずは結論として、

つまずいた3つの原因を挙げます。

  1. デスクトップアプリのみを導入しており、claude コマンドが存在しなかった
  2. インストール後、起動したままのターミナルでは PATH が反映されていなかった
  3. .zprofile に混入した全角スペースが原因でシェル起動時にエラーが発生していた
目次

Remote Control とは

claude.ai/code やスマートフォンの Claude アプリから、ローカルマシンで起動している Claude Code セッションに接続して操作する機能です。

処理はすべて手元の Mac 上で実行されます。

ローカルのファイルや MCP サーバー環境をそのまま利用でき、スマートフォン側はインターフェースとして機能します。

クラウド上で実行される「Claude Code on the web」とは仕組みが異なります。

通信はローカル側からのアウトバウンド HTTPS 接続のみを利用し、インバウンドの待ち受けポートは開放しません。

Mac のスリープやネットワーク切断が発生しても、復帰時に自動で再接続され、メッセージや承認要求が再送されます。

利用には Pro、Max、Team、Enterprise のいずれかのプラン契約が必要です。

API キー認証では利用できません。

設定そのものは1行

自動接続を有効にするには、設定ファイル ~/.claude/settings.json に設定キーを追加します。

{
  "remoteControlAtStartup": true
}

デスクトップアプリを使用している場合は、設定 > Claude Code > Enable remote control by default をオンに切り替えても同様に反映されます。

設定時の注意点が1点あります。

この設定は、設定変更後に新しく起動したセッションにのみ反映されます。

起動済みのセッションには適用されないため、設定しても反映されない場合はセッションの再起動が必要です。

罠1:デスクトップアプリに CLI は同梱されていない

設定を有効化したものの画面上にセッション情報が表示されず、ターミナルで claude rc を実行するようメッセージが表示されました。

指定されたコマンドを実行すると、次のエラーが発生します。

$ claude rc
zsh: command not found: claude

パスを確認したところ、実行ファイルが存在していませんでした。

$ which claude
claude not found

~/.local/bin/opt/homebrew/bin、npm グローバル、Claude.app のバンドル内を確認しても配置されていません。

デスクトップアプリ(Claude.app)と CLI(claude コマンド)は別製品として提供されています。

アプリをインストールしただけでは CLI コマンドは配置されません。

Remote Control のセッションを待受起動するには CLI または VS Code 拡張機能が必要となるため、個別に CLI のインストールを行います。

CLI のインストール

公式インストーラを使用した導入が推奨されています。

ネイティブバイナリが配置され、バックグラウンドでの自動更新が有効になります。

curl -fsSL https://claude.ai/install.sh | bash

Homebrew 経由での導入にも対応しています。

/opt/homebrew/bin 配下に配置されるため PATH 追加は不要ですが、自動更新機能は働きません。

brew install --cask claude-code

公式インストーラによる配置先は ~/.local/bin/claude で、実体は ~/.local/share/claude/versions/<version> へのシンボリックリンクです。

Version: 2.1.258
Location: ~/.local/bin/claude

罠2:開いたままのターミナルでは PATH が更新されない

インストーラ実行時に、環境変数 PATH に関する案内が出力されます。

Native installation exists but ~/.local/bin is not in your PATH. Run:

  echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc

~/.zshrc の末尾に PATH 設定を追記します。

# Claude Code
export PATH="$HOME/.local/bin:$PATH"

設定を書き換えても、すでに開いているターミナル上では command not found のエラーが継続します。

シェルの設定ファイルは、新しいシェルプロセスを起動したタイミングで読み込まれます

起動中のターミナルセッションでは、設定ファイルを編集しても即座に PATH は更新されません。

反映させるには次のいずれかの操作を行います。

  • ⌘T で新しいタブを開く(推奨・確実)
  • source ~/.zshrc を実行して設定ファイルを再読み込みする
  • 現在のシェルセッションで直接 export PATH="$HOME/.local/bin:$PATH" を実行する

設定変更後にターミナルを開き直さず、複数回同じエラーを発生させてしまいました。

設定を正しく記述したにもかかわらずコマンドが認識されない場合は、ターミナルのタブを開き直してください。

罠3:設定ファイルに全角スペースが混入していた

ターミナル起動時に、毎回以下のエラー行が出力されていました。

(eval):8: command not found:  

調査したところ、原因は ~/.zprofile の1行目にありました。

cat -v を実行して制御文字・不可視文字を表示すると確認できます。

$ sed -n 1p ~/.zprofile | cat -v
eval "$(/opt/homebrew/bin/brew shellenv)" M-cM-^@M-^@

行末に出力されている M-cM-^@M-^@ は、UTF-8 バイト列の E3 80 80 にあたり、全角スペース(U+3000)を表しています。

日本語入力の状態でファイルを編集し、確定時のスペースが末尾に残った状態でした。

エラーが発生する原因

eval において、シェルの eval コマンドは渡された引数を空白区切りで連結したうえでコマンド文字列として評価・実行します

eval "$(brew shellenv)"  

brew shellenv は通常、環境変数設定用の複数行の export コマンドを出力します。

出力の末尾に全角スペースが存在すると、連結処理によって最終行に全角スペースのみで構成された行が生成されます

zsh は全角スペースをコマンド名として解決しようとし、該当コマンドが存在しないため (eval):8: command not found というエラーを出力します。

エラー行に表示されている :8 は、連結後に評価された行番号を示していました。

半角スペースはコマンド引数の区切り文字として処理されますが、全角スペースはシェル上で通常の文字(トークン)として扱われるため区切り文字になりません。

目視での確認が難しく原因特定に時間を要しやすい点です。

不可視文字の検出手順

通常のエディタ表示では混入に気づきにくいケースがあります。

ターミナルから以下のコマンドを実行して検出します。

LC_ALL=C grep -n '[^ -~]' ~/.zprofile | cat -v

LC_ALL=C ロケールで評価して ASCII 印字可能文字(スペースからチルダまで)以外のバイトを含む行を抽出し、不可視文字を可視化して表示します。

.zshrc .zshenv .bash_profile などの起動ファイルも合わせて確認することをおすすめします。

なお、設定ファイル内に日本語コメントを記述している行も本検索に一致します。

コメントアウトされた行を除外し、コマンド実行行に意図しない不可視文字が含まれていないかを確認してください。

今回の調査時、同じく .zprofile 内に eval "$(brew shellenv)" の記述が計7回重複して記述されている状態も見つかりました。

Homebrew の再セットアップや自動設定スクリプトの実行を繰り返したことで追記されたと考えられます。

致命的な動作不良には至りませんが、PATH 内で /opt/homebrew/bin が重複登録される原因になります。

認証ログインとワークスペースの信頼設定

CLI インストール完了後、アカウントログインを行います。

claude auth login

デスクトップアプリ側の認証情報は CLI と共有されません。

アプリ版でログイン済みであっても、CLI 側で個別の認証操作が必要です。

現在の認証状態および動作環境は claude doctor コマンドで診断できます。

未ログイン状態では警告およびエラーが表示されます。

Remote Control
Remote Control requires a claude.ai subscription. Run claude auth login to sign in.
- Not signed in to claude.ai
- claude.ai subscription auth not active
- Sign-in is missing the user:profile scope

認証完了後は表示が切り替わります。

未認証警告が解消され、正常なステータスが表示されればログイン完了です。

Remote Control
Control this session from claude.ai/code or the Claude mobile app

続いて、作業対象となるプロジェクトのディレクトリへ移動して起動します。

cd ~/path/to/project && claude

初回起動時にディレクトリの信頼確認プロンプトが表示されるため、承認を行います。

ホームディレクトリ直下では信頼状態が永続化されないため、対象プロジェクトの専用ディレクトリに移動してから起動してください。

接続状態の確認方法

正常に接続できているかは以下の3か所で確認できます。

  • ターミナル画面:プロンプト下部のフッター領域に /rc active と表示されます。ウィンドウ幅が狭い場合は表示が省略されることがあります。
  • スマートフォンアプリ:Claude アプリの Code タブにアクティブなセッション一覧が表示されます。
    PCアイコンと緑色のインジケータが表示されていればオンライン状態です。
  • Webブラウザclaude.ai/code にアクセスすると、同様にセッション一覧が表示されます。

一覧に表示されない場合は、ターミナルで /remote-control を実行して手動で接続を確立します。

セッション URL と QR コードが出力されるため、スマートフォンで QR コードを読み取ると対象セッションへ直接アクセスできます。

進行中のセッションをそのままリモートへ引き継ぐ手順

すでにターミナルで対話中のセッションをスマートフォンへ引き継ぎたい場合は、入力欄で次のコマンドを実行します。

/remote-control

短縮コマンドとして /rc も利用可能です。

それまでの対話コンテキストを保持したままリモート接続へ切り替わります。

セッションを識別しやすくしたい場合は、/remote-control プロジェクト名 のように引数で名前を指定して起動できます。

作業端末でバックグラウンド待受用のセッションを立ち上げておく場合は、以下のコマンドで起動します。

claude remote-control

待受状態で起動し、スペースキーを押すことで接続用 QR コードを再表示できます。

補足:claude doctor の診断結果は実行元プロセスの環境変数に依存する

デスクトップアプリ内のターミナル環境から claude doctor を実行したところ、以下の出力を確認しました。

Auto-updates: disabled (set by env: DISABLE_AUTOUPDATER)

ネイティブインストーラでセットアップしたにもかかわらず自動更新が無効と判定されたため確認したところ、設定ファイルおよびログインシェルの双方に DISABLE_AUTOUPDATER の設定は記述されていませんでした。

$ env -i HOME="$HOME" /bin/zsh -ic 'echo $DISABLE_AUTOUPDATER'
(空)

クリーンな環境変数で起動したシェルでは空値として扱われます。

この設定値は、デスクトップアプリのプロセス環境変数限定で付与されていたものであり、標準ターミナルから CLI を直接起動して利用する場合には自動更新機能が正常に動作します。

claude doctor コマンドは呼び出し元プロセスの環境変数を読み込んで判定を行うため、実行元の環境によって診断結果が変化します

正確な環境診断を行う際は、標準のターミナルアプリから直接コマンドを実行してください。

接続後に切断が発生した場合の対処については、以下の関連記事も参照してください。

導入と設定の記事は、ほかにもあります。

まとめ

Remote Control は設定項目自体は1行であり、外部ポート開放を不要とする安全な接続設計になっています。

セットアップ時につまずきやすい要因は、事前の環境構築やシェル設定に集中しています。

エラー・症状発生原因対処方法
command not found: claudeデスクトップアプリに CLI バイナリが含まれていない公式インストーラ等で CLI を個別インストールする
インストール完了後も command not found起動済みシェルの PATH に反映されていないターミナルの新規タブを開き直す
(eval):8: command not found.zprofile 内に全角スペースが混入しているLC_ALL=C grep コマンド等で検索して削除する
設定ファイルを変更したのに自動接続されない変更前に起動していた既存セッションには設定が反映されないセッションを再起動するか、セッション内で /rc
CLI 実行時にログインを求められるデスクトップアプリと CLI で認証情報が共有されないclaude auth login

特に全角スペースの混入は、日本語入力環境下でシェルの起動ファイルを編集する際に起こりやすいトラブルです。

原因が特定しづらいシェルエラーに遭遇した際は、まず LC_ALL=C grep -n '[^ -~]' などのコマンドで不可視文字が混入していないか確認することをおすすめします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

生成AIのおすすめ書籍

周辺機器の優先度

目次