Usage panel: Cost disagrees with the Breakdown shown beside it, and with its own token counts
Claude Code on the web (Chrome 153, macOS). In the session usage panel, the Cost figure is not consistent with the per-model Breakdown rendered directly beneath it, nor with the token counts in that Breakdown. Three observations, one session, subscription plan:
1. One card contradicts itself. The header reads Cost $198.49; the Breakdown immediately below totals $42.82 + $4.22 = $47.04. Same card, same session, same moment.
2. Cost moves while the token rows stand still. Two readings about three minutes apart, across a context compaction. All four token rows byte-identical — Input 226, Output 1.2k, Cache read 26.1M, Cache write 129.8k — while Cost went $51.71 → $89.94.
3. Same again from the panel's own copy-to-text button, so this is not a misread screenshot:
Session:
- Opus 5: 52 in / 241 out / 5.4M cache read / 44.4k cache write
- Cost: $100.06 | API 73m | Wall 16m
Session:
- Opus 5: 52 in / 241 out / 5.4M cache read / 44.4k cache write
- Cost: $148.97 | API 0m | Wall 2m
Identical token rows; Cost rose by $48.91 while the elapsed-time fields reset.
The tokens shown do not produce the cost shown, and the factor is not constant. Pricing the panel's own numbers at published API rates gives $9.5–11.4 against the $42.82 printed beside them (≈4×), and $2.98–3.15 against $100.06 (≈33×). The range in each is only the cache-write TTL, which the panel does not state. A units mismatch or a stale rate table would give one factor in both cases, so neither explains this.
Control. The cost-state records Claude Code writes into the session transcript are internally consistent: recomputing their modelUsage token counts at published API rates reproduces their own totalCostUSD to the last digit. So the transcript's accounting checks out; it is the panel that does not agree with itself.
Ask. Which figure is authoritative, and what is Cost computed from? If it is a rollup over a window or a scope other than the session displayed, saying so in the UI would resolve this entirely — right now the only way to find out is to price the transcript by hand.
---
_Generated by Claude Code_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