"almost done thinking" spinner text is a wall-clock guess and stays shown for minutes — stop asserting false progress
Feature request
The extended-thinking spinner escalates its status phrase on a hardcoded wall-clock ladder and, past 45 seconds, parks on "almost done thinking" and stays there indefinitely. The observed sequence:
| Elapsed thinking time | Phrase shown |
| --- | --- |
| 0–10s | thinking |
| 10s+ | still thinking |
| 20s+ | thinking more |
| 30s+ | thinking some more |
| 45s+ | almost done thinking (terminal rung — never advances) |
The only input to the phrase is elapsed wall-clock time (now - thinkingBurstStart). There is no model signal behind it — nothing about tokens produced, reasoning progress, or an actual estimate of remaining work. So "almost done thinking" is shown at 45 seconds and is still shown at 1 minute, 5 minutes, 15 minutes, or 20 minutes into the same burst.
It is extremely annoying to watch the UI claim "almost done" and then sit on that exact phrase for a minute, five minutes, fifteen, twenty. The label makes a promise about progress that the tool has no basis for and does not keep. A status line that asserts something demonstrably false, for minutes on end, is worse than a neutral one — it repeatedly sets and breaks an expectation on every long turn.
spinnerVerbs doesn't help here (it covers tool-execution verbs), and spinnerTipsEnabled gates the unrelated tips feature. There is currently no setting or environment variable to change or disable this phrase. Related: #48789 asks to hide/customize the "Thinking" label; this issue is narrower and about the misleading progress claim specifically.
Requested change (any one of these resolves it)
- Stop asserting "almost done." Replace the 45s+ terminal rung with wording that doesn't promise completion — e.g.
still thinking,thinking (Ns), or simply keep it atthinkingwith the existing elapsed-time counter that's already rendered alongside it. The elapsed counter already conveys "this is taking a while" honestly; the editorializing phrase adds nothing but a false promise. - Make the phrases configurable/disable-able, the way
spinnerVerbsalready works for tool verbs — let users replace or blank the thinking-status phrases (this would also close #48789). - If a progress-style phrase is kept, drive it from an actual signal (tokens emitted, or a real remaining estimate) rather than pure elapsed time, so "almost done" only appears when it's plausibly true.
Option 1 is the minimal fix and would remove the annoyance entirely.
Environment
- Claude Code 2.1.205
- macOS (Apple Silicon)
- Model: Opus 4.8, max effort (long thinking bursts are routine at this setting, so the 45s+ rung is hit constantly)
---
🤖 _Written with Claude Code AI assistance (Opus 4.8, max effort)_