バグが出たのは Grok Bot が持っているクラウド PC の中でした。入口は Grok Bot のクライアント経由だけで、SSH も RDP も無い。手元からはログもプロセスも見えないので、2 つの AI の間で人間がテキストを運ぶことになりました。生ログが取れるまで出てきたのは推論だけで、前回の記事に書いた原因も誤りでした。Tailscale SSH を通して伝書鳩をやめるまでの記録です。
AI エージェントが自分専用のマシンを 1 台持つ形が出てきました。Grok Bot もその 1 つで、常駐エージェントに Debian のクラウド PC が丸ごと付いてきます。便利な反面、その中で不具合が起きたときに こちらから手が届かない という新しい不便もセットで付いてきます。
今回はまさにそれを踏みました。自作の many-ai-cli をその箱へ入れたところ、Claude Code のペインだけ画面が真っ黒。Codex と Grok は同じ画面で動いています。ところが入口は Grok Bot のクライアント経由だけで、手元の開発環境からはファイルもプロセスも見えません。その中を調べられるのは Grok Bot だけでした。
AI が持つ箱の構造と、そこへ他社の CLI を入れて動かすまでの全体像。
手元の Claude Code が調査手順をテキストで出し、人間がコピーして Grok Bot へ貼る。Grok Bot が実行して結果を返し、人間がコピーして戻す。1 往復あたり人のコピペが 2 回で、運んでいる中身はファイル一覧とログの先頭だけでした。
tailnet に載っていることと、パケットが通ることは別。詰まっていたのはノード側の設定と ACL の 2 か所。
前回の記事では原因を「Claude Code が端末へ送るカーソル位置の問い合わせに誰も応答していないから固まっている」と書きました。これは誤りでした。 ログの保存を有効にして取り直したところ、Claude は固まっておらず、起動画面を最後まで描き切っていました。
真因は自分のコードでした。表示側のフィルタが、行頭へ戻る命令の後ろへ「行末まで消す」を無条件に挿していたのです。Claude Code は 1 行描いて行頭へ戻り、1 つ下へ移動して次を描くので、挿入した消去命令が描いたばかりの行を毎回消していました。
出力はある。画面だけが空。疑う先が AI 側から自分の表示経路へ移った。
素の出力 674 文字が、表示経路を通ると 73 文字。Windows で出なかったのは単独 CR が 0 個だったから。
生ログが無いところから出てくるのは推論であって観測ではありません。しかも推論は筋が通っているぶん納得してしまいます。前回は納得して記事にまで書きました。エージェント側のサンドボックスへ手元から入る道を 1 本通しておくこと。それが今回いちばん効きました。
複数の AI コーディング CLI を並列で走らせ、承認をブラウザ 1 タブに集約するローカルダッシュボード many-ai-cli を作っています。リポジトリは GitHub にあります。