Macで Claude Code に作業させながら、席を外したあともスマートフォンから続きを指示したい場面があります。
その操作を実現するのが Remote Control 機能です。
公式ドキュメントの手順通りなら数分で完了する設定ですが、実際には3か所でつまずきました。
同様のエラーで止まりやすいポイントについて、原因と対処法をまとめます。
まずは結論として、
つまずいた3つの原因を挙げます。
- デスクトップアプリのみを導入しており、
claudeコマンドが存在しなかった - インストール後、起動したままのターミナルでは PATH が反映されていなかった
.zprofileに混入した全角スペースが原因でシェル起動時にエラーが発生していた
Remote Control とは
claude.ai/code やスマートフォンの Claude アプリから、ローカルマシンで起動している Claude Code セッションに接続して操作する機能です。
コードの実行とファイルへのアクセスは、接続元のMac上で行われます。
モデルへの通信や端末間の同期までMac内で完結するわけではありません。
ローカルのファイルや MCP サーバー環境をそのまま利用でき、スマートフォン側はインターフェースとして機能します。
クラウド上で実行される「Claude Code on the web」とは仕組みが異なります。
通信はローカル側からのアウトバウンド HTTPS 接続のみを利用し、インバウンドの待ち受けポートは開放しません。
一時的なスリープや回線断からは自動再接続を試みます。
ただし、ローカルのプロセスを終了すると接続は維持されません。
長時間の回線断では起動モードによって動作が異なり、server modeは約10分で終了する場合があります。
利用には Pro、Max、Team、Enterprise のいずれかのプラン契約が必要です。
API キー認証では利用できません。
Team・Enterpriseでは、組織のOwnerによる有効化も必要です。
公式のRemote Controlガイドで利用条件を確認してください。
新しいセッションの自動接続を設定する
自動接続を有効にするには、設定ファイル ~/.claude/settings.json に設定キーを追加します。
以下はキーの例で、既存の設定を残して追加・変更してください。
ファイル全体をこの例で置き換えないでください。
{
"remoteControlAtStartup": true
}デスクトップアプリを使用している場合は、設定 > Claude Code > Connect new sessions to Remote Control をオンに切り替えても同様に反映されます。
設定時の注意点が1点あります。
この設定は、設定変更後に新しく起動したセッションにのみ反映されます。
起動済みのセッションには適用されないため、設定しても反映されない場合はセッションの再起動が必要です。
デスクトップアプリの設定にある、リモートコントロールの項目です。
2026年10月13日に、Claude desktop 2.31226.1.0(Windows)の「設定」の「Claude Code」を開いて撮影しました。

