パソコンの前を離れたあと、やりかけの作業の続きを触りたくなることがあります。出先とは限りません。 同じ家の中でも、ソファに移ったあとや、布団に入ってからのほうが多いかもしれません。
スマホのClaudeアプリでリポジトリを指定して読ませる、というやり方は以前からありました。ソースを確かめたり、書き足してコミットしたりもできます。
ただしこれはGitHubに上がっているものを読みに行く方式です。手元のパソコンとは無関係なので、まだコミットしていない書きかけは見えません。 そしてリポジトリが大きくなると、用があるたびに複製(clone)が走ります。 小さいものでは起きず、大きいものでは繰り返し走る、という差がありました。手元に保持しておける大きさに上限があるのかもしれませんが、理由までは確かめていません。 大きいリポジトリほど、この待ち時間がそのまま効いてきます。
別のやり方があります。 Remote Control という仕組みで、手元のパソコンで動いているClaude Codeのセッションに、スマホやブラウザから繋ぐものです。動いている場所は変わりません。スマホは、そこを覗く窓になります。
スマホから使う3つのやり方は、動く場所が違う
まぎらわしいので、3つの違いを先に並べます。
| やり方 | 動いている場所 | 見えるもの | 代わりに要るもの |
|---|---|---|---|
| アプリのGitHub連携 | どこでもない(読むだけ) | GitHubにpush済みの中身 | 大きいリポジトリでは、毎回の複製を待つこと |
| ブラウザ版・クラウドのセッション | Anthropic側のコンピュータ | そこに複製(clone)されたリポジトリ | 手元の環境は使えない |
| Remote Control | 手元のパソコン | 手元のファイルそのもの。未コミットの変更も含む | 手元のパソコンが起きていること |
『AIエージェントをブラウザだけで動かす』で書いたとおり、スマホの中でエージェントが動くことはありません。 動くのはクラウドか手元のパソコンで、スマホはどちらの場合も窓です。その窓の先がどこかが、この3つの違いです。
Remote Controlの繋ぎ方
すでにパソコンでClaude Codeを動かしているなら、そのセッションの中で打ちます。
/rc
/remote-control と書いても同じです。QRコードとURLが表示されるので、QRコードをスマホのカメラで読めばClaudeアプリで開きます。
最初から繋いだ状態で起動する書き方もあります。
claude --rc # ふつうの対話セッション。手元でも打てるし、スマホからも触れる
claude remote-control # サーバーとして動かす。手元では入力せず、スマホやブラウザ側から使う
セッションには名前を付けられます(claude --rc "サイトの改稿")。付けなければ ホスト名-graceful-unicorn のような名前が自動で振られます。アプリ側では下の「Code」タブにセッションの一覧が表示され、繋がっているものには緑の点が付きます。
毎回/rcと打つのが面倒なら、/config の Enable Remote Control for all sessions を有効にすると、対話セッションの起動時に自動で繋がります。
手元の環境が、そのまま使える
ここが「GitHubを読ませる」やり方といちばん違うところです。動いているのが手元のパソコンなので、手元にあるものは全部使えます。
- ファイルそのもの。 まだコミットしていない書きかけも、
.gitignore(Gitの管理から外すファイルを書いておく設定)で除外しているファイルも見えます @でファイル名を打つと、手元のプロジェクトのパスが補完されます- MCPサーバー(エージェントに外部の道具を持たせる差し込み口。『MCPとは何か』)やプロジェクトの設定(
CLAUDE.mdなど)も、手元に用意してあるものがそのまま効きます - スマホから写真やファイルを送れます。 写真はそのまま渡り、それ以外のファイルは手元のパソコンにダウンロードされてから
@の参照として渡されます
ターミナル・ブラウザ・スマホのどこから打っても同じ会話が進みます。 サブエージェント(『サブエージェントで、トークンが一瞬で溶ける』で扱った、裏で並行して動く分身)や長い処理の進み具合も、繋がっている全部の画面で同期します。
tmux・moshとは、守っているものが違う
この3つは混同しやすいので、はっきり分けておきます。 すでに『tmux――接続が切れても作業を続けられる道具』や『moshという、切れない接続』を使っている場合、Remote Controlがその代わりになるように見えますが、そうではありません。3つは別の層を守っています。
| 何が守られるか | 道具 |
|---|---|
| Claude Codeのプロセスが生き続ける(ターミナルを閉じても消えない) | tmux |
| ターミナルへの接続が切れにくい(電波が変わっても、蓋を閉じても続く) | mosh |
| スマホ・ブラウザとセッションの繋がりが、切れても戻る | Remote Control |
Remote Controlが自動でやってくれるのは、いちばん下の行だけです。公式ドキュメントにも、パソコンがスリープしたりネットワークが落ちたりしても、復帰したときに自動で繋ぎ直すと書かれています。その間のサブエージェントの進捗はキューに溜められ、復帰後にまとめて届きます。
しかし、手元のプロセスが死んでいたら、繋ぎ直す先がありません。 公式には「claude remote-control を Ctrl+C で止めると、スマホやブラウザから応答しなくなる」と明記されています。ターミナルの窓を閉じた場合も同じことが起きるはずです——プロセスが終わるので。ただしこれは公式に書かれていることではなく、プロセスの一般的な性質からの推測です。
だから、出かける前にパソコンを離れるなら、tmuxの中で動かしておくのが確実ということになります。そこはRemote Controlが登場しても変わりません。
いっぽうmoshは、ターミナルそのものに繋ぐための道具です。Remote Controlはターミナルを介さないので、Claude Codeを触るだけならmoshは要りません。 ただし git log を見る、ls で中身を確かめる、開発サーバーを立ち上げる——といったターミナル作業は、依然としてmoshの出番です。
ついでに、Remote ControlにはTailscaleも要りません。 『Tailscaleをインストールすると、自宅のパソコンがどこからでも手元になる』で作るのは自分専用の網ですが、Remote Controlの通信はAnthropicのサーバーを経由します。 自宅の回線へ直接つなぎに行くわけではありません。裏を返せば、やり取りは自分の網の外を通るということでもあります。
Remote Controlの代償——手元のパソコンを眠らせておけない
複製を待たずに済む代わりに、手元のパソコンが動いていることが前提になります。ここは正直に一長一短です。
公式ドキュメントには、スリープしても復帰したときに自動で繋ぎ直すと書かれています。接続は壊れません。 ただし当然ながら、眠っている間は何も進みません。 出先から指示を投げて帰るまでに終わらせておいてほしい、という使い方をするなら、起こしておく必要があります。
デスクトップ機を母艦にしているなら、そもそも眠らせない設定にできます。macOSなら「システム設定 → ロック画面/バッテリー」あたりで変えられますし、いま眠らない設定になっているかはターミナルで確かめられます。
pmset -g custom | grep " sleep"
sleep 0 と表示されれば、スリープしない設定です(displaysleep は画面が消えるまでの分数で、こちらが働いても中の処理は止まりません)。
ノートパソコンを母艦にする場合は、事情が変わります。 蓋を閉じれば止まりますし、電源に繋いでいなければなおさらです。そのときだけ眠らせたくないのであれば、次のコマンドを走らせているあいだは眠りません。
caffeinate -i
Ctrl+C で終われば元に戻ります。caffeinate -i -t 3600 のように秒数を付ければ、その時間だけ起きています。
「母艦を起こしたままにできる人」には、とても具合のよい仕組みです。逆に、持ち歩いているノート1台で完結させたい場合は、この前提が重くなります。
Remote Controlを使うのに要る条件
公式ドキュメントに挙がっている条件のうち、引っかかりやすいものです。
- Pro・Max・Team・Enterprise のいずれかのプラン。 APIキーでの利用は対象外です
- Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundry 経由では使えません
ANTHROPIC_BASE_URLをapi.anthropic.com以外に向けていると使えませんDISABLE_TELEMETRY・DO_NOT_TRACKなどを設定していると使えません。 これらはこの機能が依存している判定を止めてしまうため、設定を外す必要があります- プロジェクトのフォルダで一度
claudeを起動して、信頼のダイアログを通しておくこと。 ホームディレクトリでは信頼が保存されない仕様なので、プロジェクトのフォルダから始めます - Team・Enterpriseでは、管理者が先に機能を有効にする必要があります
セッションの扱いで、戸惑いやすいところ
- 1つのセッションは、取り合いになります。 別の端末やアプリからそのセッションを開くと、そちらに移ります。ターミナル側には「他の端末に取られた」という理由が表示されるので、理由を読んでから繋ぎ直す(取り返す)かどうかを決めます
- サーバーを止めたあと、戻せるのは約4時間です。同じフォルダで
claude remote-controlを打ち直せば、預けていたセッションが戻ります。4時間を過ぎると新しいセッションになります /clearはスマホ側にも及びます。 会話がリセットされるのは、繋がっている全部の画面です- モデルや思考の深さ(effort)を、スマホ側から切り替えられます。 切り替えると手元のセッションがその設定で動きます
なお、ここで挙げた挙動はバージョンによって変わります。 この記事の確認は Claude Code 2.1.226 で行いました。機能ごとに必要なバージョンが公式ドキュメントに書かれているので、動かないときはそこを見るのが早いです。
まとめ
- スマホのClaudeアプリから、手元のパソコンで動いているClaude Codeを操作できる。 機能の名前は Remote Control
- 動いているのは手元のパソコン。 GitHubを読ませる方式と違い、未コミットの変更もMCPもプロジェクト設定も、そのまま使える
- 繋ぎ方は、セッション中に
/rcと打ってQRコードを読むだけ - tmux・mosh・Remote Controlは、守っているものが違う。 プロセスを守るのがtmux、ターミナル接続を守るのがmosh、スマホとの繋がりを守るのがRemote Control
- 手元のプロセスが死ねば、繋ぎ直す先も消える。 パソコンを離れるなら、tmuxの中で動かしておくのが確実
- 代償は、手元のパソコンを眠らせられないこと。 スリープしても接続は壊れないが、寝ている間は進まない。 母艦を起こしたままにできる環境なら具合がよく、ノート1台で完結させたい場合は前提が重くなる
- Pro以上のプランが必要。APIキー・Bedrock・Vertex・Foundry では使えない
ソファでも布団の中でも、スマホを開いたとき、画面の向こうで動いているのは、机に置いてきたパソコンです。 ファイルもコマンドも、そこから動いていません。行き来しているのは指示と、その結果の文字だけです。