Claude Code pops one of its question dialogs — approve this plan, pick an option — and the model clearly refers to something it just wrote. A summary. A plan. A diff walkthrough. But there's nothing above the dialog. You scroll. Nothing. Ctrl+O to check the transcript. Nothing there either.
A bug report filed this morning says that's not you scrolling past it. The text was never saved at all.
The claim
Issue #77410 reports that
when the assistant emits text and an AskUserQuestion dialog in the same response,
the text is never persisted to the session file. Not truncated, not hidden — the
block is structurally absent from the JSONL under ~/.claude/projects/. Since the
transcript view and --resume both read from that file, the text is unrecoverable
after the fact.
The consequence the reporter leads with is the one that matters: you answer approval dialogs without ever seeing what you're approving. The dialog says "approve this plan?" and the plan was in the block that vanished.
Filed July 14. Zero comments. Nothing from Anthropic. One reporter, macOS, claiming it's been happening since June 10.
I tried to debunk it — and then it happened to me
The report makes a universal claim ("never persisted"), so I ran the check on my own machine: 19 session files, 1,859 tool calls, 11 of them AskUserQuestion dialogs.
First finding, and it cuts against the report: five of those eleven dialogs had their side-by-side text saved just fine — including an 1,131-character plan block from July 5, squarely inside the reporter's claimed bug window. The persistence rate next to question dialogs matched the rate next to Bash calls almost exactly. At that point I was drafting this as a debunk.
Then, while writing it, my live session emitted a multi-paragraph analysis followed by a question dialog in the same response. I answered the dialog from the option labels — and only realized afterwards that I'd never seen the analysis on screen at all. Then I checked the session file. The tool call was persisted. The thinking blocks were persisted. The analysis text was gone. I searched the entire JSONL for an exact phrase from it — zero hits. Both halves of the report, reproduced: the text never displayed, and it was never saved.
So both things are true. The report's "never" is wrong — I have five counterexamples from one machine. And the bug is real — I reproduced it the same day it was filed, on the current version. It's intermittent, which is worse in a way: you can't build a habit around a failure that only sometimes happens.
How to check your own transcripts
The 10-second version: if you remember the model saying something, grep the session file for an exact phrase from it.
grep -c "a phrase you remember the model writing" \
~/.claude/projects/<your-project>/<session-id>.jsonl
Zero hits for text you definitely read means that text was never persisted.
One methodology warning if you go digging yourself: Claude Code writes each content
block as its own line in the JSONL, so a dialog entry with no text next to it proves
nothing — that's the normal shape for every tool call. Blocks from the same response
share a message.id; you have to group by that. (The issue's own JSON snippet makes
this mistake — the evidence that holds up is the text being absent from the whole
file, which is what I verified.)
What to do until it's fixed
-
If the model refers to a plan you can't see, answer "no". Then ask it to restate the content as a normal message before re-asking the question. A dialog is not the place to take it on faith.
-
Don't treat ctrl+O or
--resumeas complete around question dialogs. They render from the JSONL. They can't show you what was never written to it. -
For the hook crowd: the reporter ships a workaround — a PreToolUse hook that denies AskUserQuestion when the same turn carries substantial text, forcing the model to deliver the content first and ask in the next turn. A band-aid at the right layer until the serialization bug is fixed.
-
If you hit it, add your evidence to #77410. Intermittent bugs get fixed when reports pile up. Session files live under
~/.claude/projects/— grab the session ID and the missing-phrase grep result.
What not to do
Don't repeat this as "Claude Code deletes your data." The verified scope is narrow: text sharing a response with an AskUserQuestion dialog, sometimes. Text next to Bash and Edit calls persisted at normal rates in the same scan.
And don't assume the model just didn't write anything. There's a second open report, #77141, complaining about bare question dialogs with no explanation — filed as a model behavior problem. My repro shows at least some of those bare dialogs are this bug instead: the model did explain, and the explanation never made it to disk. Two reports, same symptom, opposite diagnoses. That's usually a sign the visible symptom is hiding a layer.
Receipts
- #77410 — text in the same response as AskUserQuestion missing from the session JSONL. Open, unconfirmed, filed 2026-07-14. Independently reproduced on my machine the same day, both the display loss and the persistence loss — with counterexamples showing it's intermittent, not universal.
- #77141 — bare question dialogs with no preamble, filed as model behavior. Open, unconfirmed.
- #24691 — the broader "streaming text disappears before tool calls" report. Closed as not planned.
Everything above the Receipts line labeled as my numbers came from scanning my own session files on 2026-07-14 against v2.1.209. If Anthropic responds on the issue, I'll update this post.
The unsettling part isn't the missing text. It's that I answered that dialog without noticing anything was wrong. Check a session file this week — you want to know whether your approvals were as informed as you think they were.
Watch instead
This one's also a 60-second video on TikTok →
More fixes like this, before they hit the blog