Remote Control は、自分のマシンで動いている Claude Code のセッションに、スマホやブラウザから接続してそのまま操作を続ける機能だ。公式の説明はこうなっている——「デスクで作業を始めて、ソファに移ってからスマホで、あるいは別のコンピュータのブラウザで、それを引き継ぐ」Continue local sessions from any device with Remote Control)。

ここで押さえるべき点は1つだけだ。Claude は最初から最後まであなたのマシンで動いている。コードの実行もファイルアクセスも手元のまま。スマホと claude.ai はそのローカルセッションを覗く窓であって、実行環境ではない。

📌 この記事の前提:仕様・対象プラン・既定値は Anthropic 公式ドキュメント(Remote Control / Platforms and integrations / Data usage / Advanced setup)で確認したもの。バージョン依存の挙動には該当バージョンを併記している。Trusted Devices はベータ段階にある。

1. Remote Control とは——動くのはクラウドではなく手元のPC

「スマホからAIに開発をさせる」と聞いたとき、多くの人はクラウド上のどこかでコンテナが立ち上がる絵を思い浮かべる。Remote Control はそれとは逆の設計だ。計算もファイルも動かさず、操作する場所だけを移す。

この違いが、できることの中身をそのまま決めている。公式が挙げているのは次の4点だ。

ローカル環境がまるごと使える

ファイルシステム、MCPサーバ、ツール、プロジェクト設定がそのまま生きる。スマホで @ と打つと手元のプロジェクトのパスが補完される

両方の画面から同時に使える

会話も、サブエージェントやワークフローの進捗も全端末で同期する。ターミナル・ブラウザ・スマホのどこから打っても同じ1本の会話になる。

写真とファイルを送れる

写真はそのままメッセージの一部として読まれる。それ以外のファイルは Claude Code が手元のマシンにダウンロードして @ 参照として渡す。

中断に強い

ノートPCがスリープしても回線が切れても、復帰時に自動で再接続する。復旧までの間のサブエージェントやワークフローの更新はキューされ、繋がった時点で配送される

最後の1点は地味に効く。「電車に乗る前に走らせたビルドの結果を、降りてから受け取る」という使い方が、途中でトンネルに入っても壊れない。

使うための条件

条件 内容
プラン Pro / Max / Team / EnterpriseAPIキーでは使えない。Team・Enterprise では Owner が管理画面でトグルを入れるまで既定オフ
認証 /login で claude.ai にサインイン。claude setup-tokenCLAUDE_CODE_OAUTH_TOKEN の長期トークンでは張れない——これらはモデルリクエストしかできない権限だから
接続先API api.anthropic.com 直結が必須。Amazon Bedrock / Google Cloud's Agent Platform / Microsoft Foundry では使えない。ANTHROPIC_BASE_URL を別ホストに向けている場合も不可(v2.1.196 以降)
環境変数 DISABLE_TELEMETRY / DO_NOT_TRACK / CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC / DISABLE_GROWTHBOOKいずれも機能フラグ評価を止めるため、設定されていると使えない
ワークスペース信頼 プロジェクトディレクトリで1回 claude を実行して信頼ダイアログを通しておく。ホームディレクトリでは信頼が保存されないので、必ずプロジェクト側から始める

⚠️ 4つ目の環境変数の条件は見落としやすい。プライバシー目的で DO_NOT_TRACK を入れている人は少なくないが、それが理由で「アカウントで有効になっていません」と言われる。原因が自分の設定にあると気づきにくい典型例で、claude doctor を実行するとどの判定に落ちたかが分かる

2. 外から動かす手段は4つある——どれが「自分のPC」か

Claude Code には「ターミナルの前にいないときに働かせる」手段が複数あり、どれが手元で動き、どれがクラウドで動くのかが最初の分岐点になる。公式のプラットフォーム比較表を、その軸で読み直すとこうなる。

