Near the end of his piece on why OpenAI and Anthropic cut their prices by up to 80%, Max Woolf wrote a line that got its answer within a day: "I will be very curious to see the Anthropic IPO prospectus and the inference profit margins once it becomes public soon."
Today Anthropic filed its S-1, and the margin is not in the income statement. During 2025 the company changed its presentation so that cost of revenue and gross profit "are no longer presented as separate line items in the consolidated statements of operations." The numbers are still in there. You just have to go to Note 8 for them.
The margin they stopped printing
Note 8 still lists cost of revenue, which the filing says is substantially all "compute and infrastructure costs associated with customer-serving workloads." Put it next to revenue and you get the margin on serving Claude. The division is mine, the inputs are theirs:
| Period | Revenue | Cost of revenue | Gross margin |
|---|---|---|---|
| 2024 | $386M | $752M | -95% |
| H1 2025 | $1,163M | $1,019M | 12% |
| 2025 | $4,585M | $2,773M | 40% |
| H1 2026 | $16,286M | $2,380M | 85% |
Within eighteen months, serving went from losing money on every dollar to keeping 85 cents of it.
Now line that up with Woolf's timeline. Sonnet 5 launched June 30 at a temporary price that became permanent. Opus 5 arrived July 24. Fable 5.1 cut the cache read price by 75% on September 1. Opus 5.5 followed on September 22 at $4 / $20 / $0.20. Every one of those cuts lands on the last day of the half-year that already ran at 85%, or after it.
That is not what a subsidised price looks like.
The land-grab reading still has something to stand on. The company as a whole is roughly break-even, at minus 4% operating margin in the first half of 2026, because research and development cost $9.7 billion, four times the cost of serving its paying customers. Competition is real too: the S-1 itself warns that open-weight models "could exert pricing pressure on our offerings." None of that needs a request priced below what it costs to serve, and Anthropic's are priced well above it.
What a lower price per task is for
The filing says it outright: "Lower costs per task drive greater usage, which in turn drives broader diffusion of Claude. Our compute efficiency allows us to deliver these reductions while preserving our margins."
Then it shows the evidence: Opus 4.5 launched in November 2025 with "a lower price and cost per task than its predecessor Opus 4.1," and quarter-over-quarter revenue growth went from 48% to 132%. Opus 5.5 "reduced customers' cost per task by approximately 40% compared to Opus 5." Net revenue retention sits at roughly 900%. The price per task falls, the number of tasks rises faster, and the bill goes up.
It even names who drives the bill. Claude Enterprise users without Claude Code spent less than $75 a month on average in the third quarter. The top 5% of those with Claude Code spent roughly twenty times that.
In June, writing about Copilot's switch to metered billing, I said token prices were subsidised to buy your habit. For Anthropic's serving costs, the filing says I was wrong. The habit was being bought at a margin, and by the filing's own account the cuts since have preserved it.
Where an agent's money actually goes
The headlines quote the output price. For a coding agent that is almost a footnote. Woolf puts cache reads at "the vast majority (96% - 99%) of the total token expenditure" when you code with an agent, "as the cache is what contains the entire previous conversation each turn."
My own transcripts are more lopsided still. In October, cache reads outnumbered output tokens by roughly 800 to one. Every turn re-reads the whole session: the system prompt, the CLAUDE.md, every file the agent opened, every tool result it kept.
So the cut that matters is the cache read. Opus 5.5 took 20% off input and output, and 60% off cache reads, from $0.50 to $0.20 per million tokens. Fable 5.1 cut only the cache read, and Woolf still counts it as 70-75% cheaper to use. Re-reading context is what running an agent costs, and that price fell hardest.
It also removes the pressure that kept sessions short. A bloated session used to cost money. Now it mostly costs latency and the model's attention, and neither shows up on an invoice.
My own meter never moved
I work on Claude Max 20x through my job, and I have Pro on the side. Both are a fixed amount per month, and neither invoice has a line for tokens. If the cuts reach me at all, they arrive as headroom under a limit.
My usage moved anyway. I have used Claude since Opus 3, but the Claude Code transcripts on this machine start on September 21, the day before Opus 5.5 launched, and nothing about either subscription has changed since. From the first week to last week, my weekly output tokens more than doubled. The model got good enough that I handed it more.
The S-1 does not count me in its headline metric: net revenue retention excludes "subscribers to our Claude Pro and Max plans." What I get instead is a usage limit, and the risk factors are plain about who controls it: "We have also changed, and may in the future change, usage limits, rate limits, or model and product capabilities."
If you write the code yourself
Put the saving into the part that was always scarce. Generation got cheap a while ago, and judgement stayed expensive.
- Spend the cut on verification. Tests before the change, the suite on every turn, a second review pass over the diff. Those are the turns people skipped to save tokens.
- Measure tokens per merged change, from your own transcripts, next to the total. Token leaderboards already showed that either number alone lies.
- Keep the cache prefix stable. Prompt caching matches on the prefix, so your instructions and tool list should not change mid-session. Every edit up there throws away the cheap part of every turn after it.
- Price your workflow at API rates once. If it only works because a subscription limit allows it today, write that number down.
If you vibe code
The cut changes your economics the most. A retry costs less, so you retry more, and every retry re-reads a context that grew with each failed attempt. Prompt, run, paste the error, prompt again: that loop is what a cheaper turn feeds, and it is how you end up among the twenty-times customers.
On a subscription you will not see the bill. You will see the limit, and the S-1 spells out where it leads: subscribers "may utilize a higher subscription tier or purchase more intelligence directly." That road runs one way.
- Start a fresh session instead of arguing with a polluted one. A short context is cheap to re-read, and the model sees the bug itself instead of five failed fixes.
- Set a stop rule. After three failed attempts at the same bug, stop prompting and read the code. If you cannot follow it, that is the moment to learn the part you skipped.
Whichever you are, keep a second route warm, an open model or a second provider, so switching stays a config change. The S-1 lists that pressure as a risk to Anthropic, which makes it your leverage. And expect the next cut to raise your spend. That is what it is for.
Woolf's own verdict on the cuts: "as a user I'm certainly not complaining!" Neither is the seller.