Anthropic, OpenAI, AWS Bedrock
Stop paying for prompt cache you never read.
We read your usage export, token counts only. You get the dollar figure per model. Free.
$236
Paid for nothing.
Four days, one team, one model, on Bedrock.
1,182.09 × 0.25 / 1.25 codex#37674
The same four days, itemised.
Your provider prints one input-token figure. Writes and reads are both inside it, added together. Split apart, it reads like this.
Statement
AWS Bedrock · 5 to 8 August 2026 · one team
| Line item | Amount |
|---|---|
| Cache writesbilled at 1.25× a plain token, 171,900,000 tokens | $1,182.09 |
| Reads of those writesnothing read the stored prefix back in the sampled session, 0 tokens | $0.00 |
| Of which premium, 0.25 of 1.251,182.09 × 0.25 / 1.25 = $236.42, already counted in the row above |
Paid for nothing
$236.42
The fix was one line: a cache breakpoint on the part of the prompt that never changes.
Source: codex#37674, the reporter's own Cost Explorer estimate, not an invoice, and the reporter says so. The cause, a newly enabled tool breaking the prefix on every call, was found eleven days later.
Five ways the bill quietly grows.
None shows up as a spike. Each shows up as a level that was always a little too high.
+25%
Writes nobody reads
A write costs 1.25 times a plain token. If nothing reads it back, the extra quarter is gone.
×1.25every call
Prefixes that keep changing
A timestamp, a reordered tool, a toggled setting. The stored copy stops matching and you pay the write again.
~10×
No caching at all
A read costs 0.1 of a plain token, and 1 / 0.1 is ten. A stable prefix sent in full every call costs about ten times the cached traffic.
inputTokens
Dashboards that miss it
On Bedrock that field excludes cached tokens. A budget built on it guards the wrong number.
> TTL
Requests spaced wider than the window
A five minute cache and a seven minute median gap means every write is paid again and nothing is ever read back.
The instrument
One ratio decides it: reads per write.
A cache write costs 1.25 times a plain token, a read 0.1. Caching pays back only above 0.28 reads per write. On a one hour cache the write is 2× and the line moves to 1.11.
The invoice does not show the ratio. Both are billed as input tokens and added together.
- codex#37674, sampled session · 0.00
- Break-even · 0.28
- One read per write · 1.00
Under 0.28, switching caching off would cost less.
Same formula, three rulebooks
Multipliers match. What differs is the one hour tier, whether cached tokens sit inside the input count, and since when writes cost money. Verified 22 August 2026; each row links its source.
| Provider | Write, 5 min | Write, 1 h | Read | Break-even |
|---|---|---|---|---|
| Anthropic | 1.25× | 2× | 0.1× | 0.28 / 1.11 |
| OpenAI | 1.25× from GPT-5.6, free before | not verified, 30 min TTL | 0.1× | 0.28 |
| AWS Bedrock | 1.25× | 2×, per model | 0.1× | 0.28 / 1.11 |
Gemini bills cached tokens by storage hour, not by write, so this formula does not apply there and the audit does not cover it yet.
Per model, including the minimum below which a breakpoint is silently ignored: the full schedule. The same rows as data, nulls included: pricing-matrix.json.
Check it yourself
Decide it from the bill, or before you write the code.
From the bill: cache write tokens and cache read tokens, for one model, over any period you like. Before you build: how far apart your calls land on one unchanged prefix. Everything below is computed in this page. Nothing is sent anywhere, and nothing is kept.
Minutes, measured request start to request start. Time spent streaming a response counts against the window.
Readout
- Reads per write
- —
- Break-even at
- —
- Net vs no caching
- —
- In dollars
- —
Waiting for two numbers.
Break-even is 0.28 on a short window and 1.11 on an hour, from (write − 1) / (1 − read). A window of length T reaches it at an average gap of T / ln(1 + break-even), which is 20.4 minutes on a five minute window and 80.3 on an hour. The matrix holds every multiplier and its verification date.
Three steps. No install, no account.
A local binary is on the way. Until then we run it for you, and you get the same report.
Export a week of usage
From your provider console: token counts and timestamps, no prompt content. Each provider's export looks different, so the steps for yours come with the reply.
Send it
We run the audit and send the report back. Until the binary ships that is a person, not a pipeline, which is why it takes two working days.
Read the number
Per model: reads per write, dollars paid for nothing, and the one change that fixes it. The method is printed next to every figure.
Pay only from savings we can prove.
If the number is zero, so is the invoice.
Audit
$0
Per model: reads per write, dollars paid for nothing, and the one change that fixes it. As often as you want.
Both start the same way, with the free audit.
Pilot, three months
20% of savings
capped at $500/mo
We apply the fix in your request path and measure the difference against your baseline. After the pilot, a flat plan from $199/mo.
- Measured against 14 to 30 days of your own traffic, at current list prices.
- Months we made it worse count against us.
- Raw event export with every invoice. Disputes are settled by the export.
Zero findings
If there is nothing to find, you get that in writing too.
What we see
Token counts and timestamps only. Never prompt or response content.
Providers
Anthropic, OpenAI and AWS Bedrock. No call required.
See how much of your bill is paid for nothing.
Leave your email and provider. Within one working day you get the export steps. Send the export back and the report follows within two working days.
Questions engineers ask first.
What exactly do you see?
Token counts, timestamps, model names, request ids. Never a prompt, never a response. For the audit that is a CSV you export yourself. In a pilot it is the same metadata, read from the gateway that applies the fix.
What is the gateway, and where does it run?
A proxy in front of your provider that sets cache breakpoints on the stable prefix and keeps tool order stable. It runs in your cloud account, not ours. It fails open: if it is down, requests go straight to the provider.
My gateway already has caching turned on. Is that not enough?
A checkbox tells you caching is on. It does not tell you whether it pays for itself. Below 0.28 reads per write it does not, and that is what we measure.
Will you change my model or shorten my outputs?
Never without an evaluation on a sample and your written consent, per route. Caching fixes do not alter a response. Output changes always do, so they are opt-in.
Who is behind this?
Tenzan Logic, a one-person software studio in Krakow. The method is published next to every number. The invoice follows the savings.
Schedule of minimums
Under the floor, a breakpoint does nothing.
No error, no warning, no line on the invoice. You set a breakpoint, the prompt is under the model's floor, and the provider ignores it. These are the floors, all 26 models we have checked.
Where the documentation contradicts itself
On claude-opus-4.6 and claude-sonnet-4.6, AWS publishes two answers. The model card for each says the cache accepts a five minute and a one hour window. The supported-models table on the prompt caching page lists five minutes only, which matches the January 2026 general availability announcement, where the one hour window covered Opus 4.5, Haiku 4.5 and Sonnet 4.5 and nothing else.
We have not resolved it, so we print both. Until someone sends a request with a one hour cache point and reports what the API answers, treating either page as settled is a guess. The table above shows the five minute figure, which is the one both pages agree on.
Reading this table
A window is how long a written prefix survives before it has to be paid for again. Models with no explicit window cache automatically and charge nothing for the write, so there is no break-even to clear on them.
Matrix version 2026-08-26. Multipliers verified 2026-08-22. Same rows, as data: pricing-matrix.json