Claude Opus 5: Same Price, Two Breaking Changes to Check First
Claude Opus 5 keeps Opus 4.8 pricing, but thinking is now on by default and disabling it at xhigh or max effort returns a 400, so check both before swapping the model ID.
Umut Korkmaz
Published: 4 min read
On this page6
Anthropic released Claude Opus 5 today, July 24, 2026. It is available on all platforms, including Claude Code, the Claude API and the major clouds, and it costs the same as Opus 4.8: $5 per million input tokens and $25 per million output tokens. For anyone running Opus in production, what matters is the swap: the model ID changes, and two defaults change with it.
What shipped
From the announcement, the release notes and the model docs:
- Model ID
claude-opus-5, with a 1M-token context window as both the default and the maximum, and 128k max output tokens. - Thinking is on by default.
- Fast mode (a research preview) runs around 2.5x the default speed at twice the base price, $10 / $50 per million tokens. On the platform side it is Claude API only for now.
- Priority Tier is not supported on Opus 5.
- The minimum cacheable prompt drops to 512 tokens, down from 1,024 on Opus 4.8.
Anthropic's own numbers: on CursorBench 3.2 at max effort, Opus 5 lands within 0.5% of Fable 5's peak score at half the cost per task, and on OSWorld 2.0 it surpasses Fable 5's best result at just over a third of the cost. Vendor claims until your evals agree, but that ratio is hard to ignore.
Breaking change one: thinking is on by default
On Opus 4.8, a request without a thinking field ran without thinking. On Opus 5 the same request runs with adaptive thinking. The What's new in Claude Opus 5 page calls this a breaking change, and the reason is mundane: a response can now begin with one or more thinking blocks before the first text block. With the default display: "omitted", those blocks arrive with an empty thinking field.
Code that reads content[0].text, or treats the first streamed block as text, now gets the wrong thing. Select blocks by type instead:
const text = response.content
.flatMap((block) => (block.type === "text" ? [block.text] : []))
.join("");
Tool-use loops must pass thinking blocks back complete and unmodified with the tool results. And thinking tokens are billed as output and count toward max_tokens, so a workload that ran without thinking on 4.8 can produce more output per request at the same per-token rate. "Same pricing" is per token, not per request.
Breaking change two: effort and thinking are now coupled
Effort is now the control for thinking depth on Opus 5, with the full ladder of low, medium, high, xhigh and max, and high as the default. The new rule: thinking: {"type": "disabled"} is accepted only at effort high or below. Disable thinking at xhigh or max and the API returns a 400. On Opus 4.8 the two settings were independent.
This is the one I expect to bite quietly. In a wrapper that sets effort and thinking in different config layers, a flag that bumps effort to xhigh for hard requests, next to an older default that disables thinking, becomes an error path that only fires on your hardest traffic. The docs also note that with thinking disabled, Opus 5 can occasionally write a tool call into its text instead of emitting a tool_use block. They recommend keeping thinking on where possible and controlling cost with lower effort.
The smaller things that still break
- Fast mode on Opus 4.7 is gone. Requests to
claude-opus-4-7withspeed: "fast"now return an error, unlike Opus 4.6, which falls back to standard speed. In Claude Code,/fastnow applies to Opus 5 and Opus 4.8 only. - Claude Code changes the default under you. Per the week 30 notes, Opus 5 becomes the default Opus model on Max, Team Premium, Enterprise pay-as-you-go and the Anthropic API, and it requires v2.1.219 or later. To stay on a validated model, select it explicitly with
/model. - New beta headers. Mid-conversation tool changes need
mid-conversation-tool-changes-2026-07-01. The new"default"fallbacks mode needsserver-side-fallback-2026-07-01; the earlierserver-side-fallback-2026-06-01header accepts only explicit model lists. - Prompts that over-verify. The docs say Opus 5 checks its own work unprompted, and that leftover instructions like "include a final verification step" cause over-verification. It also writes longer responses and delegates to subagents more readily.
What I'm doing about it
I run several coding agents in parallel and route work across models by cost, so a stronger Opus at the same price is tempting. I'm still not changing a model string until this list is done:
- Grep for
content[0]and first-block assumptions in anything that parses Claude responses. Quorate, my CLI that runs several AI reviewers over a diff, is the first place I'm looking, since its PASS/WARN/FAIL gates depend on parsing reviewer output. - Find every place effort and thinking are set, move the combination into one function, and add a test for the
xhighplus disabled case. - Re-baseline
max_tokensand cost per request, not per token. - Strip "verify your work" boilerplate from system prompts and compare output on real tasks.
- Revisit prompt caching: prompts of 512 to 1,024 tokens can now be cached with no code change.
Opus 4.8 remains available on the API and the cloud platforms, so there is no reason to rush. Do the swap on a branch, run your own evals at two effort levels, and let the numbers decide.
Sources
Primary references used for this post.