Claude Code Remote Controlで長時間タスクの権限ブロックを解消する — セットアップから自律開発ワークフローまで
Remote Controlとは何か — 解決する課題と仕組み
長時間タスクの「権限ブロック問題」
Claude Codeで大規模リファクタリングを走らせて外出。30分後にスマホを見ると「ファイル削除の権限を承認してください」で止まっている——この体験、心当たりがあるはずだ。
2026年2月にリリースされたRemote Control機能は、まさにこの問題を解決する。ローカルで動いているClaude Codeセッションを、スマホやタブレットのブラウザから操作できるようになる機能だ。現在はresearch previewとして提供されている。
アーキテクチャ概要 — アウトバウンドHTTPSだけで動く理由
Remote Controlの設計で注目すべきは、インバウンドポートを一切開かない点だ。ローカルのClaude CodeプロセスがAnthropic APIに対してアウトバウンドHTTPSリクエストを送り、ポーリングで指示を受け取る。ファイアウォールやNAT越えの設定は不要。
ローカルに留まるものとブリッジを通過するものの境界は明確だ。
- ローカルに留まる: ファイルシステム、MCPサーバー、認証情報、プロジェクト設定
- 暗号化ブリッジを通過する: チャットメッセージとツール実行結果のテキストのみ
つまり、リモートのUIはローカルセッションへの「窓」にすぎない。コードそのものがクラウドに送られることはない。
利用にはMaxプランが必要だ(Proプランも対応済みとの記載があるが、公式ドキュメントのRequirementsセクションではまだ「coming soon」となっている)。Team・Enterpriseプラン、APIキーでの利用は現時点で未対応。
セットアップ手順(5分で完了)
前提条件の確認
まずClaude Codeのバージョンを確認する。
claude --version
claude update
未ログインの場合は claude を起動して /login でclaude.aiにサインインしておく。また、対象のプロジェクトディレクトリで一度 claude を実行し、ワークスペースの信頼ダイアログを承認しておく必要がある。
新規セッションでの起動
# Remote Controlモードで新規セッション起動
claude remote-control
# デバッグ情報付きで起動
claude remote-control --verbose
# サンドボックス有効化(ファイルシステム・ネットワーク分離)
claude remote-control --sandbox
実行するとセッションURLが表示される。スペースキーを押すとQRコードも表示されるので、スマホでスキャンするだけで接続完了だ。
既存セッション中からの切り替え
作業中のセッションからは /remote-control(短縮形 /rc)で即座に切り替えられる。会話履歴もそのまま引き継がれる。
/remote-control
正直、この手軽さには驚いた。事前に /rename でセッションに名前を付けておくと、モバイル側のセッション一覧で見つけやすくなる。
すべてのセッションで自動的にRemote Controlを有効にしたい場合は、/config から「Enable Remote Control for all sessions」を true に設定する。
実践ワークフロー3選
1. 外出先からの権限承認フロー
最も基本的なユースケースだ。
- ターミナルで大規模タスクを投入し、Remote Controlを有効化
- 外出
- スマホのClaude app(iOS/Android)またはブラウザで claude.ai/code を開く
- セッション一覧でオンラインのセッション(緑のステータスドット付き)を選択
- 権限リクエストが表示されたら内容を確認して承認
- エージェントが作業を再開
会話は全デバイスで同期されるので、ターミナル・ブラウザ・スマホどこからでもメッセージを送れる。
2. launchd常駐デーモンとの組み合わせ
24時間稼働のデーモンでClaude Codeを回している場合、Remote Controlを組み合わせると監視・介入が格段に楽になる。以下はラッパースクリプトの例だ。
#!/bin/bash
# rc-daemon.sh — Remote Control付きでClaude Codeを起動し、URLをSlackに通知
cd /path/to/your/project
# Remote Control起動(出力からURLを抽出してSlack通知)
claude remote-control 2>&1 | while IFS= read -r line; do
echo "$line"
if echo "$line" | grep -q "https://claude.ai/code"; then
URL=$(echo "$line" | grep -oE 'https://claude\.ai/code/[^ ]+')
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-Type: application/json' \
-d "{\"text\": \"Remote Control session started: $URL\"}"
fi
done
注意点として、Remote Controlはローカルプロセスとして動作するため、ターミナル(またはプロセス)が終了するとセッションも終了する。launchdのKeepAliveでプロセスを維持する構成が前提になる。
3. 長時間リファクタリングの監視・介入パターン
スマホUIからできることは多い。
- 途中経過の確認: エージェントの作業ログをリアルタイムで閲覧
- 方針修正: メッセージを送信して指示を変更
- 権限の承認/拒否: ファイル編集やコマンド実行の許可を個別に判断
ラップトップがスリープしたりネットワークが切れても、復帰後に自動再接続する。ただし、ネットワーク断が約10分を超えるとセッションがタイムアウトする点は覚えておきたい。
Slack通知との併用パターンも効果的だ。権限リクエスト発生時にSlack通知を飛ばし、通知を見たらRemote ControlのURLを開いて承認する——この流れなら見逃しがほぼなくなる。
セキュリティモデルの技術的詳細
TLS暗号化と短命クレデンシャルの仕組み
Remote Controlの通信は、通常のClaude Codeセッションと同じTLSで保護される。加えて、接続には複数の短命クレデンシャルが使用される。各クレデンシャルは単一目的のスコープに限定され、独立して失効する設計だ。
万が一1つのクレデンシャルが漏洩しても、影響範囲が限定されるよう設計されている。
--dangerously-skip-permissions との使い分け
自律開発において、権限ブロック問題の解決策は大きく2つある。
| アプローチ | メリット | リスク |
|---|---|---|
--dangerously-skip-permissions | 完全自動化、介入不要 | 全権限を無条件で許可。意図しない破壊的操作のリスク |
| Remote Control | 人間が都度判断できる | 承認が遅れると待機時間が発生 |
Remote Controlは「AIエージェントに長時間タスクを任せつつ、必要な判断だけ人間がリモートで下す」という中間解だ。セキュリティと生産性のバランスを取る現実的な選択肢と言える。
企業プロキシやVPN環境では、アウトバウンドHTTPSがブロックされないか事前に確認しておくこと。
/teleportとの違いを正しく理解する
Remote Controlと /teleport は方向が逆の機能であり、競合しない。
| 項目 | Remote Control | /teleport |
|---|---|---|
| 方向 | ローカル → リモート表示 | Web → ローカル転送 |
| 用途 | ローカルセッションをスマホ等で操作 | Web上のセッションをCLIに引き継ぐ |
| コマンド | claude remote-control / /rc | claude --teleport / /teleport |
| 前提条件 | Max(またはPro)プラン | 同一リポジトリ、クリーンなgit状態 |
よくある誤解として「Remote Controlはclaude.aiのWeb版と同じ」というものがあるが、これは明確に異なる。Claude Code on the webはAnthropicのクラウドインフラ上で実行される。Remote Controlはあくまでローカルマシンで実行され、UIだけがリモートに表示される。
トラブルシューティング
接続できない・URLが開けない場合
- バージョン確認が最優先。初期バージョンにはstaleセッションの問題があったが、後続アップデートで修正済み。
claude --version
claude update
プラン確認: MaxプランまたはProプランであることを確認。Team・Enterpriseプランでは利用不可。
企業プロキシ/VPN: アウトバウンドHTTPS(ポート443)がブロックされていないか確認。Remote Controlはインバウンドポートは不要だが、Anthropic APIへのアウトバウンド接続は必須。
--verboseフラグでデバッグ情報を確認する。
claude remote-control --verbose
セッションが切れる・staleになる場合
- ネットワーク断が約10分を超えるとセッションがタイムアウトする。復帰後は
claude remote-controlで再起動が必要 - ターミナルやプロセスを閉じるとセッション自体が終了する
- スマホブラウザはSafari・Chrome推奨。Claude公式アプリ(iOS/Android)が最も安定する
Remote Controlはまだresearch preview段階だが、長時間タスクの権限ブロック問題を抱えるClaude Codeユーザーにとって、今すぐ試す価値のある機能だ。--dangerously-skip-permissions で全権限を渡すリスクを取る必要がなくなるだけでも、導入する意味は大きい。
