●FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtask●LIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its own●MCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS●PLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callback●SONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15●IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October●FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtask●LIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its own●MCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS●PLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callback●SONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15●IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Claude Sonnet 4.6 vs Opus 4.6 — A Task-by-Task Selection Guide From Daily Use
Choosing between Sonnet 4.6 and Opus 4.6 comes up more often than you'd expect. From someone who uses both daily, here's a task-by-task breakdown of when the cost gap is justified and when it isn't.
The single most common question I've gotten since Anthropic released the Claude 4.6 series is "which one should I use?" — Sonnet 4.6 versus Opus 4.6.
The official docs say something like "Opus for the most advanced reasoning, Sonnet for balance." That's not wrong, but anyone actually doing the work wants the next layer down: "for this task of mine, which one?"
I run four websites and several mobile apps as a solo operator, so I'm calling Claude 100+ times a day. Here's a task-by-task breakdown based on a month of running both side by side. It's one person's experience, but if you're navigating similar tradeoffs, hopefully this helps.
The Premise: There's About a 5x Cost Gap
The pricing gap is the first thing to internalize. At the time of writing, Opus 4.6's input/output cost is roughly 5x Sonnet 4.6's. Even on the Pro chat plan, Opus has tighter rate limits.
So "default to Opus when in doubt" isn't sustainable on either cost or quota. Throwing problems Sonnet can solve at Opus is overkill in the modern era. Conversely, throwing problems Sonnet can't solve at Sonnet anyway can end up costing more in retries than just paying for Opus once.
A lot of people overlook this "retry cost." Solving a problem with one Opus pass is often cheaper than three Sonnet attempts.
What I Send to Sonnet 4.6 Without Hesitation
Tasks I have flagged as "one-shot Sonnet":
Boilerplate code generation. React component scaffolding, utility functions, CRUD scaffolding — anything pattern-shaped is fine for Sonnet. I can't feel the Opus delta on these.
Editing, translation, and summarization. I write articles in Japanese and English; one is always translated by Sonnet. I've A/B'd against Opus and at blog-article quality I can barely tell them apart. With a 5x cost gap, Sonnet wins.
Simple Q&A and Slack-bot-style use. For common FAQs or "explain what I already know in a tidy form," Opus is obviously over-spec.
Test code generation. In the TDD workflow I use, Sonnet handles almost all the test writing. Tests are about putting behavior into words, not about deep reasoning.
✦
Thank you for reading this far.
Continue Reading
What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.
WHAT YOU'LL LEARN
✦Judge the break-even where three Sonnet retries cost more than one Opus call, using a yen-based model that includes review time
✦A numbered four-step procedure that settles gray-zone tasks in about 30 seconds
✦The two-tier implementation that limits Opus to design and review while Sonnet mass-produces, cutting Opus calls to about a fifth
Secure payment via Stripe · Cancel anytime
✦
Unlock This Article
Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.
The flip side: tasks I struggled with on Sonnet for hours and resolved instantly by switching to Opus.
Structural refactoring across multiple files. "Separate this feature's responsibilities into auth / business logic / data access layers" — the kind of request where Sonnet polishes individual files but loses overall coherence. Opus aligns these much more reliably.
Hard debugging. Bugs whose causes are tangled and don't yield to log inspection. Sonnet tends to stack guesses ("might be this... or this..."), while Opus's hypotheses feel one notch more confident.
Greenfield design. "Design a multi-site automation foundation" — anywhere chained tradeoffs determine the answer, Opus pushes further. Sonnet gives a safe answer; Opus often adds reasoning like "if you put a queue here, future expansion gets easier, but the first six months might be YAGNI."
Long-form logical consistency checks. Whether checking an article's argument flow or a contract draft for contradictions, Opus's detection rate is clearly better.
How I Decide in the Gray Zone
The hardest cases are the in-between ones. My decision criteria:
"How costly is a retry?" If the output requires a one-hour code review, Opus's accuracy premium is worth it. If you can eyeball quality in seconds, Sonnet plus more attempts is rational.
"Who suffers if it fails?" A Stripe webhook implementation that ships to production is safer in Opus's hands than in mine reviewing it longer. An internal tool's admin styling? Sonnet is fine.
"Is this question searchable?" If something on Stack Overflow probably answers it, Sonnet's enough. If you're certain no one in the world has solved your exact problem, Opus earns its keep.
"Switch to Opus when stuck." I've made it a habit. Three rounds with Sonnet without progress, paste the context into Opus. It's rare for that not to break the impasse.
A Side Trick: Send the Same Question to Both
A slightly unusual pattern I use frequently: for high-stakes decisions, ask both Sonnet and Opus the same question and compare answers.
Example: "For this stack, Cloudflare Workers or Vercel Edge?" Reading both answers side by side reveals the shared concerns and the angles only Opus surfaced. The cost is one extra call but it's far cheaper than 30 minutes of my own searching.
I don't run this pattern for code generation — merging outputs is too expensive. It's specifically for "I want to compare answers" situations.
Surviving "Opus is Slow"
Opus's experiential weakness is response time. It's noticeably slower than Sonnet, and the gap widens with longer answers. In interactive sessions, the latency disrupts thought rhythm.
Two coping strategies. First, "format Opus prompts as longer, fuller requests." For rapid-fire short questions, use Sonnet. For one big package, send Opus. Spamming short questions at Opus wastes its capability and your time.
Second, "switch tasks while Opus thinks." While Opus chews on something, run another task on Sonnet, reply to email, brew coffee. Sitting and waiting is the worst use of the latency.
Know Each Model's Failure Modes
Both models have their typical "miss" patterns. Knowing them lets you spot a bad output faster.
Sonnet's classic miss: "plausible but shallow." Looks structurally right, but on closer reading the reasoning is thin or edge cases are dropped. In code, the happy path runs but error handling is sloppy.
Opus's classic miss: "excessive politeness." Explanations of things you didn't ask about that dilute the main point. Long hedges like "of course this is ultimately your decision." This is partly because Opus is trained to be more cautious — not a bad property — but in a hurry, it's noise.
I counter each with explicit prompts: "lead with a one-line conclusion" against Opus's hedging, and "list 5 edge cases" against Sonnet's shallowness.
Backing the Feel with Numbers — What the Benchmarks Show
So far I've been sharing how the two models feel in daily use. Feel alone isn't always convincing, though. When you line up the published benchmarks, they map closely onto the way I split my work.
Benchmark
What it measures
Opus 4.6
Sonnet 4.6
SWE-bench Verified
Overall coding ability
80.8%
79.6%
GPQA Diamond
Graduate-level scientific reasoning
91.3%
74.1%
OSWorld-Verified
GUI and desktop automation
72.7%
72.5%
The coding gap is about one point, and GUI control is essentially level. For everyday code generation and automation, there's little reason not to reach for Sonnet, which runs at a fifth of the cost. That's exactly why I hand routine code generation to Sonnet without a second thought — the numbers back it up.
The 17-point gap on GPQA Diamond, on the other hand, is precisely the territory I call "reluctantly an Opus job." The deeper the chain of reasoning, the more that gap shows up in practice — the same moment when switching a hard debugging session or a from-scratch design over to Opus suddenly unblocks it.
Both models ship with a standard 200K-token context window. Opus 4.6 supports a 1M-token window in beta, which becomes a deciding factor when you want to read a large codebase in one pass.
Going Further — Let Opus Architect, Let Sonnet Mass-Produce
The choose_model helper above routes a whole task to one model or the other. You can go one level deeper and split the roles within a single task: Opus as the advisor that designs and reviews, Sonnet as the executor that does the repetitive work.
This is the shape I settled on as an indie developer running multi-site automation on my own dime. I consult Opus once at the start — what should I build, and in what order? — and it returns a plan with its reasoning attached. I hand that plan to Sonnet, which mass-produces the code or prose for each step. Then I run the whole thing past Opus one final time for a consistency review.
So Opus is called only twice: the initial design and the final review. Everything in between runs on Sonnet. Opus's judgment is concentrated on the two points where it matters most, and the bulk work flows at Sonnet's cost. A variant that pushes the orchestrator onto an even cheaper model is covered in detail in A Two-Tier Setup — Haiku 4.5 Orchestrator with Opus 4.6 Worker for Balancing Cost and Quality.
import anthropicclient = anthropic.Anthropic()ADVISOR = "claude-opus-4-6" # design and reviewEXECUTOR = "claude-sonnet-4-6" # mass productiondef plan(goal: str) -> str: """Ask Opus for steps at a granularity the executor can start from.""" msg = client.messages.create( model=ADVISOR, max_tokens=2048, messages=[{ "role": "user", "content": ( f"Goal: {goal}\n" "List the steps to implement this, each at a granularity that can " "be started independently. For each step, state its input, the work, " "and its completion criteria." ), }], ) return msg.content[0].textdef execute(step: str) -> str: """Let Sonnet carry out each step — all the high-volume work lives here.""" msg = client.messages.create( model=EXECUTOR, max_tokens=4096, messages=[{"role": "user", "content": f"Implement the following step:\n{step}"}], ) return msg.content[0].textdef review(goal: str, outputs: list[str]) -> str: """Run the whole thing past Opus one last time for consistency.""" joined = "\n\n---\n\n".join(outputs) msg = client.messages.create( model=ADVISOR, max_tokens=2048, messages=[{ "role": "user", "content": ( f"Goal: {goal}\nHere are the per-step results.\n{joined}\n\n" "Point out any contradictions, gaps, or duplication across the whole, " "and suggest fixes if needed." ), }], ) return msg.content[0].text# Opus twice (design + review) + Sonnet N times (production)steps_text = plan("Design a shared article-generation pipeline for four sites")steps = [s for s in steps_text.split("\n") if s.strip().startswith(("-", "1", "2", "3"))]results = [execute(s) for s in steps]final = review("Design a shared article-generation pipeline for four sites", results)print(final)
Since adopting this, my Opus call count has dropped to roughly a fifth of what it was, while the design quality is nearly indistinguishable from running everything on Opus. As long as the initial plan is sound, Sonnet follows through on each step just fine.
One caveat: pass the advisor's output to the executor in a form it can act on directly. A vague plan handed to Sonnet lets interpretation drift propagate into every step. Ask Opus to plan at a granularity each step can start from immediately, and the downstream becomes far more stable.
Putting a Yen Figure on Rework — When the 5x Gap Flips
Early on I noted that people overlook rework cost. Here is the rough model I actually keep in my head, turned into numbers. Having a yardstick to return to when a call feels uncertain removes a lot of hesitation.
Two line items matter: the API cost per attempt, and the human cost of checking the output (time). For the API cost I reuse the article's premise — treat Sonnet as 1 and Opus as roughly 5.
Line item
Sonnet 4.6 (3 attempts)
Opus 4.6 (1 attempt)
API cost (assume ¥8 per attempt)
¥24
¥40
Review cost (10 min each, ¥3,600/hr = ¥60/min)
¥1,800
¥600
Total
¥1,824
¥640
Looking only at the API line, three Sonnet attempts (¥24) beat one Opus call (¥40). But checking each output takes 10 minutes, and valuing my time at ¥3,600/hr puts the review at ¥600 per attempt. Since attempt count multiplies review count, three Sonnet runs cost ¥1,800 in review alone versus ¥600 for one Opus run. Totals: ¥1,824 for three Sonnet attempts, ¥640 for one Opus — a 5x API gap that flips the moment you add review cost.
The break-even is simple: review cost per rework divided by the API price gap. The more human effort a check requires, the more Opus wins; outputs you can judge in seconds, like a visual tweak, have near-zero review cost, so adding Sonnet attempts is always cheaper. In the gray zone, this is the first thing I estimate in my head.
As a procedure, four steps settle it in about 30 seconds:
Estimate how long checking the output takes (seconds / minutes / tens of minutes).
If it is seconds, send it to Sonnet and push on attempt count.
If it is minutes or more, mentally multiply expected reworks by review cost.
If that exceeds the API price gap, hand it to Opus in one shot.
Turning the Mental Math into a Function — Escalate on Failure
The yardstick above works fine when I am the one typing the prompt. It falls apart inside an automated pipeline, where there is no human left to do the arithmetic.
My first attempt hardcoded the routing by task type. It broke almost immediately. "Production review goes to Opus, drafts go to Sonnet" sounds clean until a genuinely hard draft shows up.
What I run now sends everything to Sonnet first, then promotes to Opus only when a machine-checkable verification fails.
from dataclasses import dataclassfrom typing import Callableimport anthropicclient = anthropic.Anthropic()SONNET = "claude-sonnet-4-6"OPUS = "claude-opus-4-6"@dataclassclass RouteResult: text: str model: str escalated: booldef _ask(prompt: str, model: str) -> str: message = client.messages.create( model=model, max_tokens=2048, messages=[{"role": "user", "content": prompt}], ) return message.content[0].textdef route(prompt: str, verify: Callable[[str], bool]) -> RouteResult: """Sonnet first. Promote to Opus only when verify() returns False.""" draft = _ask(prompt, SONNET) if verify(draft): return RouteResult(draft, SONNET, escalated=False) final = _ask(prompt, OPUS) return RouteResult(final, OPUS, escalated=True)# Keep verify to things a machine can decide in secondsdef valid_json(text: str) -> bool: import json try: json.loads(text) except json.JSONDecodeError: return False return Trueresult = route("Reshape the following log into a JSON array: ...", verify=valid_json)print(result.model, result.escalated)
Everything hinges on verify. Does the JSON parse? Do the generated tests pass? Does the linter stay quiet? The moment you put a criterion in there that only a human eye can settle, the whole mechanism gets swallowed by the review cost from the previous section.
When Escalation Beats Going Straight to Opus
Let r be the escalation rate, Cs the Sonnet price, Co the Opus price. Escalation costs Cs + r × Co in expectation; going straight to Opus costs Co. The former wins under this condition:
Condition
Meaning
r < 1 − Cs / Co
Escalation is cheaper
When Cs / Co = 1 / 5
Escalation wins as long as r < 0.8
At a 5x gap, "Sonnet first" stays correct until Sonnet fails eight times out of ten. Almost no real task reaches that. My own pipelines sit between 12% and 18%.
So default to escalation when you are unsure. Just make sure escalated lands in your logs. A task type whose r suddenly climbs is quietly telling you that Sonnet was never the right fit — and from there you can decide whether to fix the prompt or route it to Opus directly.
My Current Ratio
For reference, my current mix is roughly 80% Sonnet 4.6 and 20% Opus 4.6. Each Anthropic model update shifts the ratio a little, but the past few months have been stable around there.
Sonnet at 80% isn't laziness — it's that most tasks genuinely fit Sonnet. The 20% Opus mostly gets consumed at the moment "Sonnet clearly isn't going to make it."
The thing to try this week: measure your own ratio. Note every time you reached for Opus, then count how often Opus was truly necessary. Below 30% means you can probably swap most Opus calls for Sonnet with no quality loss and a smaller bill. If you find lots of "I used Sonnet but it should have been Opus" moments, you have an underused quality lever.
Share
Thank You for Reading
Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.