TL;DR
(summarized)is not trimmed thinking. It is a separate block, it arrives glued to the tool calls, and it shows withoutCtrl+O. Read it as the last warning before Claude executes and hitEscright there if the plan it describes is not yours. In practice it only turns up on Fable 5. If you would rather not see it,CLAUDE_CODE_SABLE_THRUSH=0in yoursettings.jsonenvblock puts it back to plainThought for Ns.
One day a gray line shows up mid-task, the word (summarized) in front of it, and underneath a sentence telling you what Claude is doing. It doesn't always appear. It doesn't appear in every session. And it is not in the release notes.
A few months ago I wrote that Claude Code hides its reasoning by default and that getting it back takes two settings, not one. I still think hiding it was a product mistake: when you see nothing for ninety seconds, the wait stretches and the tool feels slower than it actually is. This fixes some of that, with an irony on top. The one model that bothers to tell you where it is happens to be Fable 5, the fastest of the lot. Exactly the one that needed it least.
What it actually is
Claude reasons on the inside, then turns around and tells you in one sentence what it is going to do, and then does it.
That is not a metaphor, it is the literal structure of the message. The reasoning blocks the API returns carry a signature, and inside that signature sits the block's kind. Nearly all of them say thinking. A few say narration, and those are the ones Claude Code paints with the (summarized) label.
The practical difference is render order. The narration block is drawn before the check for verbose or transcript mode. Ordinary thinking blocks go through that check, which is why they vanish. Same configuration, two different fates.
I decoded the signature on 27,809 blocks from my own sessions: 22,914 say thinking, 4,599 say narration, and 296 of the oldest no longer decode. Those 4,599 always land in the same place. Of the 4,598 messages containing one, 4,597 end in a tool call, and 94.8% carry an ordinary hidden reasoning block ahead of them inside the same message.
What it looks like
⏺ (summarized)
Artifact reposted (16 of 115 fixed). I'm doing a final simplicity pass and
noticed the `RunEvals` method is still called `mentorCostSummary` even though
it now prints ledger cost, so I'll rename it to match what it actually does.
⏺ Edit(evals/run_evals.go)
└ Ran 1 edit
It tells you first. It executes second. That gap is all you need.
How it differs from thinking
This is not the same text shown a different way. They are two distinct things sharing one message.
| thinking | (summarized) |
|
|---|---|---|
| Kind in the signature | thinking |
narration |
| What it takes to see it | Ctrl+O or verbose, plus showThinkingSummaries |
nothing, it shows on its own |
| Median length | 545 characters | 173 |
| Longest I have seen | 30,851 characters | 715 |
| Written in my language | 2% | 77% |
| Where it lands | wherever | glued to the tool calls |
That 2% against 77% is the real difference. Thinking is Claude reasoning with itself, and it reasons in English whatever language you write in. The narration is written for you, in your language, in the first person.
You will only see it on Fable 5
Of the 4,599 narration blocks in my transcripts, 4,551 came from Fable 5, close to a third of everything that model thinks. The other 48 came from Opus 4.8 and arrived empty, all 48 of them, so they never painted anything: the renderer requires non-empty text.
| Model | Narration blocks |
|---|---|
| Fable 5 | 4,551 (29.7% of its blocks) |
| Opus 4.8 | 48, all empty |
| Opus 5 | 0 |
| Sonnet 5 | 0 |
| Opus 4.7 | 0 |
| Haiku 4.5 | 0 |
That is roughly 8,500 thinking blocks across those last four models without a single narration among them. It is a census of my own usage rather than a list Anthropic published, but the pattern leaves little room.
How to read it
1. Configure nothing. If your account has it switched on, it appears by itself. No verbose, no Ctrl+O.
2. Read it when it lands. One sentence, two seconds. It tells you where Claude is and what comes next.
3. Decide right there. If the plan it describes is not yours, hit Esc before the tools run. That is the one moment when interrupting costs nothing, because nothing has been touched yet.
How to switch it off
If it gets in your way, in ~/.claude/settings.json:
{
"env": {
"CLAUDE_CODE_SABLE_THRUSH": "0"
}
}
At 0 the block disappears entirely and the message collapses back to the usual line:
Thought for 5s
⏺ Done.
At 1 it forces the opposite, in case your account has not been switched on yet. With the variable unset, Anthropic's rollout decides. There is no equivalent setting in settings.json outside the env block.
Reference
| Aspect | Detail |
|---|---|
| What it is | A reasoning block whose signature carries the kind narration |
| On-screen label | (summarized), in gray |
Visible without Ctrl+O |
Yes, unlike ordinary thinking |
| Position | Last piece of the message before the tool calls |
| Model | Fable 5 in practice |
| Language | Yours (77% of mine in Spanish) |
| Turn it off | CLAUDE_CODE_SABLE_THRUSH=0 |
| Turn it on | CLAUDE_CODE_SABLE_THRUSH=1 |
| Cost | These are thinking tokens, a few dozen per block |
| First recorded | 2026-06-09, v2.1.170 |
If what you want is the full reasoning rather than this one sentence, that is a different pair of settings, and reading it live turns you into a real-time reviewer. And if what you are after is controlling how much it reasons, most of those knobs are not connected to anything.
No official docs: this appears neither in Claude Code's What's New nor in the documentation. The closest page is Model configuration, which covers ordinary thinking and never mentions these blocks.
Requirements
- Tested on Claude Code v2.1.246, with blocks recorded as far back as v2.1.170
- A session on Fable 5
- The rollout does not reach every account at once; the environment variable is how you force it either way