Claude Opus 5: thinking on by default, and effort becomes the dial that matters
In brief
Anthropic launched Claude Opus 5 on July 24, 2026 at $5/$25 per million tokens — the same price as Opus 4.8. Thinking is now on by default, the effort parameter is the main control you tune, and there is exactly one breaking change: disabling thinking at xhigh or max effort returns a 400. Here's what changed and what to do about it.
Contents
Claude Opus 5 (claude-opus-5) launched on July 24, 2026. It replaces Claude Opus 4.8 as Anthropic's flagship model at the same price: $5 per million input tokens, $25 per million output tokens.
The specs:
| Claude Opus 5 | |
|---|---|
| Model ID | claude-opus-5 |
| Context window | 1M tokens (both default and maximum) |
| Max output | 128k tokens |
| Thinking | On by default |
| Effort levels | low, medium, high (default), xhigh, max |
| Price | $5 / $25 per MTok |
| Prompt cache minimum | 512 tokens |
Anthropic positions it as frontier intelligence at half the cost of Claude Fable 5, which runs $10/$50.
The migration is a one-line change, then two things to check
Swapping the model ID is the whole migration:
model = "claude-opus-4-8" # Before
model = "claude-opus-5" # After
Then check two behavior changes.
1. 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 thinking — the model decides when and how much to think on each turn.
The practical consequence is about max_tokens. That parameter is a hard cap on total output, and thinking tokens count against it. If you tuned max_tokens tightly for a workload that ran without thinking on Opus 4.8, the model now has less room for its actual response.
Revisit max_tokens on any workload you migrate. If you were running at 4,000 and the answers suddenly truncate, that's why.
thinking: {"type": "adaptive"} still works and is equivalent to the default — no need to add it.
2. Disabling thinking now depends on effort (this is the breaking change)
On Opus 5, thinking: {"type": "disabled"} is only accepted when effort is high or below. Pair it with xhigh or max and you get a 400 error.
# 400 error on Opus 5
client.messages.create(
model="claude-opus-5",
max_tokens=8000,
thinking={"type": "disabled"},
output_config={"effort": "max"}, # ← xhigh or max + disabled = 400
messages=[{"role": "user", "content": "..."}],
)
Two ways out. Either keep thinking disabled and drop effort to high or below, or keep the effort level and remove the thinking field entirely.
This is enforced per request, and it's generally available behavior — not a beta flag you can opt out of.
Anthropic also notes that with thinking disabled, Opus 5 sometimes writes a tool call into its text output instead of emitting a proper tool_use block, or leaks internal XML tags into the visible response. The recommended path is to leave thinking on and control cost with a lower effort level instead.
Effort is the parameter to actually tune
The headline claim about Opus 5 is that it converts extra effort into better results more reliably than any earlier Opus model. That makes the effort ladder the main thing you tune, rather than something you set once and forget.
response = client.messages.create(
model="claude-opus-5",
max_tokens=64000,
output_config={"effort": "max"},
messages=[{"role": "user", "content": "..."}],
)
The practical approach:
- Start at
high— that's the default. - Step down to
mediumorlowwhere your evals show quality holds. Anthropic specifically calls out that low and medium effort on Opus 5 produce strong quality at a fraction of the tokens and latency. This is where the cost savings are. - Step up to
xhighormaxfor capability-critical work only.
One thing to get right: when running at xhigh or max, set a large max_tokens. The model needs room to think and act across subagents and tool calls, and a tight cap will cut it off mid-work. The docs use 64,000 in their example.
Behavior differences you'll notice without changing code
These aren't API changes, but they'll show up in output:
- Responses run longer. Default user-facing answers and written deliverables are more verbose than Opus 4.8.
- It narrates more. In agentic sessions, the model reports its progress to the user more often.
- It delegates more readily. In multi-agent setups, it hands work to subagents sooner.
- It verifies its own work unprompted. This one matters: if your prompts carry instructions like "include a final verification step" or "use a subagent to verify" from earlier models, remove them. On Opus 5 they cause over-verification — the model checks its work twice and burns tokens doing it.
That last point is the most common carried-over mistake when migrating. Grep your prompts for verification instructions before you ship.
Smaller wins
Prompt cache minimum dropped to 512 tokens, down from 1,024 on Opus 4.8. Prompts that were too short to cache before now create cache entries with no code changes on your side. If you have a lot of short system prompts, this is free savings.
Mid-conversation tool changes (beta). You can add or remove tools between turns while preserving the prompt cache, instead of resending a fixed tool list for the life of a session. Requires the mid-conversation-tool-changes-2026-07-01 beta header.
Default fallbacks mode. The fallbacks parameter now accepts "default", which applies Anthropic's recommended fallback models by refusal category rather than a list you maintain. Requires the server-side-fallback-2026-07-01 beta header. If you built fallback handling after the Fable 5 suspension, this replaces your hand-maintained model list.
Fast mode is available for Opus 5 on the Claude API only — not on Bedrock, Google Cloud, or Microsoft Foundry — at $10/$50 per MTok.
Where you can run it
Claude API, Amazon Bedrock (anthropic.claude-opus-5), Google Cloud, and Microsoft Foundry. Opus 4.8 remains available on all of them, so there's no forced migration deadline.
One thing that broke on the same day
Anthropic removed fast mode for Claude Opus 4.7 on July 24. Requests to claude-opus-4-7 with speed: "fast" now return an error — and unlike the Opus 4.6 removal a month earlier, they do not silently fall back to standard speed. Opus 4.7 itself still works at standard speed.
If you have anything still pinned to claude-opus-4-7 with fast mode on, it is failing right now. Migrate to Opus 5 or Opus 4.8.
What to do this week
- Change the model ID on one non-critical workload and run your evals.
- Check
max_tokens— thinking now eats into it. - Grep your prompts for "verify" instructions and delete the ones aimed at earlier models.
- If you disable thinking anywhere, confirm the effort level is
highor below. - Try dropping to
mediumeffort on a workload where quality has headroom, and compare cost.
Related reading
- Choosing the right Claude model — the decision framework
- Claude Sonnet 5 — the new default for everyday work
- Claude Opus 4.8 — the model Opus 5 replaces
- Claude cost optimization — where effort levels fit in a cost strategy
Source: What's new in Claude Opus 5 and the Claude Platform release notes, July 24, 2026.