cctop / Panel guide / Tokens & Cost
§2Tokens & CostNoteCache hit is green from 80 %, amber from 50 %, red below.
Tokens & Cost
Where every token went — cache read, cache write, fresh input, output and thinking — and what the session costs, live.
Cache read
reads as
cache read ▇▇▇▇▇▇▇ 1.62 M
- What it means
- The cheap tokens — read at roughly a tenth of the input price. The bigger this is as a share of the total, the less the session costs.
- What to do
- Read this next to the cache-hit ratio, not on its own — it's the numerator, not the whole health check.
- Measured
- tokens · from the transcript · exact · how
Cache write
reads as
cache write ▇▇▇ 148k
- What it means
- Written at 1.25×–2× the input price, and it happens whenever the prefix changed or the cache entry expired.
- What to do
- A big or repeated cache-write bill points straight at cache misses or cache expiry — check the coach.
- Advisor
- A01 Cache misses · A02 Cache expiry · A21 Warm model switch
- Measured
- tokens · from the transcript · exact · how
Fresh input
reads as
fresh in ▇ 24k
- What it means
- Uncached tokens billed in full, almost always a large paste or genuinely new content introduced this turn.
- What to do
- A spike here is usually a paste that could have been a file reference instead.
- Advisor
- A11 Pasted input
- Measured
- tokens · from the transcript · exact · how
Output
reads as
output ▇▇ 118k
- What it means
- What you pay for the model's replies, thinking tokens included.
- What to do
- Compare against thinking to see how much of the reply is reasoning versus visible text.
- Measured
- tokens · from the transcript · exact · how
Thinking
reads as
└ thinking ▇ 61k
- What it means
- Billed as output but never shown as text — a silent cost that's easy to miss.
- What to do
- A high thinking share on routine edits is a sign to drop the effort level for that kind of work.
- Advisor
- A08 Thinking share
- Measured
- tokens · from the transcript · exact · how
Cache hit ratio
reads as
cache hit 90 %
- What it means
- The single best proxy for whether this session is using prompt caching well. Green from 80 %, amber from 50 %, red below.
- What to do
- Sustained below 60 %? Something in the prefix is changing every turn — a hook or status line printing the time is the usual suspect.
- Advisor
- A01 Cache misses
- Measured
- ratio · from the transcript · exact · how
Cache TTL
reads as
cache TTL 1h
- What it means
- Your real budget for how long you can pause mid-session before the next request pays a full cold rewrite.
- What to do
- Pace batched questions to land inside this window rather than trickling them out past it.
- Advisor
- A02 Cache expiry · A19 Cache countdown · A30 Cold resume
- Measured
- enum · from the status line (after cctop install) · the transcript · ≈ without the shim · how
Cache warm
- What it means
prompt_cache.warm from the status line; else whether the last API call is younger than the observed TTL
- Measured
- bool · from the status line (after cctop install) · the transcript · ≈ without the shim · how
Cache expires in
- What it means
prompt_cache.expires_at − now, clock-driven between status rewrites; else last API call + observed TTL − now
- Measured
- ms · from the status line (after cctop install) · the transcript · ≈ without the shim, or when the status file is stale · how
Re-cache if cold
- What it means
prompt_cache.recache_tokens_if_cold: what the next call re-writes if the cache expires first
- Measured
- tokens · from the status line (after cctop install) · exact · how
Cache misses
- What it means
prompt_cache.misses with miss_causes (model_changed, tools_changed, messages_rewritten, ttl_expired_1h/5m, likely_server_side…) and expected_rebuilds
- Measured
- count · from the status line (after cctop install) · exact · how
Cost
reads as
≈ $4.37
- What it means
- What this session would cost at API list price, even on a subscription plan with no per-token bill.
- What to do
- Watch it alongside burn rate if you're trying to keep a session inside a budget.
- Measured
- USD · from Claude Code's own cost record · the transcript · the price table · ≈ when any part is estimated, or while the ledgers cover less than the responses · how
Combined cost
- What it means
- The session's whole spend — Claude Code's own ledger, which already holds the subagents' earlier calls, plus what cctop priced after it on both the main transcript and the agents. Panel 2's headline.
- What to do
- Read the breakdown line under it: `main`/`ledger` and `since` add up to the headline, `agents` says how much of it went to agents. `a` drops them from the figure.
- Advisor
- A48 Agent waste · A14 Subagent model choice
- Measured
- USD · from the transcript · the subagent's transcript · the price table · Claude Code's own cost record · ≈ when any priced part is non-zero · how
Cost by model
- What it means
- Splits spend by model — the number that matters once subagents are running on something other than the main thread's model.
- What to do
- If a cheap search or summarise task is running on your priciest model, point that subagent at a smaller one.
- Advisor
- A14 Subagent model choice
- Measured
- USD · from Claude Code's own cost record · the price table · ≈ when any part of it is estimated · how
Cost per call
- What it means
- context × cache-read price + median output × output price, at the current context; at the cache-write price of the observed TTL when the cache is cold
- Measured
- USD · from the transcript · the status line (after cctop install) · the price table · always an estimate, priced from the list table · how
Cost per turn
- What it means
- cost per call × the session's own median calls per turn (turns with ≥ 1 call), also given at 100 k of context;
next 30 calls = cost per call × 30
- Measured
- USD · from the transcript · the price table · always an estimate, priced from the list table · how
Where the tokens went
- What it means
- Input tokens of API responses by their
attributionSkill / attributionPlugin / attributionAgent / attributionMcpServer owner, machine-originated turns under idle, the subagents' own usage under agents; shares of all input tokens
- Measured
- ratio · from the transcript · D6 · exact · how
Agents cost
- What it means
- Priced usage of every subagent transcript (incl.
subagents/workflows/**) and its share of the session's total
- Measured
- USD · from the subagent's transcript · the price table · ≈ (priced from the table) · how
Team cost
- What it means
- Σ over the teammates of the team this session leads, each from its own transcript: its
cost-state.totalCostUSD where one exists, plus its priced calls after that line (all of them while it has none); members found from ~/.claude/teams/<team>/config.json, the lead's teammate_spawned results and a scan of the transcripts naming the team (teamName == session-<lead id8>). Part of cost_combined, toggled with the agents by a
- Measured
- USD · from D12 · D2c · Claude Code's own cost record · the price table · ≈ for a teammate's calls after its last cost-state, or all of them while it runs; ≈ and "N of M read" when a transcript is missing · how
Limit weight
- What it means
/usage's weight of a call: (cached + uncached × 10 + cache-create × 12.5 + output × 50) × tier (fable 10, opus 5, sonnet 3, haiku 1)
- Measured
- ratio · from the transcript · D12 · exact · how
Behaviour flags
- What it means
/usage's five flags as shares of the weighted usage: cache_miss (requests with > 100 k uncached tokens), long_context (> 150 k context), subagent_heavy, high_parallel (≥ 4 live sessions), cron (active ≥ 8 h); shown with Claude Code's own tip text at ≥ 10 %
- Measured
- % · from the transcript · the session list · D12 · exact · how
Burn rate
reads as
($3.61/h)
- What it means
- An early-warning $/hour figure extrapolated from the last 15 minutes, well before the final bill or a usage limit surprises you.
- What to do
- A sudden jump is the moment to decide whether to keep going at this rate or change course.
- Advisor
- A13 Rate-limit pacing
- Measured
- USD/h · from the transcript · the price table · always an estimate, priced from the list table · how
Input rate
reads as
in 12.4k/min
- What it means
- A proxy for how chatty the session is — tokens per minute sent to the model.
- What to do
- Many tiny prompts cost more in aggregate than one prompt that bundles the same instructions.
- Advisor
- A12 Chatty turns
- Measured
- tokens/min · from the transcript · exact · how