課題:選択肢のたびにマウスからキーボードへ
ターミナルで動く Claude Code が選択肢を出して止まった。
この2つのどちらで進めますか?
❯ 1. 既存の関数を直す
2. 新しい関数を作って差し替える
矢印キーで選んで Enter。1 体だけなら何でもない。
9 体並列で動かしていると、これが一日に数十回起きる。マスを拡大するたびに、マウスからキーボードへ持ち替える。拡大したマスの横にボタンのパネルが出て、クリックで答えられたら、と思う。
パネルの機能自体は MulmoTerminal にある。questionPaneEnabled という設定で、Claude の AskUserQuestion ダイアログの選択肢が拡大セルの横にボタンとして出る。
ただし既定では無効。その理由が、この道具の考え方をよく表している。
なぜ既定で無効なのか
このパネルは「表示するだけ」のものではない。ボタンを押すと、そのダイアログに対して矢印キーと Enter を代わりにターミナルへ打鍵する。
- 自分のキーボードと同じ入り口へ、別の経路から同じキーを送っている
- 頼んでいないのに勝手に現れると、ユーザーが入力している最中に競合しうる
キーボードを操作するパネルが、頼まない相手の前に既定で現れるべきではない。opt-in にしている理由はこれだ。
スマホでは逆に、常に有効
同じ機能がスマホでは常に有効なのは、打鍵の先に誰も座っていないからだ。
| 使っている端末 | パネルの既定 | 理由 |
|---|---|---|
| パソコン(拡大セルの横) | OFF(opt-in) | 自分のキーボードと競合しうる |
| スマホ(リモートビュー) | ON(常時) | 画面の前に競合する相手がいない |
パソコンで有効にすると、スマホと同じ振る舞いをパソコンにも持ち込むことになる。
MulmoTerminal の解決:1 行で有効化
{ "questionPaneEnabled": true }
~/.mulmoterminal/config.json に書くか、Settings → Terminal keys のチェックボックスで切り替える。
反映は軽い。他の設定と違って、サーバはこの値を質問が来るたびにディスクから読む。だから手で書き換えても再起動もタブの再読み込みも要らない。次に AI が質問した時点から効く。
詳細・gotcha
ターミナルのダイアログは消えない、置き換えない
有効にしても、ターミナル側に出ている選択肢は消えないし置き換わらない。パネルは同じ質問に答えるもう一つの経路で、先に使ったほうが勝つ。キーボード派の人はパネルの存在に気づかないまま使える。
置き換えてしまうと「パネルを閉じたら答える手段が消えた」が起きる。そうしていないのはそのため。
再読み込みしても質問は失われない
ここは実用上いちばん効く挙動。
パネルの規則が「質問が来たら開く」ではなく、**「拡大しているセルは、そのセッションが止まっている質問を出す」**になっている。
この言い換えで何が変わるか:
- タイル表示中に来た質問を、後からそのセルを拡大しても開く
- ブラウザのタブを再読み込みしても開く
- 接続が切れたあとの復帰でも開く
イベントが来たら開く作りだと、そのイベントを受け取っていないブラウザは何も知らない。再読み込みで消える。タブを間違えて閉じたときに AI が止まっている質問を見失うのは怖い。状態として保持しているので、いつ見に行っても正しいものが出る。
閉じ方が 2 通り、記憶されるのは片方だけ
| どうやって消えたか | 記憶される? |
|---|---|
| 質問自体が終わった(ターミナルで答えた・パネルで答えた・Esc で取り消した) | いいえ |
ペイン右上の ✕(right_panel_close)で閉じた |
はい(「ターミナルで答える」の意思表示として) |
✕ で閉じると「そのダイアログについては記憶する」ので、セルに戻っても開き直さない。✕ を押したのに戻るたびに開き直すと「消したのに出てくる」になるので、そこを避けている。
どちらの場合も、次の質問は普通に開く。記憶されるのはそのダイアログ 1 つについてだけ。
無効のとき、質問は隠れているのではなく届いていない
OFF にすると、質問文自体がブラウザに送られない。パネルは「隠れている」のではなく「出すものが無い」状態になる。無効のまま使っている人には、ブラウザに質問文が流れることはない。
例外:「閉じた」の通知は OFF でも送られる
意図的な例外が 1 つある。質問の途中でスイッチを切ると、既にボタンを出しているパネルが「ダイアログはもう終わった」と知る手段を失う。放置するとボタンを押した瞬間に、下の次のプロンプトへ矢印キーと Enter が入ってしまう。
これを避けるため、「閉じた」の通知だけは OFF でも送っている。提示されなかった質問についての「閉じた」は何もせず、質問文も含まないので、OFF のままの人にはコストが無い。
Claude のセッションだけ
選択肢は Claude Code のツールフックから届くので、Codex のマスや素のシェルのマスでは開かない。「このコマンドを実行していいですか」のような Claude Code 自身の確認ダイアログは AskUserQuestion と種類が違うので、これも対象外。
使ってみる
MulmoTerminal の立ち上げ方は MulmoTerminal 完全ガイド から。既に動いていれば、設定画面でそのまま試せる。
動作確認の最小シナリオ:
- Settings → Terminal keys を開き、
questionPaneEnabledのチェックを ON - グリッドで Claude Code のセッションを 1 つ起動し、拡大する
- AI に選択肢を出させる指示を入れる(たとえば「2 つの実装方法を提案してどちらで進めるか聞いて」)
- 選択肢が出た時点で、拡大セルの横にボタンのパネルが開けば成功
やめるときは、チェックを外すか "questionPaneEnabled": false に戻す。すぐ効く。ターミナル側では今までどおり答えられる。
まとめ
questionPaneEnabledが既定で無効なのは、パネルがターミナルに矢印キーと Enter を実際に打鍵するため。頼まれないのに現れるべきではないという設計判断- スマホでは逆に常時有効。打鍵の先に競合する相手がいないため
- ターミナルのダイアログは残るので、キーボード派と共存できる
- 「拡大セルは止まっている質問を出す」という状態ベースの規則で、再読み込みや復帰でも質問を失わない
- 反映は軽い(質問ごとに読む)ので、再起動もタブの再読み込みも要らない
- 効くのは Claude のセッションだけ。Codex やシェルは対象外
関連: MulmoTerminal 公式ガイドの質問ペイン / MulmoTerminal のキーボードショートカット(keymap) / Cursor の代替としての MulmoTerminal