手段 きっかけ Claudeが動く場所 向いている用途
Remote Control 動いているセッションに接続する 手元のPC(CLI / VS Code) 進行中の作業の舵取り・承認
Dispatch スマホからタスクを送る 手元のPC(デスクトップアプリ) 留守中の丸投げ
Channels Telegram・Discord等からのイベント 手元のPC(CLI) CI失敗などの外部イベントへの反応
Claude Code on the web claude.ai/code でタスク投入 Anthropicのクラウド 手元に環境が無い作業・並列実行

上の3つは「自分のPCが動く」。だからローカルにしかない資産——クローンしていないリポジトリ、社内ネットワーク越しのDB、インストール済みのツールチェーン、デプロイ用の鍵——に手が届く。クラウドセッションには原理的にできないことがここに入る。

クラウドを選べない場合がある

見落とされがちだが、リポジトリのホスティング先が選択肢を削る。公式の制限事項にこうある——リポジトリのクローンとプルリクエスト作成にはGitHub が必要で、GitLab・Bitbucket など GitHub 以外のリポジトリはローカルバンドルとして送ることはできるが、結果をリモートへ push して戻せない

自前のGitサーバや社内GitLabで運用しているなら、「外から動かす」の実質的な選択肢は Remote Control か Dispatch の2つになる。これは好みの問題ではなく、構成が決めてしまう部分だ。

3. 始め方——入口は3つ、使い分けの基準

CLI には3つの起動方法があり、「1つのセッションを持ち出したいのか、複数を受け付けたいのか」で選ぶ。

① いま話している会話をそのまま持ち出す

すでに Claude Code のセッション中なら、これだけでいい。

/remote-control

公式の記述は「現在の会話履歴を引き継いだ Remote Control セッションを開始する」/rc と省略でき、引数を渡すとセッション名になる(/remote-control 記事の校正)。「作業の途中で出かけることになった」に対する最短の答えがこれだ。VS Code 拡張でも同じコマンドが使える。

② 最初からリモート有効で始める

claude --remote-control "プロジェクト名"

通常の対話セッションにリモート接続が付いた状態で立ち上がる。--rc と省略可。ターミナルでも打てるし、スマホからも打てる。

③ サーバーモード——複数セッションを受け付ける

claude remote-control

プロセスがサーバーとして常駐し、リモートからの接続を待つ。スペースキーを押すとQRコードが表示されるので、スマホのカメラで読めばそのまま繋がる。

フラグ 効果
--name "..." claude.ai のセッション一覧に出る名前を決める
--spawn worktree セッションごとに専用の git worktree を切る(要gitリポジトリ)。既定の same-dir は全セッションが同じ作業ディレクトリを共有するので、同じファイルを編集すると衝突する。実行中に w キーで切り替え可能
--spawn session 単一セッションのみを受け付け、追加の接続を拒否する
--capacity N 同時セッション数の上限(既定 32
--continue / --session-id 停止したサーバーのセッションを呼び戻す(v2.1.200 以降)

スマホから開く

接続方法は3通りある。セッションURLをブラウザで開く/QRを読む/Claudeアプリの一覧から選ぶ。モバイルアプリではナビゲーションの「Code」がセッション一覧で、Remote Control のセッションはコンピュータのアイコンと緑のドットで表示される。

アプリが未インストールなら、Claude Code の中で /mobile を実行するとダウンロード用のQRコードが出るiOS / Android)。

💡 QRコードは認証ではなく近道だ。読まなくても、アプリの一覧からセッション名で選べば同じ場所に着く。アクセス権を決めているのは「URLを知っているか」ではなく「誰のアカウントか」——この点は第7章で扱う。

毎回つなぐのが面倒なら

自動接続は既定でオフで、明示的に起動したときだけ有効になる。常時つなぐなら /configEnable Remote Control for all sessions、または設定ファイルの remoteControlAtStartuptrue にする。

ここにはよくできた非対称性がある。プロジェクト設定(.claude/settings.json)に書いた false は尊重されるが、true は無視される。チェックインしたファイルで、そのリポジトリを開いた全員のRemote Controlを勝手に有効にはできない、という設計だ。

4. スマホ側でできること・できないこと

接続した端末には、ターミナルで起きていることがそのまま流れてくる。ただしスラッシュコマンドには線が引かれている。

