User: @dui_toledo (Max 20x / $200 plan)
Models in dataset: claude-opus-4-5 (Jan 20 – Feb 5) → claude-opus-4-6 (Feb 6 → present), reasoning effort high throughout. Both share the same price tier ($5 / $6.25 / $0.50 / $25 per MTok).
Timezone: UTC-3 (BRT, São Paulo)
Original report: 2026-04-06 (since corrected — see below)
Latest revision: 2026-04-07 evening (added $-cost view, then found a second over-count bug — duplicate streaming chunks + cross-file replication. Numbers are now ~14x lower than the prior revision.)
-
Non-recursive glob (found Apr 6). The scanner used
Path.glob("*.jsonl")(non-recursive) on each project directory. Subagent sessions live in<project>/<parent-session-id>/subagents/agent-*.jsonlsubdirectories, which were silently skipped. Fixed by switching torglob("*.jsonl"). This made the dataset look ~30x larger. -
No deduplication of repeated message logs (found Apr 7 evening). Two distinct duplication patterns existed:
- Streaming chunks within a file. Claude Code logs each streaming response in 2–3 entries per file. Each entry carries the full input / cache_create / cache_read totals, and only the output count grows across chunks. Naively summing every line over-counts input/cache 2–3x.
- Cross-file replication. Sprint subagents share conversation history — the same
msg_id(samerequest_id, identical usage) appears in 2–6 sibling subagent files because each persistent agent keeps its own local transcript. Auto-compaction subagents (agent-acompact-*.jsonl) also copy parent messages verbatim.
Both fixed by deduplicating globally on
msg_id, keeping the final-streaming-chunk entry per id. This compresses the dataset by another ~9x on top of the rglob fix.
The first revision reported $58,081 of API list value over 78 days. The corrected number is $4,079 — about 14x lower. The 5-hour cap that previously appeared to fire at "$3,000 of API value" actually fires at ~$200. Apologies to anyone who saw the inflated version; the real picture is much more grounded.
Verified against platform.claude.com/docs/en/docs/about-claude/pricing on 2026-04-07.
| Token type | Rate | Multiplier vs base |
|---|---|---|
| Input | $5.00 / MTok | 1x |
| 5-min cache write | $6.25 / MTok | 1.25x |
| Cache read (hit) | $0.50 / MTok | 0.10x |
| Output | $25.00 / MTok | 5x |
| Metric | Value |
|---|---|
| Active 5-hour windows | 94 |
| Unique API calls (deduped) | 55,485 |
| Total raw tokens | 5.42 B |
| ↳ input | 1.24 M |
| ↳ cache write | 184.4 M |
| ↳ cache read | 5.22 B |
| ↳ output | 12.35 M |
| Estimated API list value | $4,079 |
| Subscription paid | $200/mo × ~2.6 months ≈ $520 |
| ROI vs list price | ~7.8x |
Cache reads dominate the bill: ~$2,612 of the $4,079 (64%) comes from cache_read tokens at $0.50/MTok. Even at the 0.1x weighting of the 5h budget, they're the binding cost driver.
| Rank | Date | Day | Window (BRT) | Active | Msgs | Total | $ value | Notes |
|---|---|---|---|---|---|---|---|---|
| 1 | Mar 21 | Sat | 08:00–13:00 | 4h18 | 5,273 | 653.3 M | $482 | promo (2x off-peak) |
| 2 | Mar 28 | Sat | 10:00–15:00 | 4h59 | 3,659 | 469.1 M | $322 | promo (last day) |
| 3 | Apr 03 | Fri | 16:00–21:00 | 2h09 | 2,858 | 267.0 M | $194 | ← LIMIT HIT |
| 4 | Apr 06 | Mon | 19:00–00:00 | 2h12 | 2,189 | 243.1 M | $190 | indicator hit 79% (no cap fire) |
| 5 | Apr 02 | Thu | 20:00–01:00 | 2h44 | 2,310 | 242.0 M | $189 | |
| 6 | Mar 23 | Mon | 15:00–20:00 | 2h57 | 2,124 | 221.3 M | $181 | promo |
| 7 | Mar 23 | Mon | 20:00–01:00 | 2h44 | 2,026 | 237.6 M | $169 | promo |
| 8 | Apr 04 | Sat | 12:00–17:00 | 4h59 | 2,552 | 233.6 M | $155 | |
| 9 | Mar 30 | Mon | 17:00–22:00 | 2h56 | 1,950 | 177.9 M | $141 | post-promo |
| 10 | Mar 13 | Fri | 15:00–20:00 | 2h13 | 2,006 | 185.5 M | $141 | promo (day 1) |
| 11 | Mar 24 | Tue | 21:00–02:00 | 2h15 | 1,335 | 163.6 M | $124 | promo |
| 12 | Mar 24 | Tue | 16:00–21:00 | 2h00 | 1,700 | 170.1 M | $124 | promo |
| 13 | Apr 02 | Thu | 15:00–20:00 | 1h55 | 1,744 | 135.0 M | $103 | |
| 14 | Mar 21 | Sat | 13:00–18:00 | 2h00 | 887 | 136.6 M | $103 | promo |
| 15 | Apr 01 | Wed | 19:00–00:00 | 4h06 | 1,388 | 120.1 M | $95 | |
| 16 | Mar 26 | Thu | 18:00–23:00 | 4h59 | 1,362 | 116.6 M | $95 | promo |
| 17 | Apr 01 | Wed | 14:00–19:00 | 1h49 | 1,446 | 117.8 M | $94 | |
| 18 | Jan 21 | Wed | 19:00–00:00 | 4h40 | 1,582 | 134.6 M | $93 | pre-promo |
| 19 | Feb 19 | Thu | 23:00–04:00 | 2h07 | 1,262 | 101.2 M | $75 | pre-promo |
| 20 | Apr 04 | Sat | 17:00–22:00 | 2h16 | 1,001 | 94.1 M | $62 | |
| 21 | Feb 11 | Wed | 20:00–01:00 | 2h48 | 1,081 | 90.1 M | $61 | pre-promo |
| 22 | Feb 12 | Thu | 21:00–02:00 | 3h29 | 1,054 | 79.2 M | $61 | pre-promo |
| 23 | Jan 20 | Tue | 18:00–23:00 | 4h25 | 881 | 76.7 M | $54 | pre-promo |
| 24 | Mar 13 | Fri | 20:00–01:00 | 4h08 | 593 | 67.2 M | $52 | promo |
| 25 | Feb 17 | Tue | 16:00–21:00 | 2h15 | 739 | 66.5 M | $47 | pre-promo |
Two sessions in the dataset hit (or approached) the cap:
| Date | Window | Total tokens | $ list value | Indicator observation |
|---|---|---|---|---|
| Apr 03 | Fri 16:00–21:00 BRT | 267 M | $194 | cap fired at end of window |
| Apr 06 | Mon 19:00–00:00 BRT | 243 M | $190 | indicator reached 79%, no cap fire |
Largest non-capped post-promo window: Mon Mar 30 @ $141 (clearly under). Largest non-capped pre-promo window: Thu Feb 19 @ $75. Largest promo window: Sat Mar 21 @ $482 (about 2.5x the post-promo cap, consistent with "2x off-peak promo" plus headroom).
Cross-fitting against the live Settings → Usage percentage on Apr 6 (the user observed 49% → 55% → 67% → 79% during the 19-00 BRT window):
- Final window value: $190 raw
- If 79% indicator corresponds to
$190 of value (i.e. 79% read at the END of the window), the implied 100% cap is **$240** - If 79% was midway and more spend followed, the cap is closer to $200
The 5-hour session cap therefore appears to fire somewhere between $190 and $240 of API list value per window, equivalent to roughly 220–280 M effective-weighted tokens. This is much lower than the previous (over-counted) estimate of $3,000.
Three things lined up on Apr 3:
- High concurrency. ~80 distinct subagent files in this window (down from "353" in the bad-data version, which counted each subagent file 4-5x via worktree replicas). Each spawned agent has its own initial cache_creation cost and growing context history.
- Aggregate cache_read volume. 258.6 M cache_read tokens in 2 hours, at $0.50/MTok = ~$129 of cache reads alone.
- No idle gaps long enough to amortize. Median message gap during sprint runs was ~3 seconds; max ~30 minutes; nothing long enough for cache TTLs.
The session bucket measures fan-out × duration × cache reuse intensity, weighted by API price tiers. Apr 3 maxed all three.
Mar 21 Sat 08-13 burned $482 during the Mar 13-28 promo window — about 2.5x the post-promo cap of ~$200. The earlier (over-counted) version of this report showed $22,718 for the same window and forced a "the cap was disabled during promo" hypothesis.
With correct dedup:
- Mar 21 ($482) — fits a ~2.5x off-peak promo bump cleanly
- Mar 28 ($322) — fits a 1.6x bump
- Mar 23 ($181), Mar 24 ($124, $124) — well under the post-promo cap
- Mar 30 (post-promo, $141) — well under
The pattern is consistent with a stable cap that was raised by ~2-2.5x during promo for off-peak hours, then returned to normal afterward. No need for a "cap was unenforced" hypothesis.
Original framing (Apr 6 morning, retracted):
"Apr 3 was the lowest-volume window to ever trigger a usage limit"— wrong, depended on the rglob bug.
Revised framing (Apr 6 evening, ALSO retracted):
- ~~"Apr 3 burned ~$3,632 of API value"~~ — wrong, depended on counting streaming chunks and cross-file replicas as distinct calls.
- ~~"Cap fires at ~$3,000 of value"~~ — wrong, was 14x over.
"112x ROI vs subscription"— wrong, was 14x over."The promo period had the cap effectively disabled"— wrong, the gap was 2-2.5x, not 7-15x.
Current best understanding (Apr 7 evening):
- Apr 3 burned ~$194 of API list value over 2h09m of active sprint usage
- 5-hour session cap fires at ~$200-240 of API list value
- Promo cap was ~2-2.5x the post-promo cap (fits the announced "2x off-peak" promo)
- Total dataset is ~$4,079 of API list value over 78 days = ~$52/day average on active days
- ROI vs $200/month subscription is ~7-8x (still very good, but not "crazy")
- Scan all
~/.claude/projects/**/*.jsonlfiles recursively - Extract assistant message timestamps +
usagefields (input, cache_creation, cache_read, output) - Dedupe by
msg_idglobally across all files. Within a file, keep only the LAST entry per msg_id (the final streaming chunk has the complete output count). Across files, the first occurrence wins. - Bucket by 5-hour window, anchored from a known reset (Apr 6 22:00 UTC)
- Compute $ value at Opus 4.5/4.6 list prices
For one msg_id picked at random (msg_01PTaHVkaETBU8LARbjQtuMK, a Mar 21 sprint subagent message), the same request_id, same timestamp, and identical usage (in=3 cawr=12967 card=6696 out=2) appeared in 6 different subagent files across two sibling worktrees. Anthropic billed for that response once; my prior summation counted it 6 times.
For another msg_id (msg_012CNYvQ9u7jLWse), three entries in the same file appeared within 1 second of each other, with the same request_id and identical input/cache totals — but output_tokens grew from 4 → 4 → 206 across the three. This is a streaming response logged in 3 chunks; only the final entry should be counted.
- CLI version: 2.1.x
- Plan: Claude Max 20x ($200/mo)
- Models in dataset: claude-opus-4-5 (Jan 20 – Feb 5) → claude-opus-4-6 (Feb 6 → present), reasoning effort: high
- Subagent helper model: claude-haiku-4-5 (small fraction of messages)
- Token source:
~/.claude/projects/**/*.jsonl(recursive, deduped on msg_id) - Live caps observed Apr 6:
- Session (5h): ~$200 of API list value, ~220–280 M effective weighted tokens
- Weekly (all models): not yet remeasured under corrected dedup; original "1.57B / 21%" reading is suspect for the same reason
- Sonnet only: separate bucket, untouched
- Promo period: Mar 13–28, 2026 — 2x off-peak usage. Apparent cap raised by ~2-2.5x during promo for off-peak hours.