Choosing & Tuning Claude 5.5 Models

Sonnet 5.5 or Opus 5.5? Which effort level? What does a task really cost? An opinionated course built on four Anthropic playbooks — and on the places their own numbers don’t support their own advice.

8 modules
2 commit-first simulators
~75 min
Sep 2026 sources

Spine texts (claude.dev): Building with Claude Sonnet 5.5 · What a task costs on Opus 5.5 · Spending your effort · Getting the most out of Opus 5.5

How to read this course

These four posts are written by Anthropic about Anthropic’s own products. They are unusually useful — they publish prices, benchmarks and failure breakdowns — and they are also marketing for a pricing ladder. So every module separates what the source says, where it is incomplete, version-specific or self-serving, and arithmetic I re-checked from the posts’ own numbers.

Modules 2 and 4 make you commit to an answer before the reveal. Do them before reading the explanations around them — the skill is the judgment, not the recall.

Course Modules

  1. The 5.5 lineup: what changedFoundations
  2. What a task actually costsEconomics + predict
  3. Effort: what it buysEvidence
  4. The Model & Effort DeskSimulator
  5. Prompting 5.5 (and deleting your rituals)Practice
  6. Migrating Sonnet 5 → 5.5Engineering
  7. Measure your own numbersMethod
  8. Quiz, flashcards & Monday checklistReview
1

The 5.5 lineup: what actually changed

Same shape, lower bill, more thinking — and a different price ratio than you think
Learning objectives
  • State the Sonnet 5.5 / Opus 5.5 price and capability differences from memory
  • Explain why “Sonnet is half the price” is only true for some token types
  • Separate measured claims from “up to” claims in launch copy

The table everything else hangs on

Per million tokensSonnet 5.5Opus 5.5Ratio
Input$2$42.0×
Output (incl. thinking)$10$202.0×
Cache write, 5 min$2.50$52.0×
Cache write, 1 hour$4$82.0×
Cache read (since 7 Oct; $0.20 on both at launch)$0.10$0.202.0×
Arithmetic re-checked (updated 14 Oct 2026)

The Sonnet post says Opus costs “twice as much across all categories.” At launch that was not quite true: its own comparison table showed the cache-read price at $0.20 for both, and in a long agentic session most input tokens are cache reads. On the Opus post’s reference session (2.0M cached, 200K fresh input, 60K output) that made Opus 5.5 = $0.40 + $0.80 + $1.20 = $2.40 against Sonnet 5.5 = $0.40 + $0.40 + $0.60 = $1.40: 42% cheaper, not 50%, with the gap shrinking as sessions got longer. On 7 October Anthropic halved Sonnet 5.5 cache reads to $0.10/M; the pricing page, read 14 October, now prices cache hits on both 5.5 models at 0.05× base input. Re-run the session: Sonnet 5.5 = $0.20 + $0.40 + $0.60 = $1.20, exactly half of Opus at every session length. The 2× claim is now true across the board.

What the source claims

  • Sonnet 5.5: “smarter, more efficient and 30% faster” than Sonnet 5, same per-token price, fewer tokens per task — “up to 30%” cost savings. Model ID claude-sonnet-5-5; 1M context, 128K max output (300K on Batches with a beta header); thinking on by default; effort levels low/medium/high/xhigh/max; default high on the API, medium in Claude Code; minimum cacheable prompt dropped from 1,024 to 512 tokens.
  • Opus 5.5: input and output 20% cheaper than Opus 5, cache reads 60% cheaper ($0.50 → $0.20). The Opus post says it “costs 40% less to run than Opus 5” for typical workloads.
  • Who does what: Sonnet for well-scoped everyday work with “a clear spec and a way to check the result”; Opus for nuanced judgment and long-horizon work; Fable 5.1 (2.5× Opus price, $10/$50) for long unsupervised runs and problems with no codebase precedent.
Where it’s incomplete

“Up to 30%” is a ceiling, not an estimate. The 20%/60% Opus price cuts are checkable facts (Opus 5 was $5/$25/$0.50: I reproduced the Opus post’s $3.50 → $2.40 session, a 31% drop from price alone). The further 9 points to reach “40% less” is an efficiency claim about token use that you cannot verify without your own tasks — which is exactly what Module 7 is for. Also note the vendor is telling you to choose by task type; the variable that actually decides is probability of finishing the task, which no price table shows.

