19 min readCase studies
Claude Models and Effort Levels: What Actually Changes, and What It Costs
We ran 139 tests on nine of our own finished tasks across Haiku, Sonnet, Opus and Fable at different effort levels. What each setting got right, what it cost, and the decision table we now work by.

On nine of our own finished tasks, Claude Opus 5.5 got steadily better as we raised its effort level: from 80 % of the maximum score at low to 89 % at medium, 94 % at high and 98 % at xhigh. The cost per run grew from 0.57 times that of medium to 1.40 times at high and 3.42 times at xhigh. Fable 5.1, the largest model, cost about as much as Opus at xhigh and scored like Opus at low. Sonnet 5.5 scored the same at medium and high; high only doubled the price.
We ran 139 tests on 5 November 2026, on API credit, for $79.98 at list price. The tasks are real work we had already solved, so the correct answer was known before any model saw them. The tests ran Claude models through Claude Code, a Claude model graded part of the outputs (more on that below), and Claude also helped edit this article. Models change fast: every number here is dated 5–6 November 2026.
The results at a glance
| Question | Short answer |
|---|---|
| Does a higher effort level help? | On Opus 5.5, yes, at every step. On Sonnet 5.5, high scored the same as medium |
| What does it cost? | Opus 5.5 per run, against medium: low 0.57×, high 1.40×, xhigh 3.42× (median of nine tasks) |
| Is the largest model the best? | Not on short tasks: Fable 5.1 cost about as much as Opus xhigh and scored like Opus low |
| Where do the settings differ? | Writing, data analysis and judgement. On code with an automatic check almost every setting passed |
| What do we use now? | Opus 5.5 at medium by default, high for writing, debugging and every kind of review |
Why did we run these tests?
We had been working with the recommended defaults: the newest top model, first at medium effort and lately at high. Our impression from daily work was that Opus 5.5 beats Sonnet 5.5 on coding and debugging, and that Fable 5.1 does not feel clearly smarter than Opus. An impression is not a reason to pay several times more, or less.
Anthropic publishes benchmark numbers, but they are measured on Anthropic’s tasks, and they are spread over model cards, documentation pages and launch posts. We wanted three things they cannot give us: results on our own kind of work, the cost of a usable result rather than of a request, and a clear picture of what the effort setting actually changes.
Our own usage logs made the question concrete. Over 30 days of our daily Claude Code work we sent 13,235 requests. On Opus at high, 45 % of the cost was cache reads, 33 % cache writes and 22 % output. One finding came before any model test: a memory plugin, meant to cut token use, accounted for about a quarter of the list-price total on its own. It is off now. That is the same lesson as in our Kubernetes cost reviews: measure first, because the biggest line is often not the one everybody argues about.
How did we test?
Nine tasks from our own finished work
| # | Task | How it was graded |
|---|---|---|
| 1 | Fix the internal links without a trailing slash in our site generator, ForgeStack (10 known links) | Script: all 10 fixed and nothing else changed |
| 2 | Turn 8 cloud-provider invoice PDFs into a CSV: number, date, line items, net total | Script, against a reference the run cannot see |
| 3 | Find and fix a double-count bug from its symptom (600 instead of 300) in a cost tool | Script: the tool’s self-test plus 3 hidden checks from the real fix |
| 4 | Write a database sizing-report script from a specification (6 functions and a command line) | Script: 12 hidden tests, only 12/12 counts as a pass |
| 5 | Why does the K3s worker upgrade hang? Saved plan, node taint, plan status, alert and misleading TLS errors | Blind, by a person |
| 6 | Write a blog draft in English from a fact sheet and two style samples | Blind |
| 6a | The same article in Hungarian | Blind, plus language errors and calques |
| 7 | SEO analysis of our own webshop from saved pages and a three-month Search Console export | Blind, every quoted number recomputed |
| 8 | External security review of our own webshop from a one-off saved capture | Blind |
Task 5’s input is a reconstruction: the original job log no longer exists, so we rebuilt the bundle from the saved plan, node and alert. Tasks 5 to 8 had no shell and no network, only the files listed in the prompt.
Eight settings
| Model | Effort levels | Tasks |
|---|---|---|
| Haiku 5.5 | medium |
1, 2 and 6a |
| Sonnet 5.5 | medium, high |
all nine |
| Opus 5.5 | low, medium, high, xhigh |
all nine |
| Fable 5.1 | high |
all nine |
max stayed out because of the budget. The automatic tasks ran three rounds per setting. The blind tasks ran once, plus the repeats described below.
How the runs were isolated and graded
- Every run was a non-interactive Claude Code call in a
bwrapsandbox: read-only root, empty home directory, one writable work directory, and a separate API key with its own spend limit. - Claude Code’s
--baremode drops hooks, plugins, project instructions, memory and MCP servers, so the settings compare like with like. It also means this is not exactly our daily setup. - Each run had a cost cap: the pilot run’s cost × the expected price multiplier of the setting × 3, at least $1. One run broke the pattern: Fable’s third round on task 7 ran with a $12 cap instead of the formula’s $19.80, because the formula would have pushed us over our $90 ceiling. It cost $4.62.
- Blind grading. The outputs of tasks 5–8 were renamed to random letters, and the key stayed closed until grading ended. The checklists were written and approved before any run, and not changed afterwards.
- Scale: 2 = usable unchanged, 1 = usable after at most 10 minutes of fixing, 0 = has to be redone.
What is the effort level, and what is it not?
Effort is one request parameter with five values: low, medium, high, xhigh and max. According to Anthropic’s effort documentation (checked on 6 November 2026; defaults change between model generations), it affects every output token: the text, the tool calls and their arguments, and the thinking. At lower effort the model makes fewer and more consolidated tool calls, and on simple problems it may skip thinking entirely.
- It is a signal, not a budget. The documentation calls it “a behavioral signal, not a strict token budget”. The hard limit on output, thinking included, is still
max_tokens. - The model decides how much to think. On the current models thinking is adaptive, and on Opus 5.5 it cannot be switched off at all, so effort is the main control over reasoning and cost.
- Defaults differ. Opus 5.5 and Haiku 5.5 default to
medium; Sonnet 5.5 and Fable 5.1 tohigh. Sonnet 5.5’s levels were recalibrated, sohighthere does not mean what it meant on Sonnet 5. xhighis meant for long work. The documentation describes it as “long-running agentic and coding tasks (over 30 minutes)”. Our runs took between 10 seconds and 15 minutes.- Changing it mid-conversation can break the cache. A new top-level value starts the prompt cache over; the newest models also accept a per-message change that keeps it.
List prices per million tokens, input / output: Haiku 5.5 $0.10 / $0.50, Sonnet 5.5 $2 / $10, Opus 5.5 $4 / $20, Fable 5.1 $10 / $50 (Anthropic pricing).
What effort is not: a lesson from our own fine-tuned model. In our free-droid project we fine-tuned Llama 3.1 8B and Llama 3.2 3B models into a Hungarian-speaking persona for a small robot, over 14 versions. None of the levers there is a “think harder” dial. Behaviour comes from the weights the fine-tune produces, from the data that goes into it, and from the system prompt; facts come from a retrieval layer; and the rules the model must never break (answer only in Hungarian, stop the motors on an obstacle) are enforced in code, not in the weights. The levers that moved the result were dataset design and changing one variable per round, not hyperparameters.
Effort is a different kind of control. It does not change what the model knows or how it behaves; it changes how much of its reasoning and tool use it spends on a request. That is why it is cheap to try: a fine-tune round took us hours and a new evaluation, while an effort change is one word in a request. (The comparison is our interpretation; Anthropic does not describe effort this way.)
What did the tests show?
Every task, every setting
Automatic tasks show passed runs out of all runs; blind tasks show the score of each run (0–2). After the dot: the mean cost per run.
| Task | Haiku med |
Sonnet med |
Sonnet high |
Opus low |
Opus med |
Opus high |
Opus xhigh |
Fable high |
|---|---|---|---|---|---|---|---|---|
| 1 links | 3/3 · $0.01 | 0/3 · $0.06 | 0/3 · $0.08 | 3/3 · $0.08 | 3/3 · $0.14 | 3/3 · $0.14 | 5/6 · $0.45 | 3/3 · $0.40 |
| 2 invoices | 3/3 · $0.00 | 3/3 · $0.04 | 3/3 · $0.03 | 2/3 · $0.05 | 3/3 · $0.07 | 3/3 · $0.10 | 3/3 · $0.14 | 3/3 · $0.19 |
| 3 bug | – | 3/3 · $0.05 | 3/3 · $0.08 | 3/3 · $0.13 | 3/3 · $0.23 | 3/3 · $0.33 | 3/3 · $0.86 | 3/3 · $1.03 |
| 4 spec to code | – | 3/3 · $0.09 | 3/3 · $0.19 | 3/3 · $0.21 | 3/3 · $0.61 | 3/3 · $0.79 | 3/3 · $2.00 | 3/3 · $2.03 |
| 5 diagnosis | – | 2 · $0.06 | 2 · $0.09 | 2 · $0.11 | 2 · $0.18 | 2 · $0.35 | 2 · $0.83 | 2 · $0.74 |
| 6 article, EN | – | 1 · $0.17 | 1 · $0.33 | 1 · $0.36 | 1 · $0.63 | 1 · $0.82 | 2 · $2.16 | 1/1/1 · $1.63 |
| 6a article, HU | 1 · $0.02 | 1 · $0.18 | 1 · $0.40 | 1 · $0.35 | 1 · $0.56 | 2 · $1.06 | 2 · $2.37 | 1 · $1.56 |
| 7 SEO | – | 2/2/1 · $0.51 | 1/2/2 · $1.10 | 2 · $0.38 | 2 · $1.22 | 2 · $1.37 | 2 · $2.95 | 1/1/1 · $4.64 |
| 8 security | – | 2 · $0.12 | 2 · $0.18 | 1 · $0.18 | 2 · $0.35 | 2 · $0.50 | 2 · $1.56 | 1/1/2 · $0.34 |
Per setting
Quality is the mean over the tasks a setting ran (pass = 1, fail = 0; blind score ÷ 2). One round is the sum of the mean costs per task: what all nine tasks cost once.
| Setting | Quality | Flawless runs | One round | Median time per run |
|---|---|---|---|---|
Haiku 5.5 medium (3 tasks only) |
83 % | 6/7 | $0.03 | 17 s |
Sonnet 5.5 medium |
76 % | 13/19 | $1.28 | 34 s |
Sonnet 5.5 high |
76 % | 13/19 | $2.49 | 51 s |
Opus 5.5 low |
80 % | 13/17 | $1.85 | 36 s |
Opus 5.5 medium |
89 % | 15/17 | $3.99 | 70 s |
Opus 5.5 high |
94 % | 16/17 | $5.47 | 69 s |
Opus 5.5 xhigh |
98 % | 19/20 | $13.31 | 195 s |
Fable 5.1 high |
80 % | 14/23 | $12.55 | 157 s |
The Opus effort curve
Cost per run against Opus 5.5 at medium, and the mean thinking tokens per run from low to xhigh.
| Task | low |
high |
xhigh |
Thinking tokens, low → medium → high → xhigh |
|---|---|---|---|---|
| 1 links | 0.57× | 1.01× | 3.26× | 169 → 562 → 677 → 3,967 |
| 2 invoices | 0.66× | 1.45× | 2.06× | 66 → 172 → 213 → 602 |
| 3 bug | 0.57× | 1.44× | 3.72× | 383 → 1,389 → 1,824 → 13,460 |
| 4 spec to code | 0.34× | 1.30× | 3.26× | 509 → 5,587 → 9,354 → 44,683 |
| 5 diagnosis | 0.64× | 1.99× | 4.77× | 644 → 1,711 → 6,850 → 25,722 |
| 6 article, EN | 0.56× | 1.31× | 3.42× | 1,731 → 8,730 → 14,866 → 63,217 |
| 6a article, HU | 0.62× | 1.89× | 4.21× | 956 → 7,185 → 19,045 → 66,470 |
| 7 SEO | 0.32× | 1.13× | 2.42× | 1,049 → 14,430 → 18,851 → 59,709 |
| 8 security | 0.50× | 1.40× | 4.40× | 664 → 4,193 → 8,577 → 46,133 |
| Median | 0.57× | 1.40× | 3.42× |
The step from high to xhigh is the expensive one: thinking tokens grew three to seven times, the cost about 2.4 times and the wait about three times. On our tasks it bought one thing: the only flawless English article. Everything else xhigh got right, high had already got right.
Where the points were lost
Task 1, Sonnet (0 of 6 runs) and one Opus xhigh run: wrong by the rules, right about the code. Every Sonnet run fixed the 10 links and also changed the shared function that builds blog post URLs, which was outside the task, so the pre-registered check failed it. The change itself was correct: post cards in our site generator really did link without the trailing slash, and every such click costs a redirect on Cloudflare Pages. We filed it as a ForgeStack issue. The score stays a fail, because a model that edits code it was not asked to edit is a problem even when it is right. Read the diff before you trust a red light, in either direction.
Articles (tasks 6 and 6a): every setting except the top ones left something to fix. The typical fix was an invented detail that was not on the fact sheet (a date, a cause, “single-node”, “cold backups”) or a claim inflated beyond its source (“a dozen” became “dozens”). Fable had the most: 9, 5 and 2 invented or wrong claims in its three English runs, and 5 in the Hungarian one. In Hungarian, Opus high was the cheapest setting with no language error, no calque and no invented claim.
SEO analysis (task 7): the losses were numbers. Fable mixed page-level and query-level clicks in one table without saying so in all three runs. Its reports also rounded 277 tag-page impressions down to “about 200”, reported the queries’ 45 clicks as 46, and wrote “every product has the same date” where 83 of 92 had. The two Sonnet runs that scored 1 had the same kind of slips. Opus at low scored 2 here for $0.38.
Security review (task 8): Opus low and two of Fable’s three runs gave too much weight to minor findings, miscounted or claimed more than the capture proved. No run refused the task.
Diagnosis (task 5): every setting found the real cause, a node taint with a missing toleration, and none blamed the misleading TLS errors. The task was too easy to separate the settings.
Repeats: one false alarm, one real weakness
We fixed one repeat rule before the runs: if a higher effort on the same model scored worse than a lower one, run both again. That hit Sonnet on task 7 (high 1, medium 2). Two more rounds gave medium 2, 2, 1 and high 1, 2, 2. The inversion was noise.
Outside the rule, we gave Fable two extra rounds on tasks 6, 7 and 8, because “the largest model is weaker” is a claim that needs more than one run. Task 6: 1, 1, 1. Task 7: 1, 1, 1. Task 8: 1, 1, 2. The weakness held.
Who graded the graders?
Task 5 was graded by a person. Tasks 6 to 8 were graded by Opus 5.5 agents against the checklists, with a quote as evidence for every error, and spot-checked by hand. An Opus grader may favour Opus outputs, so we also asked Gemini 3.1 Pro (preview) to grade tasks 5 to 7 blind. It agreed on 26 of 37 outputs. Where they differed, we recomputed the disputed numbers from the source data: the Opus grader was right, and Gemini had missed the errors. Its first attempt did not grade at all: it wrote keyword-search scripts instead of reading the outputs, and skipped some of them. A second grader from another vendor is not a check by itself; it needs checking too.
What these results do not show
- Most blind cells ran once. We only claim patterns that repeat across tasks.
- The runs were short, from 10 seconds to 15 minutes. Long, autonomous sessions, which is where Fable and
xhighare positioned, were not measured. - Nine of our tasks, our inputs, without our usual hooks and project instructions.
- List prices, as reported by Claude Code.
Which model and effort level should you use?
This is the table we now work by. It comes from our nine tasks, so treat it as a starting point for your own measurement, not as a rule.
| Kind of work | Our pick | Why |
|---|---|---|
| Mechanical edit or extraction with a check after it | Haiku 5.5 medium or Sonnet 5.5 medium, and review the diff |
Passed for cents; Sonnet strayed outside the task |
| Bug fix or code from a specification, with tests | Sonnet 5.5 medium |
6 of 6 passed at a fifth to a seventh of Opus medium’s price |
| Data analysis where the numbers matter | Opus 5.5 low or medium, and check the sums |
Opus scored 2 on every run; Sonnet varied, Fable mixed levels |
| Article draft from a fact sheet | Opus 5.5 high, plus a human review |
Flawless in Hungarian; in English one fix, at less than half of xhigh’s price |
| An English draft that must be clean first time | Opus 5.5 xhigh |
The only flawless English article |
| Security review, debugging, code review | Opus 5.5 high |
medium was enough on our short tasks; on long, real sessions we choose the safer side |
| Short tasks in general | Not Fable 5.1 | $12.55 per round for Opus low quality on our tasks |
What we changed in our own setup after the tests: Opus 5.5 at medium is the default everywhere; writing, debugging (Kubernetes included) and every kind of review run at high; our research agent runs Opus 5.5 at medium; and where Sonnet 5.5 still runs, it runs at medium. That is roughly how we run client platforms too: the default is cheap and checked, and the expensive option is a deliberate choice.
Five lessons we took away:
- Raise the effort on one model before you switch to a bigger one. Opus 5.5 at
highbeat Fable 5.1 athighfor less than half the price. - On Sonnet 5.5,
highbought nothing on our tasks and doubled the cost. xhighis a scalpel, not a default: 3.4 times the cost ofmediumand three times the wait for the last few points.- A failed check can mean the model was right. Read the diff.
- Writing still needs a human pass at every setting except the most expensive one, and the invented details were small, plausible and easy to miss.
The second-biggest cost lever was not the model at all. In our own logs, cache reads and writes were 78 % of the Opus cost, and one plugin that was supposed to save tokens was a quarter of the bill. If your team’s AI spend is growing and nobody can say which line is which, that is the same problem as an unexplained cloud bill, and the same review finds it.
Who should not copy this table
- Teams whose work is long, autonomous sessions. We did not measure those, and that is where the larger models and
xhighare meant to earn their price. - Anyone without a way to check the output. Our cheap picks only work because a test, a script or a person checks every result.
- Anyone who reads nine tasks as a general benchmark. Run the same kind of test on your own work: tasks with a known answer, blind grading, and cost per usable result. Ours took two days, from preparation to grading, and less than $80.


