Claude Code v2.1.51 で導入された Remote Control は、手元のマシンで動いている Claude Code セッションを、ブラウザや iPhone から継続操作するための機能です。
クラウドに仕事を丸投げする Claude Code on the web と違い、セッション自体は自分のマシン上で動き続け、ローカルの MCP サーバーやプロジェクト設定がそのまま使えます。
この記事では macOS + iPhone で実際に動かし、セットアップ・想定ユースケース・実機でハマった点をまとめます。
前提・環境
- Claude Code v2.1.51 以上。プッシュ通知も使う場合は v2.1.110 以上(出典)
- Pro / Max / Team / Enterprise プラン。API キー認証は不可で、claude.ai の OAuth ログインが必須(出典)
- Team と Enterprise は管理者が Claude Code admin settings の Remote Control トグルを有効化しておく必要があります
- iPhone 側は App Store の Claude by Anthropic(公式アプリ)を使います
筆者の検証環境は macOS + iPhone、claude --version は 2.1.112 (Claude Code) でした。
Remote Control の位置づけ
Remote Control は「ローカルで動いているセッションへの窓口」を提供する機能です。claude.ai/code(Web)と iOS/Android の Claude アプリが同じセッションに接続し、どこからでも会話を継ぎ足せます(出典)。
似た名前の Claude Code on the web は Anthropic のクラウドで動きますが、Remote Control のセッションはあくまでユーザーのマシン上で動作します。
ローカルに置いた MCP サーバー、プロジェクト設定、ファイルシステム、@ でのファイル補完がそのまま使えるのはこの設計のおかげです(出典)。
セットアップ手順(macOS + iPhone)
macOS 側
Remote Control を立ち上げる方法は 3 通り用意されています(出典)。
# macOS 15 / Claude Code 2.1.112
# (1) サーバモード: 対話なし、待受専用
claude remote-control --name "my-project"
# (2) 対話モードに併設: 通常のターミナル対話も使える
claude --remote-control "my-project"
# (3) 既存セッションの途中で切替
/remote-control my-projectサーバモードの claude remote-control はターミナルに session URL と接続状況を表示し続けます。スペースキーで接続用の QR コードがターミナル内にトグル表示されます。
毎回フラグを付けるのが面倒な場合は、Claude Code 内で /config を開き、Enable Remote Control for all sessions を true にすると、以降の対話セッションで自動有効化されます(出典)。
iPhone 側
Claude Code の対話セッションで /mobile を送ると iOS/Android の配布 QR が表示されます(出典)。iPhone 側は以下を順に実施します。
- App Store からアプリをインストール
- claude.ai と同じアカウントでサインイン
- OS の通知許可ダイアログを承認
- macOS の Claude Code で /config → Push when Claude decides を true に設定
Remote Control セッションはアプリ内のセッション一覧に「コンピュータアイコン + 緑のステータスドット」で表示されます(出典)。
接続方法は3種類
- サーバモード起動時に表示される session URL をブラウザで開く
- スペースキーで表示した QR を Claude アプリで読み込む
- claude.ai/code または Claude アプリのセッション一覧から選ぶ
3 つのユースケース
1: 外出先から、既存の PR レビューを継続する
Mac を自宅に置いたまま外出し、iPhone のモバイル回線から claude.ai/code のセッション一覧を開いて続きを指示する使い方です。
Remote Control のセッションはローカルマシンに居るので、gh pr view や MCP の社内ツールへのアクセス権もそのまま維持されます。
2: 長時間タスクを投げて、完了通知を待つ
テスト走行・ビルド・大きめのリファクタなど、完了まで数分〜十数分かかる作業を iPhone から投げておき、結果が出たらプッシュ通知で知るというパターンです。
プッシュは Claude 自身が「長時間タスクの完了時」「判断待ち」と判断したタイミングで送られます(出典)。プロンプトに notify me when the tests finish と書いて明示依頼もできます。
3: 移動中のショートセッションで軽微な修正
電車に乗っている 10〜15 分で、lint 警告や型エラーなどの軽い修正を片付ける使い方。作業の中心はあくまで Mac 側で動いている Claude Code なので、iPhone はほとんど「指示を入れて結果を承認する」だけのインターフェースになります。
iPhone のソフトウェアキーボードで長い指示を打つのは体力的に現実的でないので、U3 は短いプロンプトで片が付く範囲に絞るのが無難と思われます。
ハマりどころと制限
起動直後の iPhone から繋がらない問題
claude remote-control --verbose でサーバを起動し、ターミナルに以下が表示されて Ready 状態になります。
Remote Control v2.1.112
Spawn mode: same-dir
Max concurrent sessions: 32
Environment ID: env_XXXXXXXXXXXXXXXXXXXXXXこの状態で iPhone の Claude アプリを開いても、セッション一覧にこのセッションが現れないか、一覧から開いてもメッセージ送信時に「不明なネットワークエラー」になることが再現しました。筆者の環境では、セッションの停止と再起動を数回繰り返すと再現しやすい傾向がありました。
回避策は、最初の 1 通を Mac の Web ブラウザから送ることです。claude.ai/code?environment=<env_id> を開いてメッセージを送信すると、Mac 側ターミナルに以下のログが出ます。
Session started: "Session cse_XXXXXXXXXXXXXこの時点以降、iPhone アプリのセッション一覧にも出現し、正常に送受信できるようになりました。Remote Control は Environment(待受の窓口)と Session(個々の会話)を別物として扱っており、最初のメッセージ送信時に初めて Session が作られる設計で、iPhone アプリのセッション一覧は Session 単位で引いているためと思われます。この挙動は公式の Troubleshooting には記載されていません。
公式ドキュメント記載の制限
以下は 公式ドキュメント に明記されている制限です。
- Interactive プロセス 1 個につき Remote Control セッションは 1 つ。同時並列が必要なら claude remote-control のサーバモード(デフォルトで最大 32 セッション)を使います
- claude プロセスを終了するとセッションも終了。ターミナルを閉じたり、VS Code を終了したりすると切れます
- マシンが起きていてもネットワーク不通が約 10 分続くとプロセスが自動終了し、再起動が必要
- Ultraplan セッションを開くと Remote Control は切断されます。両者が claude.ai/code の UI を取り合うための排他仕様です
- /mcp、/plugin、/resume のような対話型ピッカーを開くコマンドは iPhone 側から使えません。これらはローカル CLI 専用で、iPhone 側で入力しても応答しません
- プッシュ通知は iOS のフォーカスモードや通知サマリーで遅延・抑制される場合があります。設定 → 通知 → Claude で確認できます
DISABLE_TELEMETRY 系の環境変数で Remote Control が有効化されない(実体験)
公式 Troubleshooting の "Remote Control is not yet enabled for your account" パターンとして、以下の環境変数が設定されているとフィーチャーフラグ評価が無効化され、Remote Control がそもそも有効化されない旨が明記されています(出典)。
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
- DISABLE_TELEMETRY
筆者もこれで初回から claude remote-control が動かない状態になっていました。~/.zshrc に以下を設定している構成です。
# ~/.zshrc
export DISABLE_TELEMETRY=1対処は該当行を削除し、新しいターミナルを開いてから claude remote-control を再実行すること。既に開いていたターミナルには古い環境変数が残っているため、同じターミナルで再起動しても改善しません。プライバシー目的でテレメトリを切っていた読者は要注意です。
背景として、Claude Code はフィーチャーフラグ評価にテレメトリ経路を共有している仕組みで、テレメトリを止めると Remote Control を含むゲート付き機能が全て無効扱いになる、という解説が Zenn の「Claude Code の remote-control が動かない?3つのエラーパターンと完全復旧手順」(二次情報) に詳しくまとまっています。cmux ラッパーによる Unknown argument: <UUID> 問題や、認証キャッシュ不整合の対処にも触れられており、関連トラブルをまとめて当たりたいときに便利です。
プッシュ通知が届かない時のチェック
公式 Troubleshooting が挙げているチェック項目は以下です(出典)。
- iOS の Focus モードと通知サマリーを確認
- Push when Claude decides が true になっているか