Takeaways
  • Memorize one ratio: prices double from Sonnet to Opus except cache reads, which are equal.
  • The 40% and 30% headline figures mix verifiable price cuts with unmeasured efficiency claims.
  • Model choice is an expected-cost-to-finish question, not a price-per-token question (Module 4).
2

What a task actually costs

Turns × cache hit rate × output. Predict first.
Learning objectives
  • Decompose task cost into resent context, cache behaviour and output tokens
  • Predict the dollar effect of a cache-hit-rate change before seeing it
  • Identify which “cost-saving” habits can cost you a finished task

Why the same token price gives different bills

Each turn re-sends the whole accumulated context. The Opus post’s example: 40 turns averaging 70K tokens of context processes 2.8M input tokens, even though the conversation never exceeds 120K. Cut to 25 turns and you process 1.75M. Three levers then decide the price: turn count, how much of that input is a cache read, and how many output tokens (thinking included) you pay for.

Predict

Cache hit rate vs. bill

A task processes 2.8M input tokens on Opus 5.5 (input $4/M, cache read $0.20/M). Ignore output and cache-write costs. Type your estimate of the input cost in dollars at a 90% cache-hit rate, then commit.

Enter a number to unlock the reveal.

Output is the expensive half

At $20/M output versus $0.20/M cache read, an output token costs 100× a cached input token. The post’s figure: 60K output tokens = $1.20 = the price of reading 6M tokens from cache. “You pay for all of it, even when Claude Code only shows you a summary.” Thinking is billed output, which is why effort (Module 3) is a cost control as much as a quality control.

The habits the post recommends — and their price

  • Compact before a break, not after (cache still warm): about $0.25 at 150K tokens, saves about $0.025 per later turn — breaks even in ten turns.
  • Cache lifetime: 1 hour on subscriptions, 5 minutes on API keys. A 120K write costs roughly $0.60–$0.96, a read about $0.02.
  • Cache breakers: switching model, connecting an MCP server, and (on cloud providers) changing effort. In Claude Code, effort changes don’t break the cache.
  • Fast mode: 2.5× speed at 2× price ($8/$40); the first request after enabling reprices the whole uncached conversation, so enable at session start.
  • Agent teams: roughly 7× tokens for a standard session. Batch API: 50% off input and output.
Where it’s incomplete

“Effort pays for itself if it prevents one failed attempt” is the post’s most self-serving line. The arithmetic is right in isolation (+20K thinking tokens × $20/M = $0.40, about one ten-turn retry loop) but the premise — that a retry costs $0.40 — is an assumption. A retry in a 150K context costs far more than an early-session retry; a retry at human level (you re-reading a diff) costs far more than either. The claim is probably true more often than not; the post gives no measurement that it is.

The $13 per developer-day baseline (90% under $30) is the more important number: at that level, model spend is noise next to engineer time. Optimize for finished tasks and review time first; tokens second.

Every saving has a failure mode

The post admits “every way to spend fewer tokens can also cost you a finished task.” Its own benchmark: a customer-support eval cut 18% by moving to Opus 5.5 at low effort and another 9% by deleting ritual instructions. Note what made that safe — there was an eval. Cutting tokens without one is guessing.

▶ Animated recap · 1:36
Two hosts walk the three levers — turns, cache hits and output — with the module’s own numbers. Best watched after the Predict exercise above.
Takeaways
  • Cost = turns × resent context, discounted by cache hits, plus output at 100× the cache-read price.
  • Cache hit rate is the biggest lever: 2.8M tokens costs $11.20 uncached, about $1.62 at 90%, about $0.99 at 96%.
  • Only trust a cost-cutting change that an eval or a measured A/B supports.
3

Effort: what it buys

A compute dial — most useful where edge cases hide
Learning objectives
  • Define effort as a spend-and-verify dial, not an intelligence dial
  • Read the Terminal-Bench 3.0 failure breakdown critically
  • Choose an effort level by the shape of the task, not its importance

The source’s model of effort

Thariq’s position

Effort is “an approximation of how much compute you want it to spend on the task” — a 12-hour deadline versus a 1-hour deadline. Higher effort means “more independent action for judgement and verification.” Median tokens per attempt on Terminal-Bench 3.0 rise roughly 50K → 100K → 200K → 300K from low to max, and pass rate rises with them. His workflow: hand Claude a spec, have it interview you for gaps, implement on low, review the gist, iterate on low, then verify on high. The headline finding: “higher effort is best for tasks with lots of hidden edge cases.”