✅ スマホ・Webから使える

/compact /clear /context /usage /recap /exit
引数を渡す形なら/model sonnet /effort high /rename /fast /color
/mcp(v2.1.166〜)、/config key=value(v2.1.181〜)、/autocompact 500k(v2.1.221〜)

❌ ローカル専用

/plugin /resume など、ターミナルのUIでしか成立しないもの。引数を付けても動かない。
会話を切り替える /resume がローカル専用なのは実務上効いてくる——別の会話に移りたくなったらPCの前に戻る必要がある

ターミナルでピッカーやスライダーが出るコマンドは、スマホでは引数を渡す形に置き換わる/model を単体で打つのではなく /model sonnet と書く、ということだ。

権限プロンプトに答えられる——これが本命

実用上いちばん効くのは、権限プロンプトと質問がスマホに転送されることだ。公式は「あなたが答えるまで開いたままにする」と明記している。長いタスクが承認待ちで止まったまま帰宅を待つ、という時間が消える。

ただし他の種類のダイアログには期限がある。権限プロンプトと質問以外——たとえば安全上の拒否のあとに出るモデル選択——は、既定5分待って閉じ、「何もしない」既定値で続行するdialogExpiry で調整・無効化できる(v2.1.224 以降)。

モデルと effort の変更が、どこまで残るか

操作 効果の範囲
端末のモデル選択UIで選ぶ そのセッション限り
/model <名前> を送る 新規セッションの既定も変わる(ターミナルで打つのと同じ)
effort を選ぶ そのセッション限り。CLAUDE_CODE_EFFORT_LEVEL で固定していると変更が拒否される(v2.1.234 以降)

同じ「モデルを変える」でも、UIから選ぶかコマンドを送るかで永続性が違う。移動中に軽いモデルへ落として、そのまま既定が変わっていた、という事故はここから起きる。

5. 呼び戻される仕組み——プッシュ通知

Remote Control が有効な間、Claude はプッシュ通知を送ってくる。公式の説明では「長時間のタスクが終わったとき、あるいは続行のために判断が必要なとき」に送られる。プロンプトに notify me when the tests finish のように書いて明示的に要求することもできる。

設定は /config の2つのトグルだけで、イベントごとの細かい設定は無い

Push when Claude decides

Claude の判断による能動的な通知。長時間タスクの完了がこれ。

Push when actions required

権限プロンプトと質問。止まっていることに気づくための通知。

気の利いた挙動として、あなたがターミナルを触っている間はプッシュを送らない。さらに CLAUDE_CLIENT_PRESENCE_FILE にマーカーファイルのパスを設定すると(v2.1.181 以降)、そのファイルが存在する間はスキップされる——画面ロック解除で作成、ロックで削除するようにしておけば、「別ウィンドウで作業中だがPCの前にはいる」時間帯も黙らせられる。

📱 通知が来ないときの定番/configNo mobile registered と出ていたら、スマホでClaudeアプリを開くとプッシュトークンが更新される。iOS は集中モードと通知要約、Android はバッテリー最適化が配信を遅らせるので、そこも確認する。

6. 仕組み——なぜポートを開けずに繋がるのか

自宅PCを外から操作する話で最初に警戒すべきは、受信ポートを開けることだ。SSHを外に晒せば総当たりの標的になり、VNCも同じ。Remote Control はそこを構造的に避けている。

公式の記述は明快だ——「ローカルのClaude Codeセッションは外向きのHTTPSリクエストしか行わず、マシン上で受信ポートを開くことは決してない」

① 登録

ローカルの claude が Anthropic API に自分を登録する

② ポーリング

仕事が来ていないかをこちらから取りに行く

③ 中継

スマホが繋ぐと、サーバが両者の間でメッセージを流す

すべての通信は Anthropic API を経由し、通常の Claude Code セッションと同じTLSで保護される。接続には複数の短命クレデンシャルが使われ、それぞれ単一の目的にスコープされ、独立に失効する

従来手段との比較

