
Claude Opus 5.5 vs Opus 5: What Actually Changes
Claude Opus 5.5 (claude-opus-5-5, shipped 22 September 2026) is cheaper than Opus 5 on every line — $4 / $20 per million input/output tokens against $5 / $25, and cache reads at $0.20instead of $0.50 — with the same 1M context window and 128K max output. But swapping the model ID is not the migration. Four request shapes that Opus 5 accepted now return HTTP 400, and the default effort level quietly drops from high to medium. That last one has no error attached to it, which is exactly why it will be the one that bites you.
The Price Change, Line by Line
Every token category got cheaper. The one worth staring at is the cache read, because on a prompt-cached agent loop it is usually the biggest input line on the invoice.
| Per million tokens | Opus 5 | Opus 5.5 |
|---|---|---|
| Input | $5.00 | $4.00 |
| Output | $25.00 | $20.00 |
| Cache read | $0.50 | $0.20(−60%) |
| 5-minute cache write | $6.25 | $5.00 |
| 1-hour cache write | $10.00 | $8.00 |
| Batch (in / out) | $2.50 / $12.50 | $2.00 / $10.00 |
| Fast mode (in / out) | $10.00 / $50.00 | $8.00 / $40.00 |
Input fell 20%, output fell 20%, and the cache read fell 60%. That last number is not a rounding artifact: Opus 5.5 prices a cache hit at 0.05x base input instead of the standard 0.1x multiplier every other model uses. Only Fable 5.1 and Mythos 5.1 go lower, at 0.025x. If you have done the work described in prompt caching cost savings, this release pays you for it twice.
Run the arithmetic on a shape typical of a long-running coding agent — a big cached prefix replayed every turn, modest fresh input, meaningful output. Say 40M cache-read tokens, 4M fresh input tokens and 1.2M output tokens in a day:
Opus 5 40M x $0.50 = $20.00 | 4M x $5 = $20.00 | 1.2M x $25 = $30.00 → $70.00
Opus 5.5 40M x $0.20 = $ 8.00 | 4M x $4 = $16.00 | 1.2M x $20 = $24.00 → $48.00That is a 31% cut on identical token counts. It is not the 40% Anthropic quotes, and the gap between those two numbers is the whole point of the next section. The 1M context window is still billed at standard rates across its full length on both models, so there is no long-context premium hiding in the math either way — the same thing that made the 1M context window usable in production in the first place.
The Change With No Error: Default Effort Is Now Medium
On Claude Opus 5, a request that omitted output_config.effort ran at high. On Opus 5.5 that same request runs at medium. Fable 5.1 defaults to high. Sonnet 5 defaults to high. Opus 5.5 is the one that moved.
And since thinking can no longer be switched off on this model, effort is the onlythinking control you have. So a codebase that never touched the parameter just quietly changed how hard the model thinks on every call — cheaper, faster, and on hard problems, different.
This is why I read the “40% less on typical workloads” headline as a blended number rather than a rate cut. Part of it is the rate card. Part of it is a model that, left at its defaults, spends fewer thinking tokens than its predecessor did at its defaults. Set effort back to high to match Opus 5 apples-to-apples and your output token count goes up; in the worked example above, a 25% bump in output tokens takes the day from $48 to about $54, so the saving lands nearer 23% than 40%.
None of which is a complaint — the benchmarks say the lower default is earning it. Anthropic publishes Opus 5.5 at 66.4% on Terminal-Bench 4.0 against Opus 5's 52.3%, 54.4% on FrontierCode v1.1 against 48.0%, 81.8%on OSWorld 2.0 computer use against 74.0%, and 1846 Elo on GDPval-AA v2.1 against 1708. Those are the vendor's own numbers on the vendor's own harness, so treat them as direction rather than gospel. The practical read: re-run your effort sweep instead of assuming your old level transfers. My rule of thumb from picking an effort level still holds: measure cost per completed task, not per request. A cheap request that needs three extra turns is not cheap.
The Four 400s
These are hard failures, not deprecation warnings. Code that runs today against claude-opus-5 and hits any of these will start returning 400 the moment you change the string.
1. Thinking cannot be disabled
Both thinking: {type: "disabled"} and the legacy {type: "enabled", budget_tokens: N} are rejected:
"thinking.type.disabled" is not supported for this model.Delete the field and pick an effort level instead — if you disabled thinking to save tokens, low is the replacement. Responses now begin with thinking blocks, so select content blocks by type rather than reading content[0].text, and pass thinking blocks back unmodified alongside your tool results.
2. Forced tool use is gone
tool_choice types any and tool return a 400, on the token counting endpoint too. Opus 5.5 inherits this from Fable 5.1. The replacement is auto plus strict: true on the tool, plus a sentence in the prompt naming when the tool applies:
// before
tool_choice: { type: "tool", name: "get_weather" }
// after
tools: tools.map(t => ({ ...t, strict: true })),
tool_choice: { type: "auto" }If the forced call only existed to get JSON back, skip tools entirely and use structured outputs instead of tool use. That was the better shape before this change and it is the obvious one now.
3. The old computer use tool is rejected on the Claude API
A tools entry of type computer_20251124 returns a 400 on the Claude API and Google Cloud. Declare { type: "computer_toolset_20260801" }instead — no beta header, no name, no display dimensions — and update your loop: the action is the block's name rather than input.action, you can get several member blocks per turn, and every result has to echo toolset_name. On Amazon Bedrock the old tool keeps working, which is a nice trap for anyone running both.
4. Thinking blocks are bound to the model and the conversation
Only Fable 5.1 and Mythos 5.1 can read an Opus 5.5 thinking block. Route a conversation from Opus 5.5 to anything else and those turns run without them. Going the other way, Opus 5.5 reads thinking from Opus 5 and earlier Opus, Sonnet and Haiku models — but not from Fable or Mythos.
Bigger deal: preserved thinkingenforcement. For accounts created on or after 31 August 2026, replaying a thinking block after you edited the system prompt, the tools array or an earlier message returns a 400. Keep the conversation append-only. Claude Code, claude.ai, Managed Agents and the Agent SDK already do; hand-rolled loops that rewrite history mid-conversation — and homegrown subagent orchestrators that splice transcripts are the usual offender — do not.
Why Your Agent UI Went Silent
This one raises no error and will generate a support ticket anyway. On Opus 5, the text a model wrote between tool calls (“checking the schema now…”) came back as a text block. On Opus 5.5 it comes back as a progress-update thinking block, at most one before each tool call — and at the default thinking.display of "omitted" its text is empty.
So every chat UI that streamed that narration as a progress line goes quiet between tool calls. The agent is working fine. It just stopped narrating where your renderer was looking. Fix:
display: "updates"(beta headerthinking-display-updates-2026-08-18) returns the progress notes while the reasoning itself stays hidden. This is what you want.display: "summarized"returns progress notes and a reasoning summary mixed together.- Render each non-empty thinking block ahead of the
tool_useblock it precedes, and pass the blocks back unchanged with the rest of the assistant turn.
One more behavioral note while you are in there: Opus 5.5 runs broader safety classifiers than Opus 5 and can return stop_reason: "refusal" with categories like bio and reasoning_extraction where Opus 5 mostly surfaced cyber. Server-side fallback does not retry a reasoning_extraction decline — that one comes back to you. Check stop_reason before you read content, which you should have been doing anyway.
The Migration, In Order
- Swap the ID.
claude-opus-5-5, no date suffix. Bedrock takesanthropic.claude-opus-5-5; Google Cloud, Foundry and Claude Platform on AWS take the bare ID. - Grep for
thinking. Delete everydisabledand everybudget_tokens. - Set effort explicitly on every route. Do not inherit the new
mediumdefault by accident. Sweeplowthroughxhighon a sample of real traffic. - Grep for
tool_choice. Replaceany/toolwithauto+strict: true, or move to structured outputs. - Computer use and history edits. Move to
computer_toolset_20260801on the Claude API; make your loop append-only. - Re-baseline before you celebrate. Measure cost and latency at your chosen effort level on your own traffic. If the work is not latency-sensitive, the Batch API stacks another 50% on top of the new rates.
Claude Code users get most of this free: v2.1.280 made Opus 5.5 the default Opus model, and the harness is already append-only and already handles thinking blocks. The work lands on anyone driving the Messages API directly — which, if you have been building your own loops since the Sonnet 5 / Opus 4.8 era, is you.
So Should You Switch?
Yes for long-running agentic coding, computer use and anything where a big cached prefix gets replayed all day — that last category is where the 60% cache-read cut compounds into real money. Yes for batch pipelines, where $2/$10 against $2.50/$12.50 is free margin.
Hold off exactly as long as it takes to fix the four 400s, and do not switch production traffic on a Friday on the strength of a benchmark table. Opus 5 is still served — it moved to the legacy list, not the graveyard, and Anthropic's retirement commitment for Opus 5.5 runs to 22 September 2027 at the earliest. You have time to do this properly. You just do not have an excuse to do it blind.
Migrating a Production Agent This Week?
The model ID swap takes a minute. The effort sweep, the tool_choice rewrite and proving the bill actually went down take an afternoon. I do this for clients — send me your setup and I'll tell you what breaks before it breaks.
Prices, model IDs, breaking changes and default effort verified 23 September 2026 against Anthropic's pricing documentation and the Claude Opus 5.5 migration guide. Benchmark figures are Anthropic's published numbers from the Opus 5.5 announcement. The cost example is arithmetic on published rates for a stated token mix, not a measurement of your workload — run your own before you budget on it.
Related Posts
AI Models
Fable 5.1 Pricing: Cheaper Only If You Cache
Fable 5.1 kept the $10/$50 per-token price and cut cache reads 75% to $0.25/M. Your bill drops by 0.75 times your cache-read share — and not a point more. The math, plus the three changes that break agent loops.
AI Models
Anthropic Python SDK v1.0: What Actually Breaks
v1.0 shipped August 20, 2026. temperature, top_p and top_k are gone from the message methods, httpx became httpx2, Text Completions was deleted, and async raw responses are awaitable. Every breaking change with its fix, ordered by how likely it is to hit you.
AI Models
Claude's Effort Parameter: Which Level to Use
Effort isn't a thinking budget — it governs every token in the response, tool calls included, which makes it the biggest cost dial on an agent. Where to start per model, why Opus 5 flipped the advice from Opus 4.8, and the two traps: it breaks prompt caching, and it won't shorten your answers.