The evidence

Task (Fable 5.1)LowHigh / xhighWhat changed
html-js-filter sanitizer1/5 (~2 min)5/5 (~33 min)Adversarial review, XSS suite, fuzzer
mvcc-lsm-compaction0/5 (1 min)4/5 (11 min)Reproduced the crash, wrote randomized tests
cli-2ph-simplex0/55/5Tested against brute-force reference; timed larger inputs
gsea-proteomics0/54/5Tried two prep methods; investigated the disagreement

Notice the pattern: the extra minutes were spent on tests and references. Effort buys verification behaviour. By domain, pass-rate gains from low to top: hardware +41 pts, security +23, science +20, ML +19, software +13, media +12, operations +10.

Reading the failure breakdown critically

Failure class (370 attempts)LowMaxChange
Passed140 (37.8%)214 (57.8%)+74
Missed edge cases5924−59%
Wrong interpretive call3825−34%
Misread requirements4526−42%
Incomplete implementation3110−68%
Median tokens73K222K3.0×
Where I disagree with the post

1. The prose overstates the table. The post concludes effort “primarily addresses testing and edge-case gaps, not conceptual misunderstandings.” But misreading requirements fell 42% and incomplete work fell 68% — the largest relative drop. Edge cases are one beneficiary among several.

2. The categories don’t sum. Low: 140+59+38+45+31 = 313, not 370; Max: 214+24+25+26+10 = 299. About 57 and 71 attempts respectively sit in an unlabeled remainder. I can’t tell you what they are; neither can the post.

3. Price of the gain. +20 points of pass rate cost 3× the tokens — at max you pay for 370 runs of ~222K tokens (about 82M) versus ~27M at low, roughly 55M extra tokens, to buy 74 extra passes — about 0.74M tokens per additional pass. That’s fine for security review; it’s poor for renaming a variable.

4. Conditions. Results are Fable 5.1 with “production safety interventions off” and no internet; the Opus 5.5 run was three weeks later, 128K output cap, no GitHub/PyPI. Not comparable to a leaderboard — or to your repo. The three-build experiments are n=1 each.

A counter-example in the post itself

On a highly specified build, max took 79 minutes and “Claude simplified implementation details.” More effort isn’t monotonic: with a full spec, extra compute can second-guess the spec. Low took 16 minutes, max 79 — for a spec-driven task the marginal value of effort is lowest, which is why Thariq’s own workflow front-loads the spec and implements on low.

Pragmatic rule

Choose effort by hidden-edge-case density and autonomy, not by how much you care: low for sketches, renames and brainstorming; medium for routine features (the Claude Code default on both models); high for brownfield fixes and anything where a wrong answer looks plausible; xhigh/max for unsupervised work or security-critical review. On Sonnet 5.5, levels are recalibrated — the Sonnet post says a level “doesn’t produce the same amount of thinking” as on Sonnet 5, and the Opus post says Opus 5.5 thinks more per turn than Opus 5 at the same level, most at xhigh/max. Old settings do not transfer.

Takeaways
  • Effort buys verification. Give Claude a way to check and the low-effort gap narrows; hide the edge cases and it widens.
  • The data is good; the prose summary is stronger than the data. Read the table, not the paragraph.
  • Spec first, low effort to build, high effort to verify — the only workflow in the post backed by its own experiments.
4

The Model & Effort Desk

Five tasks. Pick a configuration, commit, then see the expected cost to finish.
Read this first

The dollar and success-rate figures in this simulator are illustrative. They are built from the posts’ published price ratios and effort findings, then rounded — they are not measurements of any real workload. What is real is the reasoning: expected cost to a finished task = cost per attempt ÷ probability of success. The cheapest configuration per attempt is often not the cheapest per result.

Simulator

Model & Effort Desk

Takeaways
  • Cost per finished task = cost per attempt ÷ P(success). A cheap model with a low pass rate is expensive.
  • Sonnet wins where a spec and a check exist and the job repeats; Opus wins where judgment is needed; Fable only after Opus hit the same wall twice.
  • Timing matters as much as model: when you compact, enable fast mode, or switch models changes the cache bill.
5

Prompting 5.5 — and deleting your rituals

Define done, define stop, stop saying “think hard”
Learning objectives
  • Write a task with explicit completion and pause criteria
  • Remove legacy prompt workarounds without regressing
  • Know which advice is durable and which is model-version folklore

