Claude Code now spots server-tagged narration thinking, but the display change stays off by default.
Narration detection and per-request counting run for everyone; the "(summarized)" rendering sits behind a gate that is off by default.
tengu_sable_thrush On for this account, and not off by defaultThe flag server returned on for the one account this site reads, and nothing in this release compiles it off by default. The compiled default is shown below, and says which it is when we cannot read one: a fifth of gates compile in a string or a number rather than on or off, and most published releases have no gate table behind them at all. No client can see what the server returns for your account.
This account: on · anonymous baseline: on · compiled default in v2.1.240: on
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's wrong with this entry?
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.
- 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_THRUSHset true or the remotetengu_sable_thrushgate 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.
narration_classifier_error, "aria-label": "summarized:", (summarized)
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.241
Clearer wording for clearing the thinking display override
Both mention thinking display
-
v2.1.241
Narration gate state now reported to the VS Code extension
Both mention sable thrush