The Cache Write Tax

On July 9, OpenAI's newly priced GPT-5.6 family began charging 1.25x the standard input rate to write a prompt into cache, which no earlier GPT model did. Anthropic has charged that style of premium for as long as prompt caching has existed: 1.25x for a 5-minute cache, 2x for an hour. DeepSeek's disk-based cache charges neither; a write costs exactly the standard rate whether or not anything ever reads it back. Two of the three labs that set frontier pricing now bill you for trying to save money, whether or not the save ever happens.

Published 2026-07-14 by Dor Amir on the Nadir blog.

Filed under Caching.

Two of the three labs now charge you to try

On July 9, OpenAI's newly priced GPT-5.6 family started charging 1.25x the standard input rate the first time a prompt is written into cache. No earlier GPT model did that. Source: OpenAI, "Prompt caching," API documentation. Anthropic has charged that same style of premium since prompt caching became generally available: 1.25x the base input rate for a 5-minute cache, 2x for a one-hour cache, on every model including Claude Fable 5. Source: Anthropic, "Pricing," Claude Platform Docs. DeepSeek's disk-based cache, running since August 2024 and carried into V4, charges neither. A cache write costs exactly the standard rate, whether or not anything ever reads it back. Source: DeepSeek API Docs, "DeepSeek API Introduces Context Caching on Disk". Two of the three labs that set frontier pricing now bill you for attempting to save money, independent of whether the attempt works.

The three-way split, as of this month

Prompt caching only has one job: store the tokens behind a repeated prefix so the next request that shares it skips full-price reprocessing. How each provider prices the first write to that cache is where the three diverge.

Provider / modelStandard inputCache writeWrite premiumCache hitHit discount
DeepSeek V4 Flash$0.14 / M$0.14 / Mnone$0.0028 / M98% off
OpenAI GPT-5.6 Sol$5.00 / M$6.25 / M1.25x$0.50 / M90% off
Anthropic Claude Fable 5, 5-min$10.00 / M$12.50 / M1.25x$1.00 / M90% off
Anthropic Claude Fable 5, 1-hour$10.00 / M$20.00 / M2x$1.00 / M90% off

DeepSeek runs a two-tier system: a request either hits the cache or it doesn't, and a miss costs exactly what an uncached request would have cost anyway. DeepSeek's own numbers put the average unoptimized user's savings above 50% and first-token latency on a repeated 128K prompt dropping from 13 seconds to roughly 500ms, with no code change required and no separate line item for the write. OpenAI and Anthropic both run a three-tier system: a standard rate, a discounted read, and now, on both, a premium write that costs more than doing nothing would have.

Bar charts comparing cache write premium and cache hit discount across three providers. Left: cache write cost as a multiple of the standard input rate — DeepSeek V4 at 1.0x (no premium), GPT-5.6 Sol at 1.25x, Claude Fable 5 at 1.25x for a 5-minute cache and 2.0x for a 1-hour cache. Right: cache hit price as a percent discount off standard — DeepSeek V4 at 98% off, GPT-5.6 Sol at 90% off, Claude Fable 5 at 90% off.
Bar charts comparing cache write premium and cache hit discount across three providers. Left: cache write cost as a multiple of the standard input rate — DeepSeek V4 at 1.0x (no premium), GPT-5.6 Sol at 1.25x, Claude Fable 5 at 1.25x for a 5-minute cache and 2.0x for a 1-hour cache. Right: cache hit price as a percent discount off standard — DeepSeek V4 at 98% off, GPT-5.6 Sol at 90% off, Claude Fable 5 at 90% off.

Why the premium almost always pays for itself

The write tax is not, by itself, a bad trade. Anthropic's own pricing documentation states the break-even directly: "caching pays off after just one cache read for the 5-minute duration (1.25x write), or after two cache reads for the 1-hour duration (2x write)." Source: Anthropic, "Pricing," Claude Platform Docs. The arithmetic is simple once it's written out: a 5-minute write costs 0.25x more than doing nothing, and a single subsequent read at 0.1x the standard rate saves 0.9x relative to sending that prefix at full price again. One read clears the tax with room to spare. The same shape holds for GPT-5.6: a 1.25x write is covered by one 0.1x-priced read.