What the playbooks tell you to do

  • Define “done.” “Migrate the payment endpoints… Done means: every endpoint uses the new client, the old client is deleted, and the test suite passes.” Then say when to pause: only if “a test fails for a reason you can’t explain.”
  • Remove “think carefully.” Opus 5.5 reasons by default; the post says removing it made responses faster without hurting quality.
  • Stop/continue rules in CLAUDE.md: keep going when no input is needed; pause before destructive operations (deleting data, force-pushing, touching external systems).
  • Persist the plan: “Keep a checklist in TASKS.md” so a compaction doesn’t lose it. Fan out large audits to subagents and validate their evidence before accepting it.
  • Design by negation: list what to avoid (“no cream background, no italic accent words, no 01/02/03 labels…”) rather than asking for “distinctive.”
  • Ask for blockers: “List only problems you’d block the merge for… why it’s wrong, and how to show it fails.” And “mark anything you couldn’t confirm, and say where you looked.”
  • Delete rituals. The Sonnet post: if your prompts carry “refusal steering, tool-call retry shims, or ‘do not be lazy,’” remove them and re-run evals before tuning anything else. The cost post’s audited benchmark cut another 9% after removing mandatory procedures, scratchpad rules, verify-twice patterns and contradictory instructions.
Where I push back

“Think carefully” advice is version-specific. It applies to models that reason by default. If you route anything to a model with thinking off, or via thinking: between_tools (Module 6), the trade reverses. Treat it as a per-model fact, not a principle.

“Negation” beats positive direction is demonstrated on one prompt. Plausible — constraints do narrow a default — but the post shows no eval. It is also mildly self-serving: it explains away a known weakness (samey defaults) as a prompting skill.

“Deliver the complete task upfront” conflicts with the effort post’s own workflow (interview → low-effort draft → iterate). The reconciliation: give complete intent and done-criteria up front, but iterate cheaply when the spec itself is underspecified. One-shotting an underspecified task at max took 67 minutes for a heat-chart nobody asked for.

A prompt that removes “verify twice” must add a real check. The Sonnet post supplies one (run a real test/build/type-check; a syntax check doesn’t count; install declared dependencies, never via sudo). That paragraph is the one piece of prompt text in the four posts I would copy verbatim — because it replaces a ritual with a verifiable action.

Takeaways
  • Explicit done-criteria + explicit pause-criteria replace most hand-holding.
  • Delete rituals, then re-run the eval before touching anything else.
  • Replace “be careful” with “run the real check”.
6

Migrating Sonnet 5 → 5.5

Five breaking changes and one response-shape trap
Learning objectives
  • Rewrite a Sonnet 5 request for 5.5
  • Predict which change fails loudly and which fails silently
client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=16000,
    thinking={"type": "between_tools"},   # was {"type": "disabled"}
    output_config={"effort": "high"},     # between_tools: low/medium/high only
    messages=[...],
)
ChangeFails how?Fix
thinking: disabled gone; thinking on by defaultLoud (400 on between_tools at xhigh/max)Use between_tools at low/medium/high, or adaptive
Forced tool_choice unsupportedLoudtool_choice: auto, strict: true tools, say in the prompt to use the tool
Thinking blocks: other models can’t read 5.5’sSilent on model-switching conversationsKeep threads append-only; don’t hand a 5.5 thread to another model
Computer use: computer_toolset_20260801 replaces computer_20251124LoudDrop beta header/namespace; update the loop for batch actions (Bedrock still accepts the old tool)
Advisor tool: Opus 4.8/4.7 and Sonnet 5 rejected as advisors; advice returns as encrypted advisor_redacted_resultLoud; and you can’t log the advice textUse Opus 5.5, Opus 5 or Sonnet 5.5 as advisor
Text between tool calls now arrives as thinking blocksSilent: progress notes vanish from your UIRead blocks by type; thinking.display “summarized” or “updates” (beta)
content[0].textLoud in production, invisible in tests that disable thinkingIterate blocks and branch on block.type
Diagnose

Which change bites you first?

Your app calls Sonnet 5 with thinking: disabled, a forced tool_choice on one tool, reads response.content[0].text, and streams progress text to a status bar between tool calls. You only change the model ID to claude-sonnet-5-5. Commit: what is the most dangerous failure — the one you’d ship to users?

Choose one to unlock.
Where it’s version-specific

