{"version":"2.1.240","anchor":"server-tagged-narration-thinking-blocks-counted-now-and-rend","canonical_anchor":"server-tagged-narration-thinking-blocks-counted-now-and-rend","heading":"Server-tagged \"narration\" thinking blocks, counted now and rendered as \"(summarized)\" later","tier":"soon","area":"Thinking Display","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.240\/e\/server-tagged-narration-thinking-blocks-counted-now-and-rend","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.240","markdown":"### Server-tagged \"narration\" thinking blocks, counted now and rendered as \"(summarized)\" later\n\nClaude Code now spots server-tagged narration thinking, but the display change stays off by default.\n\n**What**\n\nClaude 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.\n\n**Details**\n\n- The classifier caches its result per block, so each block is decoded once.\n- Decode failures are swallowed silently and reported once as `narration_classifier_error`.\n- 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.\n- 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.\n- 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.\n- Screen readers get a dot column labelled `summarized:` in place of the visual label.\n- Each of the three display sites checks the classifier helper is present before calling it, so those paths stay inert if it is absent.\n\n**Evidence**\n\n`narration_classifier_error`, `\"aria-label\": \"summarized:\"`, `(summarized)`\n\n- Flag `tengu_sable_thrush`: Off by default, switched on for this account (read for one account on one subscription tier against v2.1.240; this account: on, anonymous baseline: on, compiled default: off)\n- Area: Thinking Display\n- Names: `CLAUDE_CODE_SABLE_THRUSH`\n- Tier: Nothing to try yet\n- Useful: 2\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}