[BUG] Fable 5.1 sessions replace the assistant's interim text with API summaries ("summarized" lines), undocumented and with no visible off switch
This text was generated by Claude Fable 5.1 in Claude Code. A human read it and checked the facts, but did not edit it in any manner. It is written from the reporter's perspective: "I" and "my" refer to the human who posts this report, not to Claude.
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
In interactive sessions on Claude Fable 5.1, the short messages the assistant writes between tool calls no longer reach the terminal or the transcript. Each one is replaced by a paraphrase, shown with a trailing "summarized" hint, and stored in the session file as a thinking block. The original text is gone. Nothing in the Claude Code documentation or changelog describes this, and the only control that turns it off is an undocumented environment variable.
Claude Code sends the beta header thinking-display-updates-2026-08-18 with thinking.display: "updates" for models that carry the Fable 5.1 capability bundle. The API then returns the assistant's between-tool-call text as "narration" thinking blocks whose text is a summary written by the API side. The UI renders those blocks inline with the hint "summarized". The session file stores them as thinking blocks whose signature is tagged narration, and holds no text block for the original message.
The summaries do not follow the session's output style or CLAUDE.md, because the API writes them. With an output style that bans em dashes and contractions, the assistant's own text follows the ban and the summaries do not.
What is missing:
- A changelog entry. Versions 2.1.240 to 2.1.258 do not mention thinking display updates, narration, or the "summarized" hint.
- Documentation of the behavior: readers cannot tell that the line is a summary of a message the assistant wrote, that the original is not stored, and that output styles and CLAUDE.md do not govern the summary.
- Documentation of the controls. From the binary:
showThinkingSummaries(documented) switches to full thinking summaries plus these updates.--thinking-display omitted(hidden from--help) hides reasoning but does not stop the updates on Fable 5.1.CLAUDE_CODE_THINKING_DISPLAY_UPDATES=false(not documented anywhere) is the only setting that stops the header and keeps the interim text as text.
What Should Happen?
Interim messages stay as text blocks in the terminal and in the session file. If a summary is shown, it is shown next to the original, not instead of it. The behavior, the "summarized" hint, and the controls are documented, with a changelog entry for the version that introduced it.
Document the feature in the interactive-mode or model-config pages: what the "summarized" hint means, that it is on by default for Fable 5.1, that the original interim text is replaced rather than kept, and how to turn it off. Add a changelog entry for the version that introduced it. Consider keeping the original text in the session file next to the summary, so that resumed sessions and transcript readers do not lose it.
Error Messages/Logs
No error output. The session file stores the affected messages as:
{"type": "thinking", "thinking": "<API-written summary>", "signature": "<narration-tagged>"}
with no accompanying {"type": "text"} block for the original message.
Steps to Reproduce
- Start an interactive session with
claude, select Fable 5.1 with/model, and ask for a task that needs several tool calls. - Observe lines between tool calls that end in "summarized".
- Open the session file under
~/.claude/projects/<project>/and look at the assistant entries around those lines: only athinkingblock with anarration-tagged signature is stored, notextblock. - Repeat with Opus 5. The lines do not appear, and the interim text is stored as
textblocks.
For comparison, seven earlier sessions on Opus 5 (versions 2.1.224 to 2.1.252) contain no narration-tagged blocks. The first session on Fable 5.1 contains 19 of them, starting at the first turn.
Non-interactive runs are not affected: claude -p --output-format stream-json --verbose on Fable 5.1 keeps every interim message as a text block, with or without the environment variable, because the header is only attached in interactive sessions.
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
Not applicable. The behavior appears with the model, not with a Claude Code version: sessions on Opus 5 with the same versions are unaffected.
Claude Code Version
2.1.258 (Claude Code); first observed on 2.1.257
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Model: claude-fable-5-1. Terminal: Kitty. Install: Homebrew cask claude-code@latest. Observed on Claude Code 2.1.257 and 2.1.258.
- No
showThinkingSummariessetting, noCLAUDE_CODE_THINKING_DISPLAY_UPDATESvariable, no--thinking-displayflag set
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