Claude Code のローカルセッションをスマホ/Web から操作する — Remote Control の仕組みと Trusted Devices によるデバイス認証

Claude Code の Remote Control は、自分のマシンで動いているセッションを claude.ai/code や Claude モバイルアプリから操作する機能です(Pro/Max/Team/Enterprise、API キーは非対応)。Claude はローカルで動き続け、ファイルシステム・MCP・ツールはそのまま。通信は外向き HTTPS のみで受信ポートを開かず、短命な資格情報で繋ぎます。これに新しく Trusted Devices(Team/Enterprise・ベータ)が加わり、Remote Control の閲覧・操作に『登録済みデバイス+18時間以内のサインイン』を要求できるようになりました。本記事では Remote Control の起動・接続・セキュリティモデルと、Trusted Devices の仕組み(Face ID/パスキーでのステップアップ、生体情報は端末外に出ない)を実装目線で整理します。

Claude Code の Remote Control は、自分のマシンで動いているセッションを、スマホや別のブラウザから操作する機能です。机で始めた作業を、ソファのスマホや別 PC のブラウザから続けられる。ポイントは Claude はローカルで動き続けること——クラウドに処理が移るわけではなく、ファイルシステムも MCP もツールもそのまま使えます。ここに新しく Trusted Devices(Team/Enterprise・ベータ)が加わり、Remote Control の閲覧・操作にデバイス認証を要求できるようになりました。本記事では、Remote Control の仕組みとセキュリティモデル、そして Trusted Devices が何を・どう守るかを整理します。

到達点

  • Remote Control が **「クラウド実行」ではなく「ローカルセッションの窓口」**である点を理解する
  • 起動の 3 系統(remote-control / --remote-control / /remote-control)を押さえる
  • 外向き HTTPS のみ・受信ポートを開かないセキュリティモデルを掴む
  • Trusted Devices の要件(登録済みデバイス + 18 時間以内のサインイン)を理解する
  • 生体認証が端末内で完結し、Anthropic に生体情報が渡らない設計を確認する

Remote Control とは(Web版との違い)

まず混同しやすい点を整理します。Claude Code on the web は Anthropic のクラウド上でセッションが動きます。一方 Remote Control は、あなたのマシンで動いているセッションに、claude.ai/code やモバイルアプリが窓口として繋ぐだけです。

Remote ControlClaude Code on the web
実行場所自分のマシンAnthropic のクラウド
ローカル資産ファイルシステム・MCP・ツールがそのまま使える使えない(クラウド環境)
向く場面進行中のローカル作業を別デバイスから続ける手元の準備なしにタスクを起こす

Remote Control では、@ でローカルプロジェクトのパスが補完され、会話は全デバイスで同期します(ターミナル・ブラウザ・スマホから交互に送れる)。ラップトップがスリープしたりネットが切れても、復帰時に自動再接続します。要件は Pro / Max / Team / Enterprise(API キーは非対応)、Claude Code v2.1.51 以降。Team/Enterprise では Owner が管理設定で有効化するまで既定オフです。

起動の 3 系統

用途に応じて 3 通りの起動があります。

# 1. サーバモード:接続を待ち受ける。セッション URL を表示、スペースキーで QR
claude remote-control

# 2. 対話セッション + Remote Control:ローカルでも打てる
claude --remote-control "My Project"    # --rc でも可
# 3. 既存セッションから:今の会話履歴を引き継いで Remote Control 化
/remote-control My Project              # /rc でも可

VS Code 拡張でも /remote-control で繋げます(v2.1.79 以降)。別デバイスからの接続は、セッション URL を開く / QR をスキャンしてアプリで開く / claude.ai/code・アプリのセッション一覧から名前で選ぶ、のいずれか。オンラインのセッションは緑のステータスドット付きの PC アイコンで並びます。

全セッションで自動的に有効にしたいなら、/configEnable Remote Control for all sessionstrue に。1 プロセス = 1 リモートセッションなので、複数同時に回すならサーバモードを使います。

セキュリティモデル:受信ポートを開かない

Remote Control でまず理解すべきなのは、通信の向きです。ローカルの Claude Code セッションは、外向き HTTPS リクエストしか出さず、マシンに受信ポートを一切開きません

  • 起動時に Anthropic API に登録し、work をポーリングする
  • 別デバイスから繋ぐと、サーバが Web/モバイルクライアントとローカルセッションの間をストリーミングでルーティングする
  • 全トラフィックは TLS 経由(通常の Claude Code セッションと同じ transport)
  • 接続は 複数の短命な資格情報を使い、それぞれ単一用途にスコープされ、独立して失効する

つまり「自宅マシンにポートを開けて外から叩く」という古典的なリモート構成とは違い、インバウンドの攻撃面を作らない設計です。ここが Remote Control の安全性の土台になっています。

Trusted Devices — 新しいデバイス認証層

Remote Control は便利ですが、**「サインイン済みアカウントなら誰のどの端末からでも操作できる」**と、盗まれたセッションや共用端末が問題になりえます。そこを塞ぐのが Trusted Devices(Team/Enterprise・ベータ、既定オフ)です。

これは組織全体の設定で、Remote Control セッションの閲覧・操作に、デバイスの検証を要求します。アクセスを「サインイン済みアカウント」ではなく、**「既知のデバイス + 最近の認証」**に紐づけるのが眼目です。