So for the workload prompt caching was built for, a system prompt, a tool schema block, a long document that gets referenced across many turns of the same session, the premium is close to irrelevant. It gets paid once and forgotten. The place the tax actually bites is a workload most teams don't think of as a caching decision at all.

The tax lands on the prefix nobody reads twice

Every cache write is a bet that something will read the same prefix again before the window closes: 5 minutes, 30 minutes, or an hour, depending on provider and setting. When that bet loses, on Anthropic or OpenAI, you didn't just fail to save money. You paid 25 to 100% more than if you had never tried to cache at all.

Bar chart showing the extra cost paid, as a percent above the standard uncached rate, when a cached prefix is written but never read again before the cache window expires. DeepSeek V4 pays 0% extra since a write costs the standard rate either way. GPT-5.6 Sol pays 25% extra on its 30-minute window. Claude Fable 5 pays 25% extra on a 5-minute write and 100% extra on a 1-hour write.
Bar chart showing the extra cost paid, as a percent above the standard uncached rate, when a cached prefix is written but never read again before the cache window expires. DeepSeek V4 pays 0% extra since a write costs the standard rate either way. GPT-5.6 Sol pays 25% extra on its 30-minute window. Claude Fable 5 pays 25% extra on a 5-minute write and 100% extra on a 1-hour write.

That bet loses more often than the marketing around prompt caching implies. A few concrete cases where it does:

None of these are exotic. They're the default shape of agentic and multi-tenant traffic, which is precisely the traffic most teams reach for cache_control to fix first.

Why DeepSeek's cache can't lose

The structural difference is what matters more than any single number in the table above. DeepSeek's caching decision has no downside because there's nothing to decide: every request is billed at the miss rate unless it happens to match, and the miss rate is the same as if caching didn't exist. DeepSeek's docs are explicit that matching is exact-prefix, from the 0th token, so there's no partial credit and no manual tuning, just automatic detection running underneath a stable, unchanged price.

Anthropic and OpenAI both require an active choice: mark a cache_control breakpoint, pick a TTL, and take on the write premium as the price of that bet. Anthropic's automatic-caching mode manages the breakpoints for you, which removes the manual tuning step but not the underlying wager, since the system is still guessing at what's worth caching rather than pricing the guess out of existence the way DeepSeek's model does.

This is the same tradeoff that shows up everywhere else in LLM cost engineering: a technique that's free to attempt and only pays off on a hit beats one that costs something to attempt regardless of outcome, even when the second one's best case is better. The same principle is why a verifier-gated router beats one that guesses blind: the value isn't in the upside, it's in removing the downside of being wrong.

What changes about how you should cache

None of this requires new infrastructure, just a routing layer that already knows the shape of the request before it decides where to send it:

import openai

client = openai.OpenAI(
    base_url="https://api.getnadir.com/v1",
    api_key="ndr_...",
)

# A prefix flagged as low-reuse-probability (per-session state, a one-off
# tool result, dev traffic) routes to the cheapest path with no write
# penalty. A prefix flagged as shared across a tenant, a system prompt,
# a static tool schema, still gets cached where the premium is worth it.
response = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": prompt}],
)

Same call shape as talking to any OpenAI-compatible endpoint. Nadir routes each request to the cheapest model and provider that can handle it, and reports the routing and caching decision per request in the response metadata, so the reuse bet this post describes stops being a guess an engineer makes once at integration time and becomes a decision made fresh on every request.

What to actually ship this week

Conclusion

