Learn Claude Code: Cost & Context Mastery Model Selection and Effort Levels

Model Selection and Effort Levels

Intermediate 🕐 12 min Lesson 7 of 11
What you'll learn
  • Match Claude models to task complexity: when Sonnet is enough, when Opus earns its cost, and when Haiku is the right tool for subagents
  • Use /effort to adjust extended thinking token spend without switching models
  • Explain why switching models mid-task to save tokens can backfire and when it is safe to do so

Model Choice Is the Biggest Per-Turn Cost Variable

After context size, model selection is the largest driver of per-turn cost. Opus is significantly more expensive than Sonnet, and Sonnet more expensive than Haiku. But cost and capability are not the same dimension — the goal is not the cheapest model, it is the right model for the job. Paying for Opus on a task Sonnet handles easily wastes money. Using Sonnet on a task that requires Opus-level reasoning wastes time and may require re-runs.

The Model Hierarchy in Practice

Haiku

Fast, cheap, best for simple subagent tasks. Use for: routine file lookups, formatting tasks, summarization where depth is not required, background jobs that fire repeatedly. Set per subagent: model: haiku in the subagent configuration.

Sonnet

The default and best general-purpose choice. Handles most coding tasks well. Use for: the majority of development work, debugging, code generation, standard refactors. This is the right starting point — only upgrade when Sonnet falls short.

Opus

Reserve for complex architectural decisions, multi-step reasoning across a large codebase, situations where Sonnet has already failed and you know the task is genuinely hard. The cost premium is only justified when the capability difference matters.

Switching Models: /model

Run /model to see your current model and switch to another mid-session, or set a default in /config. But be careful with mid-task switches:

  • A model switch invalidates the prompt cache — the new model re-processes the full context at full price on the next turn
  • If you switch to Opus for one hard task and forget to switch back, you pay Opus prices for all subsequent simpler work
  • Different models have different behavior on the same prompt; switching mid-task can introduce inconsistency in style, approach, and decisions

The safer pattern: use /clear to start a new session if you genuinely need a different model for the next phase of work, rather than switching mid-session.

Effort Levels: /effort

Extended thinking is enabled by default because it significantly improves performance on complex planning and reasoning tasks. But thinking tokens are billed as output tokens at the full output rate — the default thinking budget can be tens of thousands of tokens per request on models that support it.

Use /effort to adjust the thinking budget without switching models:

  • /effort low: minimal thinking, fastest and cheapest responses. Good for routine edits and straightforward code generation.
  • /effort medium: balanced thinking, the practical default for most work.
  • /effort high: maximum thinking, appropriate for architectural decisions or tasks where deep reasoning matters.

You can also adjust this in /model or disable thinking entirely in /config. On models with a fixed thinking budget, set MAX_THINKING_TOKENS as an environment variable (e.g. MAX_THINKING_TOKENS=8000) to cap it. Adaptive-reasoning models ignore fixed budgets — use /effort there.

Fast Mode

Fast mode uses Claude Opus with optimized output for faster responses. It draws from usage credits separately from the standard seat allowance. Check /usage to see fast mode spend. Toggle it with /fast. It is useful for sessions where response latency matters more than cost efficiency — not the default for cost-conscious work.

The Right Default

Sonnet at medium effort is the right default for most Claude Code work. Start there. Upgrade to Opus or higher effort only when you have a specific reason — Sonnet gave a shallow answer to a hard architectural question, or you are about to make a high-stakes decision across a complex codebase. Then return to Sonnet for the implementation that follows.

Key takeaways
  • Sonnet at medium effort is the right default for almost all Claude Code work — upgrade to Opus only when Sonnet has demonstrably fallen short on a specific complex task.
  • Switching models mid-session invalidates the prompt cache and re-processes the full context at full price; use /clear and start a new session instead of switching models in-place.
  • Extended thinking tokens are billed as output tokens at full output rate — the default budget can be tens of thousands per request; /effort low cuts this cost for tasks that don't need deep reasoning.
  • Use Haiku for subagent tasks that fire repeatedly or handle routine operations; the capability gap is acceptable for lookups and summaries and the cost difference is significant.
  • Fast mode draws from usage credits separately and is for speed-sensitive work, not cost-sensitive work — know which you are optimizing before enabling it.