How much is your prompt cache actually costing you?
Prompt caching is why a long Claude Code session costs a fraction of what its token count suggests. It is also where some of the day's most expensive turns hide: a cache miss writes back what the cache already held, at a write rate, instead of reading it at a tenth of the input price or less.
The short answer
A cache read costs a tenth of the input rate on most models (a twentieth on Opus 5.5, a fortieth on Fable 5.1 and Mythos 5.1). A cache write costs 1.25 times it on the 5-minute tier and twice it on the 1-hour tier. So on a model that reads at a tenth, a miss costs 12.5 to 20 times what the hit would have: rewriting 310,000 tokens on Opus 5 is about $3.10 on the 1-hour tier, where reading them would have been $0.16. Claude Code reports its own misses in the status line (since 2.1.251) and their causes (since 2.1.260). Notchmeter prices those rewrites and names the cause. It never infers a miss from a transcript, where a miss and the first turn of a session look exactly alike.
What each part of the cache costs
Anthropic prices the cache as multiples of a model's base input rate, and they stack with the other modifiers, US-only residency included.
| Part | Multiplier | Opus 5 | Sonnet 5 | Haiku 4.5 |
|---|---|---|---|---|
| Input (no cache) | 1 × | 5.00 | 2.00 | 1.00 |
| Cache read | 0.1 × | 0.50 | 0.20 | 0.10 |
| 5-minute cache write | 1.25 × | 6.25 | 2.50 | 1.25 |
| 1-hour cache write | 2 × | 10.00 | 4.00 | 2.00 |
Opus 5.5 reads from the cache at 0.05 × ($0.20 a million), and Fable 5.1 and Mythos 5.1 at 0.025 ×, not 0.1 ×, which makes a miss on those models even more lopsided.
| Model | Hit (read) | Miss, 5-minute tier | Miss, 1-hour tier |
|---|---|---|---|
| Opus 5 | $0.16 | $1.94 | $3.10 |
| Sonnet 5 | $0.06 | $0.78 | $1.24 |
What counts as a miss
Claude Code's own definition, which Notchmeter takes as given: a request that re-processed content the cache already held, more than 5% and at least 2,000 tokens of what could have been read from it, with no compaction or tool-result clearing to explain it. A rebuild after a compaction is expected and counted separately, not as a miss. Claude Code does not count subagent requests.
The transcripts cannot answer this question, and Notchmeter does not pretend they can. A transcript records that a cache write happened and never why. A large write with no read is also exactly what the first turn of every session, and every /clear, looks like, so any tool that counts "misses" from transcripts is counting session starts too.
The four causes, and what to do about each
| Cause Claude Code reports | Shown as | What it means |
|---|---|---|
tools_changed | tools changed | The tool definitions changed mid-session, and Claude Code lists the tools added and removed. Notchmeter adds the one thing to do about it: Your MCP server list is changing mid-session. A server that connects, drops or reconnects mid-session changes the tool list. |
system_prompt_changed | system prompt changed | Something that goes into the system prompt changed mid-session. Claude Code reports by how many characters; it does not say what, and neither does Notchmeter. |
ttl_expired_5m | 5-minute cache expired | More than five minutes passed between requests while the cache was on the 5-minute tier. Coming back from a break costs a rewrite. |
likely_server_side | likely server-side | Nothing on your side explains it. There is nothing to change. |
Where Notchmeter shows it
Notchmeter prices each session's rewritten tokens once, at that session's model's cache-write rate for the tier the cache is on, and prints no dollar figure for a model its table does not know.
- The Cost card adds up the Claude sessions heard from today: Prompt cache: 4 misses today · 310K tokens (~$1.94) rewritten · cause: tools changed.
- An advice line appears at three misses in the current 5-hour block, or 200,000 rewritten tokens: Your prompt cache missed 4 times — 310K tokens (~$1.94) rewritten. Cause: tools changed. Your MCP server list is changing mid-session.
- A notification, When the prompt cache keeps missing, carries that line at most once a day.
- Claude Code's own status bar shows the session's miss share,
cache 14% miss, in orange from one miss in ten and red from one in four, where the bar allows colour. notchmeter --jsonand the MCP tool carry the same figures as apromptCacheobject.
The quieter cost: the tier shift
Anthropic's Agent SDK documentation explains why the tier moves under you: "On a Claude subscription within your plan's included usage, you get the 1-hour TTL on your own turns, and on some of the helper requests Claude Code makes beside them … and Claude Code drops those turns to the 5-minute TTL once you're drawing on usage credits." On the 5-minute tier every pause longer than five minutes is a rewrite.
The transcripts record which tier each write used, so Notchmeter compares today's share of cache writes on the 1-hour tier with your last 30 days. When today is at least 25 points lower, with at least 100,000 cache-write tokens to judge by, the Cost card notes it and the advice says so: Cache writes today are 12% 1-hour against a 30-day norm of 64%: the 5-minute tier re-caches more often and costs more quota per turn. It is an observation of the tier, not of your credits; the transcripts do not say why the tier changed. With the Cost card's details on, the token line also shows how much of the range came from cache reads (4.2M tokens · 71% cache reads).
What you need
- For misses and their causes: Notchmeter's status line in Claude Code (Install status line… on Claude Code's page in Settings, which keeps a status line you already had by chaining it), and Claude Code 2.1.251 or later; 2.1.260 or later for the cause.
- For the tier shift and the cache-read share: nothing. Both come from the transcripts already on your Mac.
On a subscription, every dollar here is the API-equivalent value, not a charge (see the cost guide). The rewrite still spends your window, which is the cost you actually feel.
Sources
- docs/accuracy.md, The prompt cache and The cache tier shift: the rules, pinned by
PromptCacheTestsandStatuslineTests. - Anthropic, Status line: the
prompt_cacheobject and its fields. - Anthropic, Pricing, prompt-caching multipliers, read 2026-09-01, and the per-model rates, read 2026-09-24.
- Anthropic, Track cost and usage, on the 1-hour and 5-minute tiers, read 2026-09-01.