Nearly all of this page will be stale within a model generation: beta headers, toolset names, advisor compatibility. The durable lessons are three: iterate response blocks by type; treat hidden model-to-model state (thinking blocks, encrypted advice) as a coupling you must version; remove workarounds before tuning. Also read the small print on images: Sonnet 5.5 uses the high-resolution tier, so a 2000×1500 image costs about 2.5× the tokens it did on Sonnet 4.6/4.5 or Haiku 4.5 — a silent cost regression for vision workloads; downscale unless you need the pixels. In Claude Code, the sonnet alias resolves to 5.5 from v2.1.284, defaults to medium effort, and thinking cannot be turned off.

Takeaways
  • The most dangerous changes are silent: response shape and cross-model thread coupling.
  • Ship the migration behind an eval, not a model-ID swap.
  • Caching improves for free: 512-token minimum, but any effort change invalidates the top-level cache.
7

Measure your own numbers

The one recommendation all four posts agree on — and how to do it without fooling yourself
Learning objectives
  • Run a fair model/effort A/B on your own backlog
  • Compute break-even success rate for a cheaper model

The cost post ends: “your own numbers are the ones to trust.” Its protocol: pick realistic backlog tasks, alternate models with /model, note turns, output tokens and cost per run, and finish 3–4 tasks before concluding. That is directionally right and statistically thin.

The break-even rule

Cheaper model S beats stronger model O when cost_S / p_S < cost_O / p_O, i.e. when p_S / p_O > cost_S / cost_O. With the reference session (Sonnet $1.40 vs Opus $2.40, ratio 0.58), Sonnet must finish at least 58% as often as Opus to win on tokens — before counting your review time, which almost always dominates.

Five improvements to the post’s protocol

  1. Randomize order. Alternating A/B invites drift (you learn the repo between runs). Coin-flip which model goes first per task.
  2. Use a checkable outcome (tests pass, eval score), not “looked fine.” Sonnet’s own prescription for when to use it is “a way to check the result” — use the same check for the experiment.
  3. Measure time-to-accept, not just tokens. A cheap run you rewrite is the expensive run.
  4. Hold out tasks. Tune effort on some tasks, confirm on others — the lesson of the sibling post on hillclimbing: changes that help the tasks you tuned on but not new ones are overfitting.
  5. Expect variance. Terminal-Bench reports k/5 attempts for a reason. Three or four single runs cannot separate a 10-point gap from noise.
Where the vendor’s interest shows

Every recommendation in the four posts nudges spend up the ladder when things go wrong (raise effort; then Fable 5.1 at 2.5× price) and sideways for volume (Sonnet, Batch). None tells you to reduce scope, add a better test, or fix the spec — the cheapest fixes, and the ones that work on any model. Treat the ladder as the last lever, not the first.

Takeaways
  • Break-even success ratio = cost ratio. Compute it before debating models.
  • Randomize, hold out, use a real check, measure review time.
  • Fix the spec and the test before climbing the price ladder.
8

Quiz, flashcards & Monday checklist

Commit an answer, then see the explanation

Quiz

Flashcards (click to flip)

Monday checklist

  1. Pick your default: Opus 5.5 at medium for supervised multi-file work; Sonnet 5.5 at medium/low for repeatable, checkable jobs.
  2. Put a real check (tests/build/type-check) and explicit done- and pause-criteria in every long-running prompt.
  3. Delete “think carefully”, “do not be lazy” and verify-twice rituals; re-run an eval; then tune.
  4. Build a 10-task held-out backlog; A/B models and effort with randomized order; record pass, tokens, cost and minutes-to-accept.
  5. Audit cache behaviour: compact before breaks, enable fast mode at session start, avoid mid-task model switches.
  6. Migration PRs: iterate content blocks by type; never ship a model-ID-only swap.
Sourcing note

All four source posts were read in full on 30 Sep 2026 at claude.dev. Prices, benchmarks and quoted phrases are from those posts; the arithmetic in the “re-checked” boxes is mine and reproducible from their published numbers. The simulator’s per-attempt costs and success rates are illustrative, not measurements. Model behaviour and pricing change quickly — re-check before you rely on any figure. Update, 14 Oct 2026: prices re-checked against the Claude Platform pricing page. Anthropic halved Sonnet 5.5 cache reads to $0.10/M on 7 October (cache hits on both 5.5 models are now 0.05× base input); the price table, the re-checked arithmetic, one quiz and one flashcard were updated accordingly. Everything else matches the launch posts.