本文の検証とは別のPCで、画面は日本語表示です。
「新しいセッションをリモートコントロールに接続する」はオンでした。
説明には、このコンピューターで開始したセッションは自動的に接続され、ターミナルや claude.ai/code から続きを行える、とありました。
「スマートフォンと claude.ai からここでセッションを開始できるようにする」と、「リモートコントロールのためにこのコンピューターを起動したままにする」(「おすすめ」の表示つき)は、どちらもオフでした。
本文に書いた設定とは、版も表示言語も違うため、項目名は同じではありません。
この画面で確認したのは、項目の名前と説明、オン・オフの状態までです。
設定を変えた結果や、スマートフォンからの接続は、確認していません。
罠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 コマンドは配置されません。
この記事ではターミナルから起動するため、CLIを個別に導入しました。
現在の公式資料では、CLI・デスクトップアプリ・VS Code拡張機能からRemote Controlを開始できます。
すべての利用方法で別途CLIの導入が必須という意味ではありません。
CLI のインストール
公式インストーラを使用した導入が推奨されています。
ネイティブバイナリが配置され、バックグラウンドでの自動更新が有効になります。
curl -fsSL https://claude.ai/install.sh | bashHomebrew 経由での導入にも対応しています。
Homebrewの配置先は環境によって異なります。
利用中のHomebrewのbinがPATHに含まれることを確認してください。
Homebrew版は自動更新されないため、brew upgrade claude-codeなどで更新します。
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 コマンドを出力します。
この例では、brew shellenvの出力を囲む引用符の外に全角スペースがあり、それもevalへ渡す引数になります。
再評価された文字列で全角スペースがコマンド名の位置に来ると、zshはその名前を実行しようとしてcommand not foundを出します。
エラー行に表示されている :8 は、連結後に評価された行番号を示していました。
半角スペースはコマンド引数の区切り文字として処理されますが、全角スペースはシェル上で通常の文字(トークン)として扱われるため区切り文字になりません。
目視での確認が難しく原因特定に時間を要しやすい点です。
不可視文字の検出手順
通常のエディタ表示では混入に気づきにくいケースがあります。
ターミナルから以下のコマンドを実行して検出します。
LC_ALL=C grep -n '[^ -~]' ~/.zprofile | cat -vLC_ALL=C ロケールで評価して ASCII 印字可能文字(スペースからチルダまで)以外のバイトを含む行を抽出し、不可視文字を可視化して表示します。
.zshrc .zshenv .bash_profile などの起動ファイルも合わせて確認することをおすすめします。
なお、設定ファイル内に日本語コメントを記述している行も本検索に一致します。
コメントアウトされた行を除外し、コマンド実行行に意図しない不可視文字が含まれていないかを確認してください。
今回の調査時、同じく .zprofile 内に eval "$(brew shellenv)" の記述が計7回重複して記述されている状態も見つかりました。
Homebrew の再セットアップや自動設定スクリプトの実行を繰り返したことで追記されたと考えられます。
Homebrew公式のshellenv説明では、PATHの先頭2項目がHomebrewのbinとsbinなら何も出力しないため、同じ記述を繰り返しただけで必ずPATHが重複するわけではありません。
認証ログインとワークスペースの信頼設定
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 プロジェクト名 のように引数で名前を指定して起動できます。
作業端末のターミナルを開いたまま、接続を待ち受けるserver modeを起動する場合は、以下のコマンドを使います。
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 コマンドは呼び出し元プロセスの環境変数を読み込んで判定を行うため、実行元の環境によって診断結果が変化します。
正確な環境診断を行う際は、標準のターミナルアプリから直接コマンドを実行してください。
接続後に切断が発生した場合の対処については、以下の関連記事も参照してください。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
導入と設定の記事は、ほかにもあります。




