Disproportionate subscription usage burn in long sessions: cache TTL expiry re-writes + no usage attribution in /usage

Open 💬 2 comments Opened Jul 12, 2026 by antonio-avantic

Usage consumption report — session c4ecb168-70cc-43aa-af5c-d8ccfe4bcadd

Summary: ~15% of my session usage limit was consumed in ~2 hours during which I sent only a handful of short messages, and another jump to ~50% followed with near-zero interaction. Token ledger from local logs (~/.claude/projects/*/c4ecb168*.jsonl) explains the mechanics, but the resulting burn rate feels disproportionate for a subscription user.

Measured (last 6h, single session, model claude-fable-5, 173 API calls):

| hour (local) | calls | input | output | cache_write | cache_read |
|---|---|---|---|---|---|
| 17h | 51 | 36,581 | 68,420 | 1,423,501 | 17,022,244 |
| 18h | 28 | 4,040 | 20,142 | 1,198,250 | 10,070,714 |
| 19h | 34 | 25,354 | 48,681 | 482,929 | 13,843,698 |
| 22h | 37 | 1,170 | 38,571 | 529,647 | 16,541,872 |
| 23h | 23 | 29,404 | 27,741 | 129,420 | 4,352,757 |
| Total | 173 | 96,549 | 203,555 | 3,763,747 | 61,831,285 |

What drove it (as analysed in-session):

  1. Long-running session (~450k-token context pre-compact). Every tool round-trip re-reads the full context; 60 calls in 22h–23h alone ≈ 20.9M cache-read tokens from ~6 short user messages.
  2. Prompt cache TTL of 5 minutes: idle gaps between messages expire the cache, forcing full context cache re-writes (3.76M tokens at 1.25× pricing across 6h) — the user pays a premium for pauses.
  3. Cache reads, though discounted, still count toward the usage limit; at this context size the discount doesn't prevent rapid quota depletion.
  4. /compact itself consumed a large one-time chunk (full-transcript summarisation pass).

User impact / feedback:

  • The usage meter offers no attribution — the user saw 32% → 47% → 50% with "nothing open" and no way to tell what consumed it. Per-session or per-cause breakdown in /usage would prevent this alarm.
  • Charging premium cache re-writes because the user paused for 5 minutes punishes normal interactive usage in long sessions.
  • Suggestion: surface a warning when a session's per-turn cost crosses a threshold (e.g. "this conversation now costs ~450k tokens per message — consider /compact or a new session").

Plan: Claude subscription (Fable 5 access). Date: 2026-07-12. Platform: Claude Code CLI, macOS.

View original on GitHub ↗

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