Code Remote

コマンド

coderemote でできることを、コマンドごとに。

$ coderemote up                    # share this folder, print the pairing QR
$ coderemote status                # running agents and their terminal sessions
$ coderemote kill <id>... | --all  # end terminal sessions
$ coderemote stop [--all]          # stop the agent for this folder
$ coderemote serve                 # share on 127.0.0.1 only, no tunnel
$ coderemote requests [PORT]       # requests that reached a previewed port
$ coderemote request <ID>          # headers and bodies of one request
$ coderemote setup claude          # follow Claude Code sessions in the app
$ coderemote setup codex           # the same for Codex
$ coderemote devices               # phones enrolled with this folder
$ coderemote devices revoke <id>   # remove one phone
$ coderemote devices policy <level> # how strict Face ID is
$ coderemote rotate-token          # revoke every paired device
$ coderemote tunnels               # your Dev Tunnels account's tunnels
$ coderemote tunnels delete <id>   # delete ones nothing uses
$ coderemote login                 # sign in to Dev Tunnels again
$ coderemote update                # install the latest version
$ coderemote help                  # all options

up

現在のフォルダをプライベートな Microsoft Dev Tunnel で共有し、ペアリング用の QR コードを表示します。日常的に使うコマンドです。

$ coderemote up
$ coderemote up --root ~/projects   # share another folder
$ coderemote up --web               # also open it in VS Code on vscode.dev

127.0.0.1 で小さなエージェントを起動し、必要なら Dev Tunnels にサインインし、リレーに外向きに接続して、共有しているフォルダ、アクセスできる人、ペアリング用のリンクの 3 つを表示します。Ctrl+C を押すかターミナルを閉じるまで動き続けます。

オプション動作
--root DIR現在のフォルダの代わりに DIR を共有します。
--port Nローカルのポート N で待ち受けます(デフォルトは 31580)。別のプログラムがそのポートを使っているときに変更します。
--allow-anonymousiPhone でのアカウントのサインインを省略します。ペアリングトークンだけでアクセスできます。別名は --no-auth です。
--webVS Code の code tunnel も実行し、ブラウザのフルエディターでフォルダを開く vscode.dev のリンクを表示します。

--web は Code Remote のものではなく、VS Code 自身のトンネルを使います。専用の GitHub アカウントでサインインし、共有フォルダだけでなくマシン全体をブラウザに公開します。PATH に VS Code の code コマンドが必要です。

status

このコンピューターで動いているエージェントと、それぞれのターミナルのセッションを一覧表示します。別名は ps です。

$ coderemote status
/Users/you/projects/my-app  (pid 4121, port 31580, up 2h)
  https://…devtunnels.ms
  3f9a2c1e  zsh          pid 4188    2h   1 attached
  b71d04aa  claude       pid 5230    14m  detached

各セッションには、id、タイトル、プロセス id、経過時間、いま iPhone が接続されているかが表示されます。detached のセッションはまだ動いており、アプリの再接続を待っています。

kill

ターミナルのセッションを終了します。status に表示される id の最初の数文字で十分です。

$ coderemote kill b71d
killed b71d04aa (claude) in /Users/you/projects/my-app

$ coderemote kill --all              # every session in every agent

エージェント自体は動き続けます。止めるには stop を使います。

stop

現在のフォルダを共有しているエージェントを停止し、そのトンネルとターミナルのセッションを終了します。手の届かないウィンドウで up が動いているときに便利です。

$ coderemote stop                   # the agent for this folder
$ coderemote stop --all             # every agent on this computer

serve

トンネルもサインインもなしで、127.0.0.1 だけでエージェントを起動し、ローカルの URL とトークンを表示します。ローカルでのテストや開発向けで、iPhone からは届きません。

$ coderemote serve
coderemote agent on http://127.0.0.1:31580
Sharing: /Users/you/projects/my-app
Token: …

requests

アプリからプレビューしているポートに届いたリクエストを、アプリに表示されるのと同じログとして出力します。ターミナルの Claude Code や Codex のようなコーディングエージェント向けに作られています。coderemote requests を実行するよう伝えれば、ページや webhook が実際に何を送り、サーバーが何を返したかを確認できます。coderemote 0.3.0 以降が必要です。

$ coderemote requests
#41    200   GET /api/me  8 ms  212 B  10:20:31
#42    401   POST /api/orders  5 ms  38 B  10:20:33

$ coderemote request 42
#42  POST /api/orders  ->  401
  authorization: Bearer [redacted]
  …

そのフォルダのエージェントを見つけられるよう、共有フォルダ(またはその下)で実行します。エージェントが 1 つだけ動いているなら、どこからでも構いません。ポートを指定しないと、現在プレビュー中のすべてのポートを読みます。停止したプレビューもログは残るので、ポートを指定して読んでください。

コマンドまたはオプション動作
requests [PORT]リクエストごとに 1 行、古いものから順に: id、ステータス、メソッドとパス、所要時間、サイズ、時刻。
request <ID> [PORT]1 件のリクエストのヘッダーと本文。JSON は整形され、64 KB を超える本文は保持されません。
requests clear [PORT]記録したリクエストを消去します。アプリの Clear と同じです。
--grep TEXTメソッドまたはパスに TEXT を含むリクエストのみ。
--failedエラーと 4xx/5xx のレスポンスのみ。
--limit N直近の N 件を表示します(デフォルトは 50)。
--jsonスクリプト向けの機械可読な出力。
--show-secretsデフォルトでマスクされる値を表示します(下記参照)。

