Claude Code に Plan Mode 時質問をしても回答が出力されない(Fableで頻発)

Posted on 2026/07/23

Claude Code の plan mode で方針を確認させると、AskUserQuestion の選択ダイアログだけが表示され、その直前にあるはずの説明テキストが画面に一切出ない ことがあります。

ユーザーからは「何も回答せずに質問だけを繰り返してくる」ように見えるのですが、モデル側は回答を出力済みという認識でいるため、こちらが「さっきの回答が見えていない」と伝えるまで話が噛み合いません。Fable 5 に切り替えてから同一週内に 3 回以上遭遇したので、調べた内容と回避策をまとめておきます。

症状

同一ターン内に「テキスト出力 → AskUserQuestion ツール呼び出し」の順で応答が構成されると、ツール呼び出し前のテキストが表示されず、質問ダイアログだけが出ます(間欠的に発生)。

  • 判断材料(指摘の妥当性評価、選択肢の背景説明など)が届かないまま選択を迫られる
  • ダイアログをキャンセルしても、隠れていたテキストは現れない
  • Ctrl+O のトランスクリプト表示でも見えない(実機で確認済み)

似た症状として「ダイアログがテキストを覆い隠していて、キャンセルすれば読める」というパターン(後述の系統 1)がありますが、本件はキャンセルしても現れない 真の非描画 です。

原因

既知バグとして #79584 (Assistant text emitted before a tool call in the same turn is intermittently never rendered) が報告されています。2026-07-20 起票で、2.1.217 時点で未修正の OPEN な issue です。

issue 本文には、ターン形状ごとの経験則テーブルがあります。

  • ツール呼び出し → テキストで終端(後続ツールなし): 確実に表示される
  • テキスト → AskUserQuestion: 通常は表示されるが喪失例あり
  • ツール呼び出し → テキスト → AskUserQuestion: 間欠的に喪失(最頻)
  • AskUserQuestion がタイムアウト / 中断されたターン: ターン全体のテキスト喪失

追記コメントでは、ダイアログの中断が原因なのではなく、ダイアログ表示時点で既にテキストが欠けている(因果が逆)ことも確認されています。

報告者は Windows 11 / 2.1.215 ですが、自分は macOS / 2.1.217 で再現しており、プラットフォーム非依存です。

テキスト自体は失われていない

発生時のセッション .jsonl ファイルを grep で確認したところ、落ちたテキストは 両方ともファイル内に全文が存在 していました。

1
2
$ grep -l "3 つ目は" ~/.claude/projects/<project>/*.jsonl
<session-id>.jsonl   # ヒット

つまり損失はモデル → API → 保存の経路では起きておらず、ライブ描画とトランスクリプトビューの両方を含む TUI 表示層のみ で起きています。

関連 issue の系統

類似報告を辿ると、症状は 2 系統に分かれます。

系統 1: 覆い隠し・スクロール不能(テキストは描画されている)

ダイアログが直前のテキストを覆っていたり、スクロールで遡れないだけで、テキスト自体は描画されているパターンです。以前の記事で書いたスクロール不能の問題もこちらに属します。

系統 2: 真の非描画(テキストがそもそも描画されない)

今回の事象です。キャンセルしても現れず、トランスクリプト UI にもありません。

Issue 系統 タイトル 状態
#79584 2 ツール呼び出し前のテキストが間欠的に描画されない(本件) Open
#23862 1 AskUserQuestion がテキストをブロックする(覆い隠し系 canonical) Closed
#27998 1 plan mode でポップアップが応答を読むのを妨げる(#23862 の duplicate) Closed
#75202 1 plan ボックス上に描画された回答へスクロールで戻れない Open

CHANGELOG も 2.1.217 まで確認しましたが、AskUserQuestion 関連の修正はダイアログの word-wrap やタイムアウト挙動などのみで、本件(テキスト非描画)の修正エントリはありません。

Fable 5 から発生し始めたように見える理由

Opus (4.x) 使用時には遭遇せず、Fable 5 に切り替えてから頻発するようになったので、当初はモデル起因を疑いました。しかし系統 1 の報告は 2026 年 2 月からあり、バグ自体は Opus 時代から TUI に存在していたことになります。

Fable 5 は「ツール実行の合間に経過を説明する」「質問の前に判断材料をまとめて提示する」というインターリーブ型の出力を Opus より高頻度で行います。その結果、バグを踏むターン形状(テキスト → AskUserQuestion)の発生頻度がモデル切り替えで急増した、というのが正確な理解です。「モデルが原因」ではなく「モデルの出力スタイルがトリガー頻度を変えた」ということです。

回避策

その場での復旧: テキストのみで再出力させる

最速の対処です。「いま出力しようとした回答をテキストのみで再出力して」と依頼します。モデルのコンテキストには回答が残っているため確実に取り出せます。

セッション外からの回収: jsonl から抽出する

セッションファイルには全文が残っているので、jq で assistant のテキストブロックを抽出できます。

1
2
jq -r 'select(.type=="assistant") | .message.content[]? | select(.type=="text") | .text' \
  ~/.claude/projects/<project-dir>/<session-id>.jsonl | tail -50

予防: 出力スタイルのルールを追加する

CLAUDE.md やメモリに「実質的な説明はツール呼び出しを伴わないテキストのみのターンで届け、AskUserQuestion は次ターンで行うか、選択肢の description に文脈を自己完結で埋め込む」というルールを追加しておくと、バグを踏むターン形状自体を避けられます。自分はエージェントメモリに保存して運用しています。

なお、スクロール不具合の記事では回避策として有効だった Ctrl+O は、本件では 復旧手段になりません。表示層のバグがトランスクリプトビューにも及んでいるためです。

所感

AskUserQuestion は「判断材料を提示した上でユーザーに選ばせる」ための仕組みなのに、肝心の判断材料が silently dropped されるのは、かなり致命的な挙動だと感じます。しかも Ctrl+O でも見えないため、ユーザー側からは「モデルが説明をサボっている」ようにしか見えず、表示層のバグだと気づくまでに時間がかかりました。

データ自体は jsonl に無事残っているのがせめてもの救いで、逆に言えば描画パイプラインのどこかでテキストブロックが落ちているだけ、ということでもあります。根本修正は #79584 の対応待ちです。続報があれば追記します。