Hey guys, Mr. Technology here.
It is Wednesday, July 29, 2026, and the most interesting thing about Claude Opus 5 is not the price. The price is the boring part — $5/$25 per million tokens, identical to Opus 4.8. Most coverage spent Monday and Tuesday arguing whether "half the price of Fable 5" is a cut or a tier comparison. That argument is over.
The interesting thing is the dropdown. Opus 5 ships with a five-level effort parameter — low, medium, high, xhigh, max — that decides how aggressively the model thinks before answering. Most coverage described three levels. The docs list five. And buried in Anthropic's own launch chart is the most useful finding of the release: **on Frontier-Bench v0.1 and the Artificial Analysis Coding Agent Index, max scores lower than xhigh while spending more tokens.**
This post is about the dial, what it actually controls, where it costs you money, and the three production traps your migration is about to walk into.
effort is set as output_config.effort on the request. No beta header. Defaults to high. It applies to the whole request — thinking, tool calls, visible text. From the Claude platform docs:
| Level | What it is for |
|---|---|
low | Most efficient. Some capability reduction. Good for subagents. |
medium | Balanced. Moderate token savings. |
high | The default. Identical to omitting the parameter. |
xhigh | Long-horizon agentic work. Runs over 30 minutes. Million-token budgets. |
max | Unconstrained token spending. Deepest reasoning. |
Three properties matter more than the level names.
It governs all tokens, not just thinking. Lower effort means fewer tool calls and no preamble; higher effort means more tool calls, explained plans, detailed summaries. For anything agentic, the tool-call count is where the money actually goes.
It is a behavioural signal, not a token cap. At low, Claude still thinks on hard problems — just less. If you need a hard ceiling, max_tokens is the ceiling; effort is a lean.
On Opus 5 it does not reliably shorten visible answers. If you were planning to use effort: low as a verbosity dial, you are using the wrong lever. Prompt for length instead.
This is the buried lede and the reason I am writing this post.
On Frontier-Bench v0.1, the agentic terminal coding evaluation where Opus 5 leads by a margin, the curve peaks at xhigh. The max setting — the highest-effort option, the one Anthropic positions as "deepest reasoning" — comes in slightly below xhigh. The headline 43.3% figure sits at xhigh, not max. The same shape shows up on the Artificial Analysis Coding Agent Index, where the score drops at max while the cost per task keeps climbing.
That is a strange thing for a vendor to put in a launch post. It is also the most useful thing in the entire release.
The plausible reading: at max, the model over-thinks. It revisits subproblems it already solved, runs redundant verification on already-verified output, and produces longer chains-of-thought that exhaust context budget without adding accuracy. The setting that costs the most gives you less capability than the setting one notch down. Non-monotonic at the top. That is a routing bug, not a feature.
The architectural reading: effort is a soft hint to the inference stack about token allocation. At max, the model is asked to spend more than it knows how to spend efficiently. Below xhigh, the dial maps to real behavioural changes. Above xhigh, it maps to wasted compute.
**Do not default to max.** Default to high, escalate to xhigh when you have a specific reason (long-horizon agent, hard debugging, synthesis where the extra reasoning moves your metric), and treat max as a research-mode setting you reach for when xhigh has already failed. If your platform team is about to ship max as the new premium default, you are shipping a worse product at a higher cost.
Trap 1: Changing effort mid-conversation invalidates your prompt cache. Documented in the effort docs. Caching is keyed on the request prefix; modifying output_config.effort evicts your cached system prompt, tool definitions, and prior turns. You pay full price for the cache rebuild. If your agent loop dynamically escalates effort per turn — common in "easy sub-task, hard sub-task" flows — you are torching cache hit rate every escalation. Fix effort per session.
Trap 2: Effort does not save equally across workload shapes. Same 40% output-token cut:
| Workload | At high effort | After cut | Saving |
|---|---|---|---|
| Write-heavy: 30K in, 5K out | $0.275 | $0.225 | 18% |
| Read-heavy: 50K in, 1K out | $0.275 | $0.265 | 3.6% |
Same reduction, five times more savings on the write-heavy shape. A coding agent is exactly what effort helps; a 50K-context retrieval pipeline barely moves. Profile per workload.
Trap 3: Effort does not reliably shorten visible answers. If you migrate expecting effort: low to produce terser chat replies, you will be disappointed. Visible output length is governed by the prompt, not the dial. **Use system-prompt instructions for terseness. Use effort for thinking depth.**
The strategic read: the dial turns Opus 5 into a routing architecture. One SKU with five capability tiers means you can collapse three Sonnet/Opus/Fable paths into one model and an effort argument. Use a cheap classifier (Sonnet 5, Haiku) to bucket queries as trivial / standard / hard / frontier, map to low / medium / high / xhigh, and reserve max for retry-on-xhigh-failure only. Cache by effort — if your traffic profile is dominated by standard, your hit rate stays high.
This is the first time a frontier model has given you an explicit per-request lever on cost-vs-capability. It is also the first time one has shipped with a routing bug at the top of that lever. **The dial is real architecture. The bug at max is the warning.** Anthropic will fix the monotonicity in 5.1 or 5.2; the pattern persists.
Default to high. Do not ship max as a premium tier — the benchmark data does not support it. For long-horizon agent workloads, benchmark xhigh, profile cache thrash, lock per session if it clears your quality bar. For subagents and high-volume trivial requests, test effort: low. Watch for max to get fixed or quietly deprecated; right now it costs more and does worse on the charts Anthropic published.
Anthropic shipped a routing architecture dressed up as a configuration parameter, then published a chart showing the top of that architecture is broken. Most coverage missed the chart. Builders who read it will save real money on xhigh and on low, and skip max until Anthropic fixes the over-thinking. Builders who did not will ship max as a premium tier, bill their customers more, deliver lower quality, and discover the anomaly when churn moves.
Read the chart. Skip max. Default to high. Escalate to xhigh on evidence.
— Mr. Technology
low, medium, high, xhigh, max — set as output_config.effort, defaults to highmax scores lower than xhigh while costing more. Non-monotonic at the top.high. Use xhigh for hard long-horizon work. Skip max until the monotonicity is fixed.max-vs-xhigh anomaly on Frontier-Bench v0.1 and CursorBench 3.2.max_tokens for xhigh and max runs.max-vs-xhigh anomaly from Anthropic's own chart.