この記事について
自宅の常時起動PCで個人開発プロジェクトを「バイブコーディング」中、外出先からふと「あの実装どうなったっけ」「ちょっとこれだけ直しておいてほしい」と思う瞬間はないでしょうか。この記事では、ポート開放やVPN構築なしで、スマホやブラウザから自宅のClaude Codeセッションに安全に参加できる公式機能「Remote Control」について、仕組みの理解から実際のセットアップ手順、運用のコツまでをまとめます。
結論を先に一言で言うと、 「自宅PCは外向きの通信だけ、スマホ側はAnthropicのリレー経由で安全に繋がる。ポート開放は一切不要」 というのがRemote Controlの核心です。
対象読者: 自宅や個人環境でClaude Codeを常時起動させて開発しており、外出先からの指示出し・状態確認をしたい中級エンジニア。
前提環境:
- Claude Code CLI(Remote Control関連の記述はv2.1.2xx系のドキュメントに基づく。手元のバージョンで挙動が異なる場合は
claude doctorで確認してください) - Claude Pro / Max / Team / Enterpriseのいずれかのサブスクリプションプラン(APIキー認証、Amazon Bedrock、Google Cloud、Microsoft Foundry経由では利用不可)
-
claude.aiアカウントでのログイン(/login) - スマホ側: Claude公式モバイルアプリ(iOS/Android)、またはブラウザで
claude.ai/code
📱 TL;DR(Androidから使う場合)
- PC側:プロジェクトのディレクトリで
claude --remote-control "プロジェクト名"(または既存セッション中に/remote-control)を実行し、表示されたQRコードを準備する- スマホ側:Google PlayでClaude公式アプリをインストールし、同じ
claude.aiアカウントでログイン → QRコードを読み取るだけで接続完了- 通知:
/configで「Push when Claude decides」「Push when actions required」をON。Androidはバッテリー最適化の対象からClaudeアプリを除外しておくと通知が来ないトラブルを防げるポート開放・VPN構築は不要。詳しい仕組みや運用のコツは本文へ↓
第1章: なぜSSHでもVPNでもなく「Remote Control」なのか
【起】⏱ 10秒まとめ
自宅PCで動いているClaude Codeセッションに、ポート開放やVPN構築をせずに、スマホやブラウザから「続きから」参加できる公式機能がRemote Controlです。自宅PC側は外向き(アウトバウンド)のHTTPS通信しか行わず、インバウンドのポートは一切開きません。
【承】🌩 課題:こんなこと困るよね
個人開発を「バイブコーディング」で進めていると、出先で急に気になったり、ちょっとした指示だけ追加したくなる瞬間があります。かといって、これを実現しようとすると、いくつかの壁にぶつかります。
- 自宅PCにSSHで繋ごうとすると、ルーターのポート開放か、固定IP/DDNSの設定が必要になり、自宅ネットワークをインターネットに晒すことになる。
- 「進捗はチャットで送ってもらう」くらいの一方通行だと、こちらから追加の指示を出せない。
- ターミナルをスマホのSSHクライアントで操作するのは、画面サイズ的にも操作性的にもかなり厳しい。
自宅のルーターでポート開放をする方法は、セキュリティ上のリスクが小さくありません。SSHのポートを開けたままにしておくと、インターネット上からの総当たり攻撃の対象になり得ます。個人開発だからと油断せず、できる限りこの手の「インバウンドの穴」は開けない方針で考えるべきです。
【転】💡 解決策:採用理由と他の選択肢
外出先からの関与手段として、3つの選択肢を比較しました。
-
選択肢A: ポート開放 + SSH + tmux
→ 見送り。自宅ネットワークの露出、鍵管理の手間、スマホでのターミナル操作の使いづらさ、という3重のコストがある。 -
選択肢B: VPN(Tailscaleなど)を張った上でSSH
→ 選択肢Aよりはネットワーク的に安全だが、それでも構築・維持の手間があり、スマホ側にもVPNクライアントを常駐させる必要がある。ターミナル操作のしづらさ自体は解決しない。 -
採用案: Claude Code純正の「Remote Control」
→ 自宅PCは外向きのHTTPS通信のみ行い、Anthropicのサーバーを介してスマホ・ブラウザと接続する。ポート開放は不要で、しかもチャットのようなUIで指示・確認ができる。
筆者の考え: 「リモートアクセスさせたい」と考えたとき、つい反射的に「SSHかVPNか」という二択で考えがちですが、そもそも今回困っているのは「ネットワーク的に自宅に到達する手段」ではなく、「Claude Codeという特定のプロセスと会話を続ける手段」です。目的を一段階具体的に絞り込むと、専用の公式機能が既に用意されていることに気づけます。
【結】💻 具体例・サンプルコード
Remote Controlの通信は、自宅PC側が常に「外に向かって」通信し、Anthropic側がスマホ・ブラウザとの橋渡しをする形になります。仕組みのイメージ図は別紙(第1章の図)を参照してください。
[自宅PC(Claude Code)]
│ 外向きHTTPSのみ(登録・ポーリング)
▼
[Anthropic API / リレー]
▲ 外向きHTTPSのみ(claude.ai/code, モバイルアプリ)
│
[スマホ / 別PCのブラウザ]
自宅PC・スマホのどちらも「外に向かって繋ぎに行く」だけで、どちらもインバウンドの穴を開けていない点がポイントです。通信は複数の短命クレデンシャル(有効期限が短く、用途ごとに分かれたトークン)でTLS保護されます。
【補足】🔰 アウトバウンドだけで繋がる、とは?
これは「宅配便の不在票」の仕組みに似ています。自宅に荷物を届けに来た配達員は、不在なら荷物を一旦営業所に持ち帰り、こちらから営業所に向かえば荷物を受け取れます。自宅が「いつでも荷物を受け取れる窓口」を作らなくても、外部の中継拠点(営業所=Anthropicのサーバー)が仲介してくれるので、自宅側は「取りに行く(ポーリングする)」だけで済むのです。
第2章: 実際にセットアップする(手順書)
【起】⏱ 10秒まとめ
要件さえ満たしていればclaude remote-controlと打つだけで使い始められますが、3つある起動モードのどれを選ぶかと、事前チェックを押さえておくとハマりません。
【承】🌩 課題:こんなこと困るよね
いきなりコマンドを叩いても、以下のような理由でつまずきがちです。
- サインインしていない、あるいはAPIキー認証(
ANTHROPIC_API_KEY)を使っていて、claude.aiアカウントでの認証が求められていることに気づかない。 -
DISABLE_TELEMETRYやDO_NOT_TRACKなどの環境変数を設定していると、Remote Controlが依存する機能フラグの評価自体がブロックされ、原因が分かりにくいエラーになる。 - サーバーモードとインタラクティブモードの違いを理解せずに使い、「複数タブから同時に触りたいのに1つしか繋がらない」という壁にぶつかる。
ホームディレクトリでclaude remote-controlを実行しても、ワークスペーストラストのダイアログはホームディレクトリに対しては保存されません。必ず個人開発プロジェクトのディレクトリに移動してから実行してください。
【転】💡 解決策:採用理由と他の選択肢
Remote Controlには3つの起動方法があり、用途によって向き不向きがあります。
-
claude remote-control(サーバーモード): プロセスがターミナルに常駐し、複数セッションをまとめて受け付ける。プロジェクトを複数並行したいなら--spawn worktreeで各セッションを別のgit worktreeに自動分離できる。 -
claude --remote-control(インタラクティブセッション): 普段通り手元のターミナルでも操作しつつ、リモートからも同じセッションに参加できる。1プロセスにつき1リモートセッション。 -
既存セッション中に
/remote-control: 今すでに進めている会話を、途中からリモートに引き継ぎたいときに使う。会話履歴を維持したまま接続できる。
今回のような「普段は手元で操作していて、たまに外から触りたい」というニーズには、**インタラクティブセッション(claude --remote-control)、または作業中に/remote-control**が最も手軽です。複数の個人開発プロジェクトを並行して外から触りたい場合は、サーバーモード+--spawn worktreeが有力な選択肢になります。
【結】💻 具体例・サンプルコード
事前チェックから接続までの手順です。
# 1. 事前チェック: サインイン状態を確認する。
# 未ログインなら claude を起動して /login でclaude.aiアカウントにサインインする
claude
# セッション内で
# /login
# 2. Remote Controlの動作を妨げる環境変数が無いか確認する
# (DISABLE_TELEMETRY / DO_NOT_TRACK / CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC /
# DISABLE_GROWTHBOOK が設定されていると機能フラグの評価がブロックされる)
echo $DISABLE_TELEMETRY $DO_NOT_TRACK
# 3. 個人開発プロジェクトのディレクトリに移動し、
# ワークスペーストラストのダイアログを一度通しておく(ホームディレクトリでは不可)
cd ~/projects/my-side-project
claude
# 初回は信頼ダイアログが出るので許可する。一度exitしてよい
# 4. Remote Controlを有効にしたインタラクティブセッションを起動する
claude --remote-control "個人開発プロジェクト"
# もしくは、すでに開いているセッションの中から
# /remote-control 個人開発プロジェクト
起動すると、初回は「Enable Remote Control?」の確認が出ます。承諾すると、セッションURLとQRコードが表示されるので、スマホのカメラでQRコードを読み取れば、Claudeモバイルアプリでそのままセッションに接続できます。ブラウザから使いたい場合は、表示されたURLを開くか、claude.ai/codeのセッション一覧から名前で探します。
接続がうまくいかない場合は、まずclaude doctorを実行してみてください。どの事前条件チェックに失敗しているかを個別に教えてくれます。
【補足】🔰 ワークスペーストラストとは?
これは「初めて訪れた家の合鍵を渡す前に、本当にこの家で良いか一度確認する」ようなものです。Claude Codeはディレクトリを開くたびに何でも実行してよいわけではなく、「このフォルダでの操作を信頼してよいか」を最初に一度確認します。ホームディレクトリ全体のような広すぎる範囲は、うっかり信頼してしまうと影響範囲が大きすぎるため、意図的に「信頼を保存しない」設計になっています。
第3章: 状態確認・プッシュ通知・安全に使うための運用ルール
【起】⏱ 10秒まとめ
繋ぎっぱなしでスマホを覗きに行くより、プッシュ通知と権限モードを組み合わせて「呼ばれたときだけ見る」運用にすると、外出先でも安心して任せられます。
【承】🌩 課題:こんなこと困るよね
セットアップが終わっても、運用面でいくつか気になる点が残ります。
- スマホから常にターミナルを覗きに行くわけにはいかない。放置していると、権限確認(ファイル削除やコマンド実行の許可など)で止まったまま気づかない、ということが起きる。
- 「外部から操作を許すこと」自体に漠然とした不安がある。誰でも自分のセッションに繋げてしまうのでは?という懸念。
Remote Control自体は自宅PCのポートを開放しませんが、claude.aiアカウントが乗っ取られれば、そのアカウントに紐づくRemote Controlセッションも操作されてしまいます。アカウントの2段階認証や、組織アカウントであればTrusted Devices(デバイスの事前登録+生体認証)の設定を検討してください。
【転】💡 解決策:採用理由と他の選択肢
外出先での「見に行くタイミング」について、3つの案を比較しました。
-
選択肢A: 何もせず繋ぎっぱなしで放置する
→ 見送り。権限確認で止まっていることに気づけず、作業が止まったまま時間だけ過ぎる。 -
選択肢B: 定期的に自分からアプリを開いて確認しに行く
→ 見送り。現実的に忘れるし、バッテリーも消耗する。 -
採用案: プッシュ通知を有効化し、「呼ばれたら見に行く」運用にする
→ Claude自身が「長いターンが終わった」「入力・承認が必要」というタイミングを判断して通知してくれるため、こちらは通知が来るまで気にしなくてよい。
あわせて、権限モード(acceptEditsなど)を用途に応じて選んでおくと、確認が必要な操作の頻度そのものをコントロールできます。
【結】💻 具体例・サンプルコード
プッシュ通知を受け取るための設定手順です。
# 1. スマホにClaude公式モバイルアプリをインストールし、
# Claude Codeと同じclaude.aiアカウントでサインインする
# 2. OSの通知許可ダイアログを許可する
# 3. Claude Codeのセッション内で /config を実行し、以下を有効にする
/config
# - Push when Claude decides → 長時間タスク完了時などにClaudeが判断して通知
# - Push when actions required → 権限確認や質問が必要なときに通知
通知が届かない場合のチェックポイント:
- /config で "No mobile registered" と出ていないか
→ 一度モバイルアプリを開いて、プッシュトークンを再登録させる
- iOS: 集中モードや通知サマリーが通知を抑制していないか確認する
- Android: バッテリー最適化の対象からClaudeアプリを除外する
権限モードについては、外出先から「多少の編集は自動で進めてOK」という運用にしたいならacceptEdits、逆に「一つひとつ必ず確認したい」なら通常モードのまま、というように使い分けます。個人開発の検証段階であれば、まずは通常モード(都度確認)で始め、慣れてきたら徐々に自動化範囲を広げるのが安全です。
「外から少し触れるようになったから」といって、いきなり全自動(権限確認なし)の運用に振り切るのは避けましょう。まずは通知を受け取って人が最終確認する運用に慣れてから、自動化範囲を広げるのが安全な進め方です。
【補足】🔰 「Claudeが判断して通知する」とは?
これは、優秀な秘書が「すべての作業を逐一報告する」のではなく、「重要な判断が必要なタイミングだけ声をかけてくれる」ようなイメージです。細かい進捗まで全部通知が来ると、結局は通知疲れして見なくなってしまいます。Remote Controlのプッシュ通知は、あえて「長いタスクが終わった」「あなたの判断が必要」という要所だけに絞ることで、通知そのものの価値を保つ設計になっています。
選び方の早見表
外から関与する手段は、Remote Control以外にもいくつかあります。目的に応じて選び分けてください。
| 手段 | きっかけ | Claudeの実行場所 | こんなときに向く |
|---|---|---|---|
| Remote Control(この記事) | claude.ai/codeやモバイルアプリから操作 | 自宅PC(CLI/VS Code) | 進行中の作業を外から続けたい |
| Channels | Telegram/Discordや自作サーバーからのイベント | 自宅PC(CLI) | CI失敗やチャットへの反応など、外部イベント駆動にしたい |
| Scheduled tasks | スケジュール指定 | CLI/Desktop/クラウド | 毎日のレビューなど定期実行にしたい |
単語一覧 (Glossary)
- Remote Control: 自宅PCなどで動作中のClaude Codeセッションに、スマホやブラウザから接続して操作・閲覧できる公式機能。実行自体はローカルのまま、Anthropicのサーバーが接続を中継する。
- ワークスペーストラスト(Workspace Trust): Claude Codeが特定のディレクトリでの操作を許可してよいか、最初に一度確認する仕組み。ホームディレクトリ全体には適用されない。
- Trusted Devices: 組織アカウント向けのベータ機能。Remote Controlの閲覧・操作に、事前に登録したデバイスと直近の認証(生体認証等)を要求する。
-
permission mode(権限モード): Claude Codeがファイル編集やコマンド実行のたびに確認を求めるか、自動で進めるかを制御するモード(
default/acceptEdits等)。 - ポーリング: クライアント側から一定間隔・条件でサーバーに問い合わせ続け、新しい情報が来ていないかを確認する通信方式。Remote Controlの自宅PC側は、この方式でAnthropic側からの指示を受け取っている。


