Usage panel: Cost disagrees with the Breakdown shown beside it, and with its own token counts

Status Open
Maintainer reply None cached
Activity 2 comments · opened Sep 21, 2026

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_

View original on GitHub ↗

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