有効時、Remote Control を触るには次の両方が必要になります。

要件内容
登録済みデバイスブラウザ・スマホ・デスクトップアプリごとに個別の資格情報を enroll。enrollment はフルサインインの直後にのみ提示される(裏でこっそり登録されない)
最近のサインインサインインは 18 時間以内であること。毎日サインインし直す代わりに、Face ID / Touch ID / Windows Hello / パスキーで presence を確認してセッションを更新する

生体情報は端末から出ない

セキュリティ機能で気になる「生体情報の扱い」も明確です。生体認証は端末側(OS / ブラウザ)で完結し、パスキーのサインインと同じ仕組みです。Anthropic は指紋・顔データ等を一切受け取らず・保存しません。保存されるのはデバイスの公開鍵と最小限のメタデータ(表示名・プラットフォーム・enrollment 時刻)だけ。

つまり Trusted Devices は「資格情報だけでなく、特定の物理デバイスに紐づいた第 2 要素」を足すもの。生体情報はローカルに留まり、サーバに渡るのは公開鍵という非対称鍵の作法になっています。

この設定は Remote Control だけに効きます。通常の Claude チャット・ターミナルの Claude Code・API 利用は影響を受けません

管理者の有効化と、メンバーの体験

管理者は claude.ai の Claude Code 管理コンソール(claude.ai/admin-settings/claude-code)で Require trusted devices トグルを入れます。適用は有効化後に開始されたセッションが対象で、既存の実行中セッションは遡って保護されません(終了まで従来どおり)。チーム/プロジェクト単位のスコープは不可、組織全体です。

メンバー側の体験はこうです。

  • 各デバイスの初回:enroll を求められる。サインインが古ければ、通常のフロー(SSO 含む)で先にサインインしてから enroll する
  • 日常:登録済みデバイス + 最近のサインインならプロンプトは出ない。18 時間を超えると、次の操作で Face ID 等が 1 回求められる
  • 未登録デバイス:enroll するまで Remote Control の閲覧・操作は不可(通常のチャットは使える)
  • 生体認証がない端末:ハードウェアセキュリティキーを使うか、サインインし直す
  • ターミナル:CLI にサインインした時点でマシンが自動的に資格情報を受け取る(端末側に別途の enrollment 手順はない)

デバイスの管理・失効は、メンバー自身が claude.ai/settings/accountTrusted devices から行えます。紛失・盗難時はここから削除。サインインできないなら、管理者が Sign out everywhere で全セッション・全登録デバイスを失効できます。

運用への落とし込み

  1. 個人利用ならまず Remote Control 単体で十分:Pro/Max で claude remote-control を試す。外向き HTTPS のみなので、自宅ネットワークに穴を開けずに使える。
  2. 通知と組み合わせる:Remote Control 中はモバイルプッシュが使える。/config で「Claude の判断で通知」「操作が必要なとき通知」を有効化すると、長時間タスクの完了や承認待ちをスマホで受けられる。
  3. チーム配布なら Trusted Devices を検討:共用端末や BYOD が絡むなら、登録デバイス + 18 時間サインインの縛りで、Remote Control の乗っ取り面を狭められる。有効化は遡及しないので、切り替えのタイミングをメンバーに周知する。
  4. エラーは切り分けやすい:disableRemoteControl(管理設定で無効)、ANTHROPIC_BASE_URL が別ホスト(v2.1.196 以降は gateway/proxy 経由だと無効)、API キー認証(非対応)など、原因別にメッセージが出る。claude doctor / /status で確認できる。

注意点

  • ローカルプロセスが生きている必要がある:ターミナルや VS Code を閉じて claude プロセスが止まると、セッションは終わります。約 10 分以上ネットに到達できないとタイムアウトして終了。
  • API キー・inference 専用トークンでは使えない:Remote Control は claude.ai の OAuth が前提。setup-token 由来の長命トークンや CLAUDE_CODE_OAUTH_TOKEN は inference 専用で不可。
  • Bedrock / Vertex / Foundry では不可:api.anthropic.com に直接繋いでいる必要があり、v2.1.196 以降は ANTHROPIC_BASE_URL が別ホストを指すと無効化されます。
  • Trusted Devices はまだベータ・Team/Enterprise 限定:個人 Pro/Max では対象外です。仕様は今後変わり得ます。

まとめ

Remote Control は、**「クラウドに移す」のではなく「ローカルセッションの窓口を別デバイスに開く」**機能です。外向き HTTPS のみ・受信ポートなし・短命な資格情報という設計で、自宅マシンに攻撃面を作らずに、スマホや Web から進行中の作業を操作できます。そこに Trusted Devices が加わり、登録済みデバイス + 18 時間以内のサインインを要求することで、「アカウントさえ通れば誰でも」という状態を塞げるようになりました。生体情報は端末に留まり、サーバには公開鍵しか渡りません。

勘所は 3 つ — 個人はまず Remote Control 単体で(プッシュ通知と組み合わせると強い)、チーム配布では Trusted Devices で乗っ取り面を狭める、有効化は遡及しないので切り替えを周知する。「ターミナルに縛られずに Claude Code を回す」ための現実的な選択肢が、また一段使いやすくなっています。