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%

Status Open
Reported on v2.1.209
Maintainer reply None cached
Activity 2 comments · opened Jul 17, 2026

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-8 with 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