まとめ
Remote Controlは外部からの待ち受けポートを開かず、アウトバウンドHTTPSで接続します。
会話やツール操作の履歴は同期のためAnthropicのサーバーに保存されるので、ローカル実行だけを理由にデータが端末外へ出ないとは考えないでください。
セットアップ時につまずきやすい要因は、事前の環境構築やシェル設定に集中しています。
| エラー・症状 | 発生原因 | 対処方法 |
|---|---|---|
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 '[^ -~]' などのコマンドで不可視文字が混入していないか確認することをおすすめします。
よくある質問:Remote Controlの設定でつまずいたとき
Remote Controlとは、何ですか? 通信は安全ですか?
claude.ai/code やスマートフォンのClaudeアプリから、ローカルマシンで起動しているClaude Codeセッションに接続して操作する機能です。
コード実行とファイルアクセスは手元のMacで行われ、ローカルのMCP環境も利用できます。
モデルへの通信や会話の同期はサーバーを介するため、完全なオフライン処理ではありません。
クラウド上で実行される「Claude Code on the web」とは仕組みが異なります。
通信はローカル側からのアウトバウンドHTTPS接続のみを利用し、インバウンドの待ち受けポートは開放しません。
一時的な切断からは再接続を試みますが、ローカルプロセスの終了や長時間の回線断では、再起動・再接続が必要になる場合があります。
Remote Controlは、どのプランで使えますか?
Pro、Max、Team、Enterpriseが対象で、APIキー認証では利用できません。
Team・EnterpriseではOwnerによる有効化など、組織の条件も確認します。
自動で接続する設定は、どうしますか? 設定したのに反映されないのは?
ユーザー設定の ~/.claude/settings.json に remoteControlAtStartup を true として追加します。
既存のキーを残し、JSONのカンマを調整してください。
例でファイル全体を置き換えないようにします。
デスクトップアプリなら、設定 > Claude Code > Connect new sessions to Remote Control をオンにしても同様に反映されます。
この設定は、設定変更後に新しく起動したセッションにのみ反映され、起動済みのセッションには適用されないため、反映されない場合はセッションの再起動が必要です。
デスクトップアプリを入れたのに、claude コマンドが見つからないのはなぜですか?
デスクトップアプリ(Claude.app)とCLI(claude コマンド)は別製品として提供されていて、アプリをインストールしただけではCLIコマンドは配置されないためです。
ターミナルでclaudeコマンドを使う場合はCLIを導入します。
現在の公式資料ではデスクトップアプリからの開始にも対応しており、Remote Control全体の必須手順としてCLI導入を一律には要求していません。
公式インストーラでの導入が推奨されていて、ネイティブバイナリが配置され、バックグラウンドの自動更新が有効になります(配置先は ~/.local/bin/claude)。
Homebrew経由でも導入できます。
配置先は環境によって異なるため、HomebrewのbinがPATHに含まれるか確認してください。
Homebrew版は自動更新されないため、brew upgrade claude-code などで更新します。
PATHを設定したのに、command not found が続くときは?
シェルの設定ファイルは、新しいシェルプロセスを起動したタイミングで読み込まれるため、設定を書き換えても、すでに開いているターミナル上では command not found のエラーが続きます。
設定を正しく書いたのにコマンドが認識されない場合は、ターミナルのタブを開き直します。
現在のシェルセッションで、直接 export PATH を実行する方法もあります。
ターミナルを開くたびに、「(eval):8: command not found」と出るのは、なぜですか?
記事の環境では、~/.zprofile の1行目の末尾に、全角スペース(U+3000)が混入していたのが原因でした。
日本語入力の状態でファイルを編集し、確定時のスペースが末尾に残った状態です。
zshのevalは引数をシェルの入力として実行するため、引用符の外に混入した全角スペースも再評価の対象になります。
全角スペースがコマンド名として解釈されるとエラーになり、表示される行番号は評価する文字列によって変わります。
半角スペースは区切り文字として処理されますが、全角スペースは通常の文字として扱われるため、目視で気づきにくく、原因特定に時間を要しやすい点です。
cat -v で制御文字・不可視文字を表示すると確認でき、記事では、ASCII印字可能文字以外のバイトを検出するコマンドも紹介されています。
今回の環境では、同じ .zprofile に eval "$(brew shellenv)" が計7回重複していたことも確認しました。
ただし、shellenvはPATHの状態に応じて出力を省くため、記述の重複とPATHへの重複登録は分けて確認してください。
ログインは、アプリと共有されますか? 接続できたかは、どう確認しますか?
記事の環境ではCLI側で別途ログインしました。
アプリの状態だけで判断せず、claude auth status でCLIの認証状態を確認し、未ログインなら認証します。
認証状態は claude doctor で診断できます。
ホームディレクトリ直下では信頼状態が永続化されないため、対象プロジェクトの専用ディレクトリへ移動してから起動し、初回のディレクトリの信頼確認プロンプトを承認します。
接続は、ターミナルのフッターの /rc active(ウィンドウ幅が狭いと省略される)、スマートフォンアプリのCodeタブのセッション一覧(PCアイコンと緑色のインジケータ)、claude.ai/code のセッション一覧の3か所で確認できます。
一覧に出ない場合は、ターミナルで /remote-control(短縮は /rc)を実行して、手動で接続します。
claude doctor で「自動更新が無効」と出たのに、設定していないのはなぜですか?
記事の確認では、デスクトップアプリ内のターミナル環境から claude doctor を実行したところ、ネイティブインストーラで設定したにもかかわらず自動更新が無効と判定されました。
設定ファイルにもログインシェルにも DISABLE_AUTOUPDATER の記述はなく、この値はデスクトップアプリのプロセス環境変数限定で付与されていたもので、標準のターミナルからCLIを直接起動すれば、自動更新は正常に動作します。
claude doctor は呼び出し元プロセスの環境変数を読み込んで判定するため、実行元の環境によって診断結果が変わります。
正確な環境診断には、標準のターミナルアプリから直接実行します。
体験記は2026年9月、設定画面の補足は10月13日の記録です。
10月23日に主要な接続条件と導入方法を公式資料へ再照合しましたが、今回スマートフォン接続・再接続・インストールは再実行していません。
