Claude Code Effort Levels: Turning It Up Won't Fix a Vague Ticket
Which effort level to use in Claude Code, from Anthropic's own guide, a new benchmark where xhigh cost up to 4x more and passed fewer tests, a study of what helps a stuck agent, and a 48-run test of my own.
Turning the dial up made the agents slower and more expensive, not more correct. The ticket was the lever.
Use medium to build from a clear ticket, high or xhigh to verify work full of edge cases, and fix the ticket before you touch the dial. That is what Anthropic’s own guide says, what a new benchmark measured, and what my own 48-run test points to.
Claude Code is my daily driver. I haven’t run my own sweep of medium against high yet: the numbers below are Anthropic’s, two independent research groups’ and mine at a single level. Read them with that in mind.
Free book · 169 pages · PDF + EPUB
Turning Claude Code's effort up didn't buy better code in these tests; a clear ticket did. The free book's spec templates help you write the ticket the agent can't misread.
Get the free bookUse medium to build, high to verify
If you set effort once and forget it, leave it at medium and spend the minutes on the ticket. That is close to Anthropic’s own rule: in its effort guide, Thariq Shihipar builds features from a spec on low effort and verifies on high. The model docs say the same for Sonnet 5.5: start agentic coding on medium for well-specified tasks, and use xhigh or max only where your evals show a gain.
Which effort level for which job
| Level | Use it for | Source |
|---|---|---|
| low | Quick, in-the-loop work: sketches, easy changes, search subagents | Anthropic's effort guide; platform docs |
| medium | Building a feature from a clear ticket. The default on Opus 5.5, Sonnet 5.5 and Haiku 5.5 | Effort guide; Claude Code docs |
| high | Verification, bugs in an existing codebase, work with edge cases | Effort guide |
| xhigh | Long autonomous runs, over 30 minutes, when your own evals show it helps | Platform docs |
| max | Hard problems run fully on their own: an app built and checked end to end, a security audit | Effort guide |
xhigh cost up to 4x more and didn’t pass more
SlopCodeBench gives an agent a program to build in stages: requirements arrive one checkpoint at a time, and each later checkpoint tests the old behavior again. A strict pass means every test passed, regressions included, which is the part that breaks in a real repo. Its October update (Dex Horthy, HumanLayer, with Gabe Orlanski) ran three frontier models at medium and at xhigh.
SlopCodeBench, medium against xhigh
| Model | Strict passes | Strict rate | xhigh cost |
|---|---|---|---|
| Opus 5.5 | 28 → 25 | 14.29% → 12.76% | 4.22× |
| GPT-6 Sol | 30 → 26 | 15.31% → 13.27% | 2.11× |
| GPT-6 Astra | 29 → 32 | 14.80% → 16.33% | 2.91× |
The author says it plainly: higher effort “was not a reliable way to buy more strict passes in these runs”, and one run per setting can’t separate effort from run-to-run noise. Read it as a warning, not a verdict. What it does show is that the most expensive setting is not a safe default: on two of three models you paid two to four times more for fewer passes.
A clear ticket beats more thinking
A study published on arXiv on October 20 asked what a stuck agent should spend its next tokens on. Saiyue Lyu and co-authors gave six models 320 failed attempts (194 small functions from MBPP+ and HumanEval+, 126 repository fixes from SWE-bench Verified) and measured three kinds of help: more computation, more information and more feedback. Task-relevant specifications kept improving repair. The value of extra computation fell as the models got stronger. And three of four frontier models, left to choose, reached for test feedback 95 to 100% of the time, and did worse than picking a kind of help at random.
My own data says the same thing from the other side. In my 48-run test of Codex and Claude Code, effort was high on every run. On the seven tickets that spelled out the behavior, all 42 runs passed. On the one ticket I wrote in a hurry, five of six runs failed, and 10 of the 14 failures were values the ticket never stated. High effort was on the whole time. It didn’t help, because the information wasn’t there. Anthropic’s guide makes the same point about its own runs: more effort cuts the failures from missed edge cases, but it doesn’t fix a wrong approach.
So the cheaper fix comes first: write the values into the ticket. How to write a spec for AI agents is the template I use, and spec-driven development is the method around it.
Free book · 169 pages · PDF + EPUB
At high effort, every failure on my vague ticket was a value it never stated. The book's templates make you write those values down before Claude Code starts.
Where turning it up does pay
Effort isn’t useless. Anthropic’s guide shows where it earns its cost, and every case is about edge cases and checking:
- An HTML sanitizer went from 1 of 5 at low to 5 of 5 at xhigh, because the higher run reviewed its own draft, read the parser source and wrote a fuzzer.
- Across task groups, the biggest gains from more effort came in security (a 64% to 87% pass rate) and hardware (34% to 75%).
- A crash in a storage engine went from 0 of 5 at low to 4 of 5 at xhigh on Opus 5.5, once the agent reproduced the crash first and checked that its new tests caught the old bug.
The pattern: raise effort for the review pass, the security audit and the bug you can’t reproduce. Keep it at medium for the build.
How to set it
Changing the effort level in Claude Code
Open the slider in a session
/effortSet it directly
/effort mediumSee the level in effect
/effort statusStart a session at a level
claude --effort highSet it for every session from the shell
export CLAUDE_CODE_EFFORT_LEVEL=medium
In settings.json, the key is effortLevel, and it takes low, medium, high or xhigh, not max. Levels you save with /effort live per model under modelSettings, and on Opus 5.5 a top-level effortLevel in your user settings is a legacy form that doesn’t apply. maxEffortLevel caps how high anyone can go. A skill or subagent can set its own effort in its frontmatter, which is the easy way to run search subagents on low. Typing ultrathink in a prompt still asks for deeper reasoning on that one turn; “think hard” is plain text now.
Claude Code effort levels, quick answers
What is effort in Claude Code?
A setting for how many tokens the model spends on a turn: how much it thinks, how many tool calls it makes and how much it writes. Claude Code offers low, medium, high, xhigh and max on the models that support all five.
What is the default effort level in Claude Code?
Medium on Opus 5.5, Sonnet 5.5 and Haiku 5.5; xhigh on Opus 4.7; high on the other models that support effort. /effort status shows the level in effect.
Is xhigh better than high for coding?
Not reliably. In SlopCodeBench's October run, xhigh cost 2.1 to 4.2 times medium and passed fewer strict tests on two of three frontier models. Anthropic's docs reserve it for long autonomous runs and for cases where your own evals show a gain.
Does ultrathink still work in Claude Code?
Yes. Typing ultrathink in a prompt asks for deeper reasoning on that turn without changing the session's effort level. Phrases like think hard are no longer keywords.
How do I change the effort level in Claude Code?
Use /effort in a session, claude --effort <level> when you start one, the CLAUDE_CODE_EFFORT_LEVEL environment variable, or effortLevel in settings.json.
Free book · 169 pages · PDF + EPUB
Whatever effort level you pick, Claude Code builds what your ticket says. Take home the spec templates and Claude Code kit that shipped a 13-app crypto fintech in 70 days.
Get the free book

