Claude Code Remote Control、使ったらすぐ止まる

Claude Code の Remote Control を iPhone から使っている。通勤中に進捗を確認したり、指示を出したりできるやつだ。

が、すぐ止まる。

止まる

初回、3 ターンくらいで iPhone の画面が進まなくなった。PC に戻ると選択肢が出ていた。PC 側で選ぶと続いた。

別の日は 1 時間くらい続いた。設計の話をしていて、plan mode の承認ダイアログが出たところで止まった。Chrome リモートデスクトップで PC に繋いで承認した。iPhone から操作するための機能なのに、結局 PC を触っている。

原因を調べた

最初は AskUserQuestion(ボタン式の選択肢 UI)を疑った。GitHub にも関連 Issue がいくつかある。

RC 経由で実際に試したら、2 択も 3 択も 4 択も普通に選べた。これは問題ない。

止まるのは Y/N のパーミッションダイアログだった。ファイル編集の許可、plan mode の承認。これらが iPhone に表示されない。何も出ない。セッションが止まる。

Issue はある。

--dangerously-skip-permissions で回避しようとしても、逆にモバイル側にプロンプトが出てくるバグがある。塞がっている。

回避策

RC からは直接ファイル編集や Bash を叩かず、サブエージェントを発射する。

iPhone → RC → Claude → サブエージェント(bypassPermissions) → 実作業

サブエージェントは自分のパーミッションで動くので、RC 側にダイアログが出ない。

やってみたらいくつかわかった。

RC を「操作端末」ではなく「発射台」として使う。読み取りと非破壊コマンドは直接、書き込みはサブエージェント経由、破壊的操作は親セッションで直接。

通知か回避か

RC が止まる問題に対して、アプローチは 2 つある。

通知: セッションが止まったら iPhone に push 通知を送る。Bark や ntfy.sh を hook から飛ばす方法がいくつか紹介されている。止まった事実は早くわかるが、結局 PC に戻って操作する。

回避: そもそも止まる原因を消す。この記事のサブエージェント方式。パーミッションダイアログが出ない構造にする。

どちらか片方では完結しない。回避策で止まる頻度を下げつつ、それでも止まったら通知で気づく。

まとめ

RC で止まる原因は AskUserQuestion ではなく Y/N ダイアログ。紹介記事でよく見る「指示を出して結果を見る」だけなら止まらない。パーミッションや承認が絡むと止まる。

使っていてオススメしている人たちは、たぶんそこまで使っていない。