秘密情報は、求めない限りマスクされます: Authorization ヘッダー(Bearer などのスキームは残ります)、Cookie の値(名前は残ります)、token・key・session のような名前のヘッダー、クエリ文字列・JSON・フォームの本文にある password や access_token などのフィールド。出力には、隠した値の数が表示されます。たとえばテストでセッショントークンを再利用するなど、エージェントが必要とするときは --show-secrets を付けます。

ディスクには何も書き込まれません。このコマンドは、エージェントがメモリ内に保持しているログ(ポートごとに直近 200 件のリクエスト)を読み取ります。

setup claude, setup codex

Code Remote プラグインを Claude Code または Codex にインストールし、そのセッションをアプリの Agents タブに表示して、iPhone から確認に回答できるようにします。Codex はプラグインの hook を、一度信頼した後でしか実行しません。Codex を開いて /hooks と入力してください。--remove でアンインストールします。コーディングエージェントを参照。

$ coderemote setup claude
$ coderemote setup codex

devices

フォルダーで動いているエージェントに登録されたスマートフォンを、登録日時と最後に見えた日時、Face ID の設定とともに一覧表示します。スマートフォンは QR コードをスキャンした後の最初の接続で自分で登録します。

$ coderemote devices
$ coderemote devices revoke 94d5                       # an id prefix is enough
$ coderemote devices policy terminal+writes --window 30m

revoke はスマートフォンを 1 台すぐに外します。そのセッションと開いているターミナルは終了し、ペアリングし直さない限り戻れません。policy は Face ID を求める操作を決めます: none、terminal(既定: ターミナル、コーディングエージェント、ビルド)、terminal+writes(ファイルと git の変更も)。--window で 1 回の確認の長さを決めます: 5m(既定)、30m、1h。アプリからは厳しくでき、緩めるときは Face ID を求めます。

rotate-token

アクセストークンとこのコンピューターの鍵を置き換え、登録済みのスマートフォンをすべて忘れます。ペアリング済みのスマートフォンはすべて、すぐにアクセスできなくなります。唯一のスマートフォンをなくしたときや、ペアリングリンクが漏れたときに使ってください。

$ coderemote rotate-token
Token rotated. Re-pair your devices, and restart running agents.

その後、coderemote up を再起動し、引き続き信頼するデバイスで新しい QR コードを読み取ってください。

tunnels

Dev Tunnels アカウントのトンネルを一覧表示し、使われていないものを削除します。アカウントで保持できるトンネルは 10 個です。coderemote を実行するコンピューターごとに 1 つ、エージェントの実行中はプレビュー用にもう 1 つ使い、古いコンピューターや再インストールは自分のトンネルを残します。coderemote 0.3.6 以降が必要です。

$ coderemote tunnels
  silent-lake-pqv9b80.usw2  online · this computer's agent on port 31580 · coderemote my-mac
  brave-hill-x7k2m41.usw2   online · this computer's previews on port 31580 · coderemote preview my-mac
  quiet-fox-3hd8w2c.usw2    coderemote old-laptop

$ coderemote tunnels delete quiet-fox-3hd8w2c
deleted quiet-fox-3hd8w2c.usw2

各行にはトンネルの id、エージェントがいま提供している場合は online、このコンピューターがそれを何に使っているか、そしてそれを作ったコンピューター名を示す説明が表示されます。id を指定するときは、リージョンの接尾辞(.usw2)は省略できます。

コマンドまたはオプション動作
tunnelsサインインしているアカウントのトンネルを 1 行ずつ表示します。
tunnels delete <id>...それらのトンネルを削除します。オンラインのもの、またはこのコンピューターが使っているものは、--force を付けない限り残されます。
--forceそれでも削除します。その URL は失われ、それとペアリングされた iPhone はペアリングし直す必要があります。このコンピューターでは次の up が新しいものを作ります。

手動で必要になることはほとんどありません。アカウントがいっぱいのときは、up とプレビューが、どのエージェントも使っていないプレビュー用トンネルを先に削除します。それでも空きができないときだけ、up は停止し、アカウントのトンネルを一覧表示して削除を促します。

login

Microsoft Dev Tunnels にサインインします。必要なときは up が自動で行うので、アカウントを切り替えるときやブラウザがないときだけ実行します。

$ coderemote login                  # GitHub, in the browser
$ coderemote login --microsoft      # a Microsoft account
$ coderemote login --device-code    # no browser here: enter a code on another device

up --allow-anonymous を使わない限り、iPhone も同じアカウントでサインインする必要があります。

update

インストールしたときと同じ方法(npm、または pnpm、yarn、bun、Homebrew、あるいはインストールスクリプトがダウンロードした Node.js の中)で、最新の coderemote をインストールします。新しいバージョンがあると、up がペアリングリンクの下にお知らせします。npm への問い合わせは 1 日に 1 回までで、起動を遅くすることはありません。CODEREMOTE_NO_UPDATE_CHECK=1 を設定すると無効にできます。

$ coderemote update
$ coderemote --version             # the version you're running

すでに動いているエージェントは、再起動するまで古いバージョンのままです: coderemote stop --all を実行してから、もう一度 coderemote up を実行してください。

help

すべてのコマンドとオプションを表示します。coderemote だけ、または行のどこかに --help を付けても同じ動作になるので、打ち間違いでうっかりフォルダの共有が始まることはありません。

オプション

オプションコマンドデフォルト
--root DIRup, serve, stop現在のフォルダ
--port Nup, serve31580
--allow-anonymousupオフ
--webupオフ
--allkill, stop
--forcetunnels deleteオフ
--microsoft, --device-codeloginGitHub(ブラウザで)