方式 受信ポート ルータ設定 手元で実行
SSHを直接開放 要る ポート転送
VNC / リモートデスクトップ 要る 要る
Remote Control 不要 不要
クラウドセッション 不要 不要

NAT越えの副産物として、ルータ設定も固定IPもDDNSも要らない。実家のPCでも、社内LANのマシンでも、外向き通信さえ通れば繋がる。

7. セキュリティ——門は1枚、それがアカウント

受信ポートが無いことでネットワーク側の攻撃面はほぼ消える。ではリスクはどこへ行ったのか。アカウントに移った。

QRは認証ではない

ここを誤解している解説を見かけるが、QRコードは認証の一段ではない。接続方法は「URLを開く/QRを読む/アプリの一覧から選ぶ」の3通りで、一覧から選べる時点で、QRは短縮でしかない。

では何が門を守っているのか。公式は自動接続の項でこう書いている——「自動接続はあなた自身のclaude.aiアカウントでサインインするので、そのセッションはあなたのアカウントのClaudeアプリにしか現れず、他の誰にもアクセス権を与えない」セッションはアカウントに紐付いているのであって、URLを知っているかどうかで決まるのではない。

そして門が1枚であることは、公式自身の言葉からも読み取れる。Trusted Devices の説明に「Remote Controlへのアクセスを既知の端末と最近の認証に結びつける、単にサインイン済みのアカウントだけではなくとある。裏返せば、既定の門はまさに「サインイン済みのアカウント」1枚だ。

1枚でも弱くない理由と、その条件

入口は常設ではない

セッションが動いている間しか存在しない。プロセスを止めれば消える。24時間狙われ続ける口ではない

長期トークンでは張れない

CI用の CLAUDE_CODE_OAUTH_TOKEN が漏れても遠隔操作には転用できない。権限が切り分けられている

1枚の強度が全体の強度

パスワードだけでログインできる状態なら、防御はパスワード1個ぶん。ここが弱いと他が効かない

結論として、やるべきことは1つに集約される——claude.ai にパスキーを設定すること。端末に鍵が紐付き、フィッシング耐性があり、生体情報自体はAnthropicに渡らない(保存されるのは公開鍵と、表示名・プラットフォーム・登録日時といった基本的なメタデータだけ)。Team・Enterprise なら Trusted Devices で登録端末+18時間以内のサインインを組織全体に強制できる。

会話ログはサーバに保存される

正直に書いておくべき点がある。接続中は、セッションのトランスクリプト——あなたのメッセージ、Claudeの応答、ツールの実行内容——がAnthropicのサーバに保存される。デバイス間の同期と、回線断からの復帰のためだ。エンドツーエンド暗号化ではない。