Prompt caching is still one of the highest-leverage cost levers in production LLM engineering; nothing here argues otherwise. What changed this month is that the two labs that set frontier pricing both now charge a fee to place that bet, and GPT-5.6 joining Anthropic in doing so means the majority of frontier-tier traffic is now priced this way by default. The fix isn't to stop caching. It's to stop treating cache_control as a free toggle and start treating it as what it now is on two of the three major providers: a wager with a real cost when it loses, next to at least one provider whose cache can't lose at all.

Related reading


Sources: [DeepSeek API Docs, "DeepSeek API Introduces Context Caching on Disk," August 2, 2024](https://api-docs.deepseek.com/news/news0802/). [Anthropic, "Pricing," Claude Platform Docs](https://platform.claude.com/docs/en/about-claude/pricing). [OpenAI, "Prompt caching," API documentation](https://developers.openai.com/api/docs/guides/prompt-caching). [OpenAI, "Pricing," API documentation](https://developers.openai.com/api/docs/pricing).

More on caching

What Nadir is

Nadir is an LLM router. Nadir sizes every prompt and routes it to the cheapest model that still clears your quality bar. A small decision model reads each prompt against your model menu and picks the lowest-cost model it expects to handle it. When the decision model is uncertain or unavailable, the request goes to the strongest model on the menu. The routing step makes no call to your model provider.

Nadir runs two ways. The decision API returns a model, reasoning-effort, cache, context, and policy recommendation without calling a model provider, beside the gateway you already run. That is how a shadow-mode evaluation works, and its projected savings stay advisory. The OpenAI compatible managed proxy executes the route, and migration is a two-line change: point the base URL at api.getnadir.com and set model to auto. On that path an optional verifier can score a complete non-streaming answer and escalate to a stronger model when it misses the configured bar. Streaming bypasses post-generation verification. BYOK is supported on every tier.

For coding agents, Nadir Auto is a terminal launcher for Claude Code or Codex that asks Nadir for the main-session model before each turn, with your configured model as the fallback and cost ceiling. Delegation integrations for Claude Code, Codex, or Cursor instead recommend a model tier for subagent work, and the agent decides. Either way inference runs on your own provider account, so Nadir holds no provider keys on that path.

What the numbers are, and what they are not

Nadir publishes each evaluation with its scope. On checkable code, run-check-escalate solved 392 of 395 common HumanEval and MBPP problems (99.2%), graded by running the canonical tests; that applies only to tasks with runnable deterministic tests. Nadir-Tumbler posts an arena_score of 72.3 on RouterArena's public scorer, 5th of 23 routers, which measures the routing decision on RouterArena's own model pool. A reference-assisted RouterBench evaluation over 11,420 held-out triples produced a 60% lower projected cost than always-Opus with about 98% retained quality and a 1.7% catastrophic-route rate. That experiment gave the verifier the expensive-model reference answer, which production does not have, so it is a research ceiling and not the deployed path.

None of these is a production guarantee, a universal savings rate, or a forecast for any particular workload. Customer savings are reported from measured execution against a declared baseline, and customer quality only from outcome-labelled traffic. Projected savings and realized savings are separate artifacts and are never blended.

Design-partner program

Three rungs, picked by risk appetite. Rung 0 Shadow runs advisory decision calls alongside live traffic and returns a projected receipt, with nothing in the request path changed. Rung 1 Hosted is the two-line swap on a production slice and returns a realized receipt. Rung 2 On-prem is a supervised six-week proof of concept inside the partner's VPC, where no prompt, response, or usage reaches Nadir. The commitments are the same at every rung. Apply for a rung directly: Rung 0 Shadow, Rung 1 Hosted, or Rung 2 On-prem. Not sure which fits? Start at getnadir.com/contact/?reason=design-partner.

Licensing

NadirClaw is the self-hosted core, source-available under the PolyForm Noncommercial License. Source-available is the correct label; NadirClaw is not open source. Nadir Route's hosted plan has no base fee and charges a variable fee only on measured savings from requests Nadir executed.

Pages on this site

Machine-readable summaries of this site: llms.txt and llms-full.txt.