Dance with Agents

出先でも、寝ながらでも、Claude Codeの続きができる——Remote Controlで動くのは、スマホではなく手元のパソコン

パソコンの前を離れたあと、やりかけの作業の続きを触りたくなることがあります。出先とは限りません。 同じ家の中でも、ソファに移ったあとや、布団に入ってからのほうが多いかもしれません。

スマホの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 では使えない

ソファでも布団の中でも、スマホを開いたとき、画面の向こうで動いているのは、机に置いてきたパソコンです。 ファイルもコマンドも、そこから動いていません。行き来しているのは指示と、その結果の文字だけです。

リモート開発環境の記事

リモート開発環境のページへ →