アカウント 保持期間
Free / Pro / Max(モデル改善への利用ON 5年
Free / Pro / Max(利用OFF) 30日
Team / Enterprise / API 30日

設定は claude.ai のプライバシー設定でいつでも変更できる。ゼロデータ保持(ZDR)の組織は、そもそもRemote Controlを有効化できない。

公平のために添えておくと、通常のClaude Codeも全てのプロンプトと出力をAPIへ送っているし、会話ログはすでにローカルの ~/.claude/projects/ に平文で置かれている(既定30日・cleanupPeriodDays で変更可)。Remote Control で新たに増えるのは「同期のための実体がサーバ側にも残る」という点だ。

スマホを紛失したら

最も速くて確実なのは、PC側で claude のプロセスを止めること。入口そのものが消える。そのうえでパスワード変更とサインアウトを行う。Trusted Devices を使っている場合は アカウント設定の Trusted devices からその端末を削除すれば資格情報が即座に失効する

スマホ側に「PCへの鍵」が常駐しているわけではない。アプリのログイン状態が全てなので、画面ロックとパスキーがそのまま防御になる。

実務で本当に効くリスク

⚠️ 技術ではなく運用側に残るリスクが2つある。

① 小さい画面では、承認するコマンドの全文が読めない。権限プロンプトをスマホで返せるのが最大の利点だが、移動中に流し読みで「許可」を押す事故が起きる。本番環境の鍵を持つセッションでは特に。

② 権限を飛ばすモードと組み合わせると、門番が消える。権限プロンプトを省略する運用と遠隔操作を重ねると、承認ゲートが1つも無い状態を外から触ることになる。片方だけにするのが安全側だ。

なお --sandbox による隔離は選択肢としてあるが、ネイティブWindowsではサンドボックスがサポートされていない(WSL 2 なら対応)。構成によっては、この保険が使えないことを前提に置く必要がある。

完全に禁止したい場合は disableRemoteControl 設定で無効化できる。管理者が管理設定から端末単位で禁止することも可能だ。

8. 繋がらない・切れるときの原因切り分け

エラーメッセージが原因をかなり具体的に名指ししてくれる。代表的なものを整理する。

症状 原因と対処
claude.ai のサブスクが必要と言われる APIキー認証になっている。ANTHROPIC_API_KEY を解除してから claude auth login
フルスコープのトークンが必要と言われる setup-token 系の長期トークンで認証している。これはモデルリクエスト専用なので、claude auth login でやり直す
アカウントで有効になっていない プラン変更後のキャッシュが古い場合が多い。claude auth logoutloginclaude doctor でどの判定に落ちたかが分かる
機能フラグ評価が必要と言われる DISABLE_TELEMETRY 系の4変数のいずれかが設定されている。メッセージが変数名を名指しするので、シェル環境と settings.jsonenv ブロックの両方を確認
Anthropic API 経由でないと言われる Bedrock / Foundry などのプロバイダ設定か、ANTHROPIC_BASE_URL が別ホストを指している

切れたときに、再接続していいのか

ここは公式が明確に「理由を読んでから判断しろ」と書いている箇所だ。接続が失敗すると理由が表示されるが、次の3つの場合は「/remote-control を実行しろ」という通常の案内が意図的に省かれる

別の端末が奪った

取り返したい場合だけ再実行する

他の端末で終了・アーカイブした

再実行するとアーカイブ済みでも開き直す

サーバがセッションを見つけられない

他の端末から削除された可能性がある

ネットワークが落ちたとき、モードで挙動が違う

ここは知らないと戸惑う。マシンは起きているのにネットに届かない状態が続いた場合——

  • サーバーモード約10分で諦めてプロセスが終了するclaude remote-control を再実行して新しいセッションを始める
  • 対話セッションそのままローカルで作業を続けられる。Claude Code は障害が続く限りリトライし、ネットワークが戻れば自分で再接続する

また Ctrl+C でサーバーを止めた場合、セッションは約4時間は呼び戻せる(claude remote-control / --continue / --session-id)。それを過ぎたら新規に始めることになる。

💡 リモートのマシンで使うなら tmuxscreen の中で起動する。公式も明記しているが、SSHを切るとプロセスが死んでセッションがオフラインになる。「サーバ上のClaude Codeをスマホから」という構成では必須の作法だ。

9. Dispatch との使い分け

どちらも「手元のPCが動く」点は同じで、混同されやすい。分かれ目は、出かける前に準備が要るかどうかだ。

観点 Remote Control Dispatch
事前準備 要る(PC側で起動しておく) 不要(ペアリング済みなら思いついた時に)
始まる場所 PC側。スマホは後から合流 スマホ側
PC側の入口 CLI / VS Code 拡張 デスクトップアプリ
会話の構造 1本の会話が全端末で同期 常駐の会話に依頼し、別セッションが生える
プラン Pro / Max / Team / Enterprise Pro / Max のみ
向いている場面 進行中の作業の舵取り・承認 留守中の丸投げ

片方を選ぶものではない。外から投げるときは Dispatch、席を立つ前に繋いでおくときは Remote Control、という併用が自然だ。Dispatch の詳細と安全な線引きは専用記事にまとめてある。

まとめ

  • Remote Control は「実行場所を移さず、操作場所だけを移す」機能。ローカルのファイル・MCP・ツールがそのまま使える
  • 外向きHTTPSのみで、受信ポートを開かない。ルータ設定も固定IPも不要で、SSHを外に晒すより攻撃面が小さい
  • QRコードは認証ではなく近道。アクセス権は「URLを知っているか」ではなく「誰のアカウントか」で決まる
  • 門は1枚=claude.aiアカウント。だからパスキーの設定が最優先。Team・Enterprise なら Trusted Devices で端末と生体を縛れる
  • 接続中はトランスクリプトがサーバに保存される。保持期間はモデル改善への利用設定で5年と30日に分かれる
  • ローカルのプロセスが生きている間だけ有効。リモートのマシンで使うなら tmux / screen の中で起動する
  • 残る実務リスクは技術ではなく運用——小さい画面で承認を押すこと。本番の鍵を持つセッションでは特に意識する

FAQ

Q1. デスクトップアプリからも使えますか?

公式が起動方法として挙げているのはCLI と VS Code 拡張で、デスクトップアプリからの開始手順は記載されていない。一方で「設定 > Claude Code > Enable remote control by default」というトグルがデスクトップアプリにもあるという記述と、Claude Desktop で Remote Control が有効だった会話を再開すると既存セッションに再接続するという記述がある。まず設定画面を確認し、無ければCLIを使うのが確実だ。

Q2. デスクトップアプリで進めていた会話を、CLIから引き継げますか?

できる可能性が高い。VS Code拡張・JetBrainsプラグイン・デスクトップアプリはいずれも ~/.claude/ に書き込むと公式に明記されており、会話は ~/.claude/projects/ に保存される。同じディレクトリで claude --resume を実行して該当の会話を選び、/remote-control を実行する、という流れになる。

Q3. Node.js が古いのですが、CLIを入れられますか?

入れられる。ネイティブインストーラは Node.js を使わない——Windows なら PowerShell で irm https://claude.ai/install.ps1 | iex。npm版は Node.js 22以降を要求するが、こちらも実体はネイティブバイナリで、古いNodeでは EBADENGINE 警告が出るだけでインストール自体は完了する。

Q4. PCがスリープしたらどうなりますか?

セッションはオフラインになるが、マシンが復帰すると Claude Code が自動で再接続する。再接続までの間のサブエージェントやワークフローの状態更新はキューされ、復旧後に配送される。ただしプロセス自体を終了した場合(ターミナルを閉じる、VS Codeを終了する)は、数秒でオフライン表示になり、呼び戻す操作が必要になる。

Q5. 同時に何セッション繋げますか?

対話セッションは1プロセスにつき1リモートセッション。複数を1プロセスで捌きたいならサーバーモード(claude remote-control)を使う。既定の上限は32セッションで、--capacity で変更できる。

Q6. 複数セッションが同じファイルを壊しませんか?

既定の --spawn same-dir では全セッションが同じ作業ディレクトリを共有するので、同じファイルを編集すれば衝突する--spawn worktree を指定すると、オンデマンドのセッションごとに専用の git worktree が割り当てられる(gitリポジトリが必要)。実行中に w キーで切り替えることもできる。

Q7. スマホから /resume で別の会話に移れますか?

できない。/resumeローカル専用コマンドで、引数を付けても動かない。なおターミナル側で /resume して会話を切り替えた場合、接続中の端末には切り替え先の履歴やタイトルは届かないが、新しいメッセージは双方向にターミナルで開いている会話へ流れる

Q8. Claude Code on the web との違いは?

実行場所が違う。どちらも claude.ai/code の画面を使うが、Remote Control はあなたのマシンで実行されるのでローカルのMCPサーバ・ツール・プロジェクト設定が生きる。Claude Code on the web はクラウドで実行されるので、手元に環境が無くても動かせる代わりに、ローカル資産には触れない。

Q9. 会社のプロキシやLLMゲートウェイ経由でも使えますか?

使えない。api.anthropic.com 以外のホストを ANTHROPIC_BASE_URL に指定していると利用できない(v2.1.196 以降)。エンタープライズの Claude apps gateway 経由のサインインも対象外。ゼロデータ保持などのコンプライアンス設定がある組織も有効化できない。

関連記事