Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.240 ·

Server-tagged "narration" thinking blocks, counted now and rendered as "(summarized)" later

Claude Code now spots server-tagged narration thinking, but the display change stays off by default.

Nothing to try yet No documentation found In Development
JSON All of v2.1.240
Nothing to try yetTier: how much it should matter to you
2Useful: my rating, 1 to 5
4Signal: worth watching, 1 to 5
Thinking DisplayArea: what it touches
In DevelopmentKind: in v2.1.240,
What probably matters to youSection of the release

Narration detection and per-request counting run for everyone; the "(summarized)" rendering sits behind a gate that is off by default.

What

Claude Code can now tell whether the model's thinking block was tagged by the server as narration, by decoding the block's cryptographic signature and looking for the literal string narration inside it. The count of such blocks per request is reported for everyone on this build. The display changes that depend on it are held behind a gate that is off by default, so on a stock build thinking still renders exactly as before.

Details
  • The classifier caches its result per block, so each block is decoded once.
  • Decode failures are swallowed silently and reported once as narration_classifier_error.
  • The telemetry field counting narration blocks per request existed in 2.1.239 but was wired to a check hardcoded to return nothing, so it never reported; it is now wired to the real check and has no gate.
  • The display-side check additionally requires CLAUDE_CODE_SABLE_THRUSH set true or the remote tengu_sable_thrush gate to be on, with the in-binary fallback off, and it also requires the server to actually be tagging blocks.
  • With the gate on, the main message renderer prints a dimmed, italic (summarized) label above the trimmed thinking text instead of the reasoning itself, the live thinking pane blanks out for such blocks, and a reply whose first block is narration counts as having visible content.
  • Screen readers get a dot column labelled summarized: in place of the visual label.
  • Each of the three display sites checks the classifier helper is present before calling it, so those paths stay inert if it is absent.
Evidence

narration_classifier_error, "aria-label": "summarized:", (summarized)

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Read from
Names in the bundleCLAUDE_CODE_SABLE_THRUSH
Feature flag
tengu_sable_thrush Off by default, switched on for this account

The shipped code defaults this off, and the flag server returned on for the one account this site reads on this version. That is the reading that makes the entry above worth a second look, and it still says nothing about your account.

This account: on · anonymous baseline: on · compiled default in v2.1.240: off

Read once, for one account on one subscription tier, against v2.1.240. It isn't a statement about your account. What a flag value here can and cannot tell you

What has happened since
Flag reading moved The flag server now returns on for tengu_sable_thrush, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns nothing at all, having stopped carrying it for tengu_sable_thrush, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.

See this across every release →

How sure we are
One source agreesOne thing we can check says the same as this entry.
The name it cites is new in this buildNew in this build: tengu_sable_thrush

See this entry in the whole of v2.1.240 →

Feedback