Claude Opus 4.7 launches — adaptive thinking takeover and three breaking changes
Anthropic shipped Opus 4.7 and killed the budget_tokens thinking API in the same stroke. Here's a tour of the adaptive-only switch and the silent breaking changes.

On April 16, Anthropic released Claude Opus 4.7. The sticker price is identical to Opus 4.6 at $5 per million input tokens and $25 per million output tokens, yet the budget_tokens code that worked yesterday throws a 400 today. The reason is simple enough to print on an index card: adaptive thinking is now the only supported reasoning mode on Opus 4.7, and the old {type: "enabled", budget_tokens: N} shape is rejected at the gateway.
I found this out the way most people will. I swapped one character in a model ID — claude-opus-4-6 to claude-opus-4-7 — and watched a production trading bot pipeline collapse before its first inference. There was no deprecation warning in the logs, no friendly "the thinking API has been updated" banner. Just a 400 Bad Request and, buried in the response body, a complaint that the thinking.type field had been refused. This post unpacks the three breaking changes hiding behind that one character, with code, math, and a receipts-driven walkthrough.
Opus 4.7 at a glance
The numbers first. The model identifier is claude-opus-4-7. The context window is 1M tokens, the maximum output is 128k tokens, and the knowledge cutoff is January 2026. Vision accepts images up to 2,576 pixels on the long edge — roughly 3.75 megapixels, which the release notes describe as "more than 3x as many pixels" as prior Claude models. Deployment surface covers the Claude API, Amazon Bedrock in research preview, Google Vertex AI, and Microsoft Foundry.
Pricing holds flat at $5 input and $25 output per million tokens, matching Opus 4.6 exactly. But a flat price list does not translate into a flat invoice. Opus 4.7 ships with a new tokenizer, and the same text now tokenizes to between 1.0x and 1.35x the previous count depending on content type. The official documentation tooltip makes it explicit: 1M tokens on Opus 4.6 held roughly 750k English words, while the same 1M tokens on Opus 4.7 only holds about 555k. Your effective cost per useful unit of work goes up even though the headline rate does not.
Beyond cost mechanics, Anthropic is claiming two substantive wins: "substantially better at following instructions" and a "step-change improvement in agentic coding" over Opus 4.6. Multi-session memory quality is up as well. A separate model called Claude Mythos Preview ships invitation-only through Project Glasswing for defensive cybersecurity research — the UK AI Safety Institute noted Mythos "autonomously executed a 32-step network simulation typically requiring 20 human hours" at rates they had not previously benchmarked.
Breaking change #1 — adaptive thinking is the only mode
The extended thinking API on older Claudes used thinking: {type: "enabled", budget_tokens: 10000}. Opus 4.7 refuses that shape with a 400. The only accepted path is thinking: {type: "adaptive"}, as documented in the adaptive thinking reference. The budget_tokens parameter is gone from the surface entirely.
Here is the shape that breaks on Opus 4.7.
const response = await client.messages.create({
model: "claude-opus-4-6",
max_tokens: 16000,
thinking: {
type: "enabled",
budget_tokens: 10000,
},
messages: [{ role: "user", content: task }],
});
for (const block of response.content) {
if (block.type === "thinking") {
console.log(block.thinking);
}
}
And the replacement that Opus 4.7 accepts.
const response = await client.messages.create({
model: "claude-opus-4-7",
max_tokens: 16000,
thinking: { type: "adaptive", display: "summarized" } as any,
output_config: { effort: "high" } as any,
messages: [{ role: "user", content: task }],
});
Three shifts matter here. The type becomes "adaptive". Budget control migrates from an integer token cap into a categorical effort parameter on output_config. And the SDK's TypeScript definitions have not yet caught up, so as any is the pragmatic escape hatch until the next SDK release lands. Opus 4.6 and Sonnet 4.6 still accept "enabled", but Anthropic has marked it deprecated; anything new should be written against the adaptive shape to avoid two migrations in a row.
The hidden bonus of adaptive mode is that interleaved thinking — reasoning blocks between tool calls — is enabled by default. Agent loops that previously needed a separate beta flag to reason between search and retry steps now get that behavior for free. This is the structural claim behind "step-change improvement in agentic coding" in the release notes.
One more quiet default change deserves a callout: thinking is OFF by default on Opus 4.7. If you do not explicitly pass thinking: {type: "adaptive"}, you get zero reasoning blocks at all. Someone who remembers "thinking used to just be on" and only flips the model ID will silently receive lower-quality answers for hours before noticing.
Breaking change #2 — thinking.display flipped silently
The second landmine is meaner because it does not throw. The default value for thinking.display was "summarized" on Opus 4.6. On Opus 4.7 it is "omitted". No error, no migration note in the response — the thinking field on each block just returns an empty string.
In my LLMTrio project I had a collapsible "show Claude's reasoning" panel. Thirty minutes after deploying the Opus 4.7 bump, the first user reported that the panel had gone blank. Logs showed the thinking blocks still present in the response, but the text payload inside them was empty. One line fixed it: thinking: {"type": "adaptive", "display": "summarized"}, explicit and deliberate.
The encrypted signature field still travels in the response regardless of display setting. Multi-turn continuity — re-injecting prior reasoning into the next request — works independently of display. Anthropic's rationale for the new default is faster time-to-first-text-token when streaming, since the service can skip formatting a summary before emitting user-visible output. Reasonable for chat UIs, disruptive for research tools and agent observability dashboards that rely on surfacing the reasoning trace.
Breaking change #3 — the new tokenizer inflates input cost up to 1.35x
The third one you only catch by measuring. Opus 4.7's tokenizer packs the same text into "roughly 1.0–1.35x" more input tokens compared to Opus 4.6, with the multiplier varying by content type. Prices did not change, so the effective bill for a given workload can rise up to 35 percent.
In concrete numbers: a workload that metered 500M input tokens per month on Opus 4.6, at $2,500 per month, may meter as 675M input tokens per month on Opus 4.7 in the worst case — a $3,375 bill for the same job. An $875 monthly delta that arrives purely from a tokenizer swap. Anthropic's own documentation notes the English conversion moves from about 750k words per million tokens on Opus 4.6 to about 555k per million on Opus 4.7, which is close to the 1.35x ceiling.
My own logs show Korean and TypeScript both pushing toward the top of that band. The exact same prompt in my saju app metered 2,312 tokens on Opus 4.6 yesterday and 3,014 tokens on Opus 4.7 today — a 1.30x ratio. If your traffic skews toward Korean copy, CJK generally, or verbose typed codebases, open the migration guide and run a representative corpus through the new tokenizer before flipping production. "Same price" is marketing-true and invoice-false.
xhigh — the new effort level and Claude Code's silent bump
The space where budget_tokens used to live now belongs to effort. Opus 4.7 exposes five levels: low, medium, high (the default), xhigh (new, Opus 4.7 only), and max. You pass it as output_config: {effort: "xhigh"}. xhigh is a deliberate notch between high and max, intended for workloads that want more depth than default without paying the full max-effort tax.
Claude Code users should know that the same release bumps Claude Code's default effort to xhigh across all plans — silently. Commands like /plan and /implement will feel measurably slower than yesterday, and combined with the tokenizer inflation, monthly spend can jump visibly. If cost matters, dial effort back to high in your project settings and reach for xhigh only when the task clearly justifies it. Claude Code also shipped a unified multi-project management interface today and previewed a Microsoft Word beta integration. I am currently writing a Claude Code book, and this xhigh default has already earned a dedicated callout in the draft.
The other shoe — Anthropic's AI design tool dropped the same day
Anthropic paired the Opus 4.7 announcement with an in-house AI design tool for websites and presentations. The Information broke the story on April 14, and Figma and Wix shares slid between 2 and 4 percent on the same session. This is the signal that Opus 4.7 is not just a model increment — Anthropic is expanding the product stack. For indie builders this is a net positive; the mechanical work of producing five or six landing page variations now collapses to a single agent call.
The migration checklist I am following today
You do not have to move to Opus 4.7 this hour. If you do, a clean order of operations helps. Find every call site that still uses thinking.type = "enabled" and replace it with "adaptive", dropping budget_tokens. Add display: "summarized" explicitly where your UI surfaces the reasoning trace. Meter a representative sample of your prompts against the new tokenizer to project the monthly bill impact before traffic reaches the new model. For Claude Code, set effort to high at the project level and opt up to xhigh only when the task is worth it.
One character in a model ID can drag three breaking changes behind it.
The price column did not move, but effective cost and response behavior both did. Opus 4.7 is better approached as an API redesign with a model upgrade attached, rather than a drop-in version bump.
Sources
AI 트렌드를 앞서가세요
매일 아침, 엄선된 AI 뉴스를 받아보세요. 스팸 없음. 언제든 구독 취소.
