[FEATURE] Let me keep thinking blocks expanded longer after streaming ends
What I'm asking for
A setting (e.g. thinkingDisplayDurationMs in settings.json, or an env var) that controls how long an expanded extended-thinking block stays visible after streaming ends, before it collapses to the one-line ∴ Thinking (ctrl+o to expand) indicator.
My typical use case: I'd set this to ~10 minutes so the most recent thinking block stays readable while I review the response and the diffs it produced. 0 would let users who prefer the opposite collapse it immediately. The current behavior would remain the default if the setting is unset.
Behavior I'm seeing
While the model is thinking, the full thinking text streams in and is fully readable. After streaming completes, the block stays expanded for a short window — in my testing about 30 seconds — and then collapses to a single dim line. From that point on the content is only reachable via ctrl+O.
For longer reasoning chains 30 seconds is well below the time it takes me to actually finish reading, especially when I look away to a diff or another window for a moment.
Why I want this
- Finish reading. Extended thinking on harder turns is several paragraphs. By the time I've read the response and want to scroll back up to recheck the reasoning, it's already gone.
- Glanceable context while reviewing the answer. Keeping the last turn's thinking visible alongside the response is more useful than having to swap into transcript mode to retrieve it.
- Catch misunderstandings. A lot of the value of visible thinking is noticing "wait, the model misread my prompt" — but that judgment usually comes after I've read the response, by which point the thinking is already collapsed.
(A symmetric "set it shorter / to zero" use case probably exists too — making the duration configurable handles both ends with one knob.)
What today's options don't cover
ctrl+O(transcript mode): opens a separate scrollable view, but in my experience it only un-collapses the most recent thinking block of the current turn — earlier thinking from the same session stays hidden. And switching screens just to re-read what was on screen 40 seconds ago is heavy.--verbose/"verbose": true: keeps all thinking blocks expanded permanently, but it also expands tool-result output (Bash stdout, file reads, grep results, etc.). On longer sessions that becomes a wall of text that buries the thinking I was trying to keep visible — net negative.- Click-to-expand on individual messages: works for some message types (collapsed read/search groups, advisor results) but doesn't seem to apply to thinking blocks themselves.
showThinkingSummaries: this looks like an API-level control (whether thinking summaries come back from the API at all) rather than a rendering-time control, and there are ongoing reports it doesn't reliably take effect (#48065). Either way, it doesn't change how long an already-rendered thinking block stays expanded.
So there's a real gap between "see thinking briefly" (default, ~30s) and "see everything verbose forever" (--verbose). Letting users dial the duration would land in the middle.
Related, but distinct
- #30660 — real-time streaming of thinking (largely shipped). Comments there mention "thinking can get lost in the transcript stream" and "sitting blind for 30–50 seconds" — same underlying frustration, but my request is specifically about the post-streaming visibility window, which #30660 doesn't cover.
- #36006 — collapsed-by-default with a toggle. Today's
∴ Thinking+ctrl+Ois roughly that design; this request is about making the toggle's auto-trigger configurable. - #48065 —
showThinkingSummariesbug. Different layer (API content vs. UI duration); included so it's clear I'm not asking for a duplicate.
Suggested shape (open to alternatives)
// ~/.claude/settings.json
{
// My ask: keep last turn's thinking readable for 10 min.
"thinkingDisplayDurationMs": 600000
// Other reasonable values:
// 0 collapse immediately
// 30000 current default behavior (explicit)
// omitted preserve current default
}
Equivalently an env var like CLAUDE_THINKING_DISPLAY_MS would work. Naming is bikesheddable; the underlying ask is just a knob.
Thanks!
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