Prompt intermittently sent doubled (exact 2x conversation prefix, cache_read=2.00x prev) since v2.1.209 — hidden request burns quota, pins context meter at 100%
Summary
Starting with CLI v2.1.209 (first isolated occurrence on v2.1.207), the CLI intermittently sends a request whose prompt is exactly 2x the current conversation — the entire conversation prefix appears to be assembled twice. Usage data shows the doubled prefix is almost fully cache-hit at the visible request, which implies an additional hidden API request (not logged in the session transcript) sent the same doubled prompt seconds earlier and paid a full-size cache_creation for the duplicated half.
Each event transiently pins the context meter at 100% (one request exceeded the 1M window at 1,368,371 tokens), then the next request returns to the normal size. No conversation content is lost, but usage consumption spikes hard — I hit my 5-hour session limit twice in two days, both within minutes of a doubling spike.
Environment
- Claude Code CLI: 2.1.209 / 2.1.210 / 2.1.211 (regression window; v2.1.186–2.1.206 clean, see table below)
- OS: Windows 11 + WSL2 Ubuntu
- Model:
claude-opus-4-8with 1M context - Subscription usage (not API key)
- Long-running agentic coding sessions (typical steady-state context 400–700K)
Evidence 1 — usage signature of a doubling event
Deduplicated assistant-turn usage from the session transcript (input + cache_read + cache_creation = prompt size of that request). Session 5f062b94, 2026-07-17 (UTC):
07:04:58 total= 680,405 cache_read= 678,193 cache_creation= 2,211 <- normal
07:05:43 total= 682,886 cache_read= 680,404 cache_creation= 2,480 <- normal
07:05:58 total=1,368,371 cache_read=1,366,375 cache_creation= 1,992 <- JUMP (2.004x)
07:17:57 total= 686,353 cache_read= 683,491 cache_creation= 2,860 <- back to normal
All 6 events in this session share the same signature: at the jump turn, cache_read ≈ 2.00–2.03x the previous request's total, with negligible cache_creation:
02:19:22 215,144 -> 452,985 (cache_read = 2.021x prev total)
02:48:50 357,374 -> 718,738 (2.004x)
05:04:04 400,300 -> 836,279 (2.035x)
05:43:03 546,218 -> 1,100,857 (2.007x)
05:57:04 567,154 -> 1,163,075 (2.021x)
07:05:58 682,886 -> 1,368,371 (2.001x) <- exceeds the 1M window
Because the doubled prefix was read from cache (not created) at the visible request, an identical ~2x prompt must have been sent by a prior request within the cache TTL. No such request appears in the transcript (no extra assistant entries, no error entries, no retry markers), so it is a hidden request — it silently paid cache_creation ≈ conversation size for the duplicated half.
Evidence 2 — clean version regression
Scanned 49 session transcripts across two projects (jump = request/prev ratio 1.7–2.4 with prev > 50K and drop-back after):
| CLI version | dates | sessions | doubling events |
|---|---|---|---|
| 2.1.186 – 2.1.206 | 06-23 – 07-12 | 40+ | 0 |
| 2.1.207 | 07-13 – 07-14 | 9 | 1 (first occurrence, same 2.01x cache_read signature) |
| 2.1.209 – 2.1.211 | 07-15 – 07-17 | 6 | 23 — every session affected (7, 4, 1, 4, 2, 6 events) |
Evidence 3 — no correlation with other subsystems (ruled out)
- Subagents: the worst-affected session has 0 Task calls and 0 sidechain entries.
- Hooks: reproduced with hooks that write nothing to stdout; also reproduced timing-wise before the hook tool was installed.
- remote-control/bridge: 7 older sessions with bridge active (≤ v2.1.207) show 0 events.
- Queued messages / interrupts / API errors: no common pattern in the ±5 min timeline around the 23 events; jumps occur mid-tool-loop during ordinary agentic work.
- Not auto-compact: no compact boundaries/summaries anywhere; conversation continues normally.
Impact
Per event at conversation size C, the excess is roughly:
- hidden request:
cache_read ≈ C+cache_creation ≈ C(the expensive part, at 1.25x — and at the >200K long-context premium these sessions are always in) - visible request: extra
cache_read ≈ C
≈ 10–14 normal turns' worth of quota consumed per event. Over 07-15..17: 23 events, Σ(prev context) ≈ 7.6M tokens → estimated ~22M input-equivalent tokens of excess (roughly +25–35% per day on top of legitimate usage), most of it invisible to the user because the hidden request is not in the transcript.
Concrete result: hit the 5-hour session limit on both 07-16 (03:25 UTC) and 07-17 (06:11 UTC); the 07-17 limit landed 14 minutes after a 1.16M-token doubling spike (5 events in that 5-hour window).
Repro
No deterministic trigger found. Occurs 2–7 times per long session (multi-hour, >200K context) on v2.1.209+, roughly every 30–120 minutes of active agentic work. Affected sessions available on request (session IDs: 6c4a5cab, ba36f3a8, 44a3584f, f39c6ea4, dd8d569f, 5f062b94).
Expected
The prompt for each request should contain the conversation once; no hidden requests should re-send it doubled.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