Claude Code · Intermediate/Lesson 03 of 08~5 min

Pick the model and the effort

Two knobs, often turned in the wrong order. The model decides how capable the answer can be; the effort decides how much work goes into it. This lesson is mostly about not touching either one.

The Third Way engineering team||Verified against Claude Code v2.1.285 (stable), October 2026

01The goal

Pick a model and an effort level for a task on purpose, set them for a session, for all your sessions, or for one skill — and tell from a wrong result which knob, if any, to turn.

02The idea

Two separate choices shape an answer. The model decides how capable the answer can be. The effort decides how much work Claude does on each request: how many files it reads, how much it verifies, how far it goes before checking back with you. The default effort is high on most current models, and Anthropic’s guidance is to start from the default for most tasks and change it when a result tells you to.

↳Read the result, then turn the knob
What happened, or what the task isWhat to change
Claude lacked context — vague prompt, missing file, no skillThe context, not a knob
Claude didn’t try hard enough — skipped a file, didn’t run the testsA higher effort
Claude had the context, tried, and was still wrong — subtle bug, unfamiliar domainA larger model, such as opus
Routine work you can describe preciselyA smaller model, such as sonnet, and a lower effort
Deep planning, then routine executionopusplan — Opus in plan mode, Sonnet to carry it out
Find out why a result is wrong before you turn anything. The expensive knob is the one turned instead of asking why.

That table is the discipline; everything else is mechanics. Where a choice applies decides how you set it:

↳Scopes
ScopeModelEffort
This session only/model, then s on a rows in the /effort slider
Your default, going forward/model, Enter on a row/effort <level>
One turn—ultrathink in the prompt
One skill or subagentmodel: in its frontmattereffort: in its frontmatter
Enter and the typed command save; s is session-only. An effort in frontmatter overrides the session level while that skill or subagent runs — but not the CLAUDE_CODE_EFFORT_LEVEL environment variable your organization may set.

We hold this stance because the knobs are seductive. Every engineer we work with has a story about turning effort to max and shipping the same bug — max lasts for the session and can overthink; the diagnosis table would have said "the prompt never named the file". Treat model and effort as you treat permissions: defaults you change deliberately, with a reason you could write down.

03The walkthrough

  1. 01Start claude and run /status — the model — then /effort status: it prints the effort level in force.
  2. 02Switch the model for this session only: /model, move to Sonnet, press s. /status shows the change; your default for new sessions is untouched. Press Enter instead and it would have become your default — the two keys are the whole scope distinction.
  3. 03Ask for deeper reasoning on one turn, without touching the level: "ultrathink: which links could our checker report as broken although their file exists?" Claude Code recognizes the word anywhere in the prompt and requests deeper reasoning for that turn only. "Think hard" and friends are ordinary text.
  4. 04Give one task its own effort. five-whys from lesson 1 traces a cause from evidence — verification is the job. Add effort: high to its frontmatter and the skill runs at high while it is active, over the session’s level.

04Your turn

Give a routine task the smallest settings that do the job. Write .claude/skills/changelog/SKILL.md: a description saying it adds a one-line entry for the staged changes to CHANGELOG.md when asked; model: sonnet and effort: low in the frontmatter (routine work, precisely describable — the table’s fourth row); disable-model-invocation: true (it edits a file on request, not on a guess). The body: read the staged changes with git diff --staged, add one "- " item under ## Unreleased in CHANGELOG.md — creating the file and heading if absent — and change no other file. Stage a small change, run /changelog, approve the edit, and commit the change, the changelog and the skill together.

Watch the cache. Switching models mid-session, and on most models changing the effort, makes the next request read the whole conversation with no cache hits; while the cache is warm Claude Code asks you to confirm the switch. It is a small friction that exists to make the change deliberate — let it.

↳Check yourself
Q1

Claude read the right files and still got a subtle concurrency bug wrong. The table says…

  1. AA larger model, such as opus
  2. BA higher effort
  3. CRewrite the prompt
→Check your answer
Answer: A

Context was there and the trying was there; capability is the remaining suspect. That is the "larger model" row — the rarest, and the most over-used.

Q2

How do you set an effort for this session only, leaving your default alone?

  1. A/effort high
  2. Bs in the /effort slider
  3. Ceffort: high in CLAUDE.md
→Check your answer
Answer: B

s applies the level to this session; the typed command saves it as your default. There is no effort: key for CLAUDE.md — frontmatter is for skills and subagents.

Q3

What does ultrathink do?

  1. ARaises the session effort to max
  2. BTurns on Opus for one turn
  3. CRequests deeper reasoning on that one turn, level unchanged
→Check your answer
Answer: C

One turn, no lasting change — and other phrases like "think hard" pass through as ordinary text.

The Third Way engineering team
Delivery engineering
Work with us