Research · The cheaper-agents series · Part 1 of 3
Claude Code already lets you pick cheaper models. Most people never change it.
A two-minute change: keep the strong model for judgment, and let the repetitive work run on a cheaper one — without leaving Claude Code or writing a line of glue code.

Most people install Claude Code, pick a model once, and never touch the setting again. Everything then runs on that one model — the careful architectural decisions and the mechanical busywork alike, all billed at the same rate.
That is convenient, and for a lot of work it is fine. But a coding session is mostly mechanical: searching the codebase, reading files, applying an agreed change, fixing a typo, re-running a check. Only a handful of moments genuinely need the strongest model. You can keep those moments on the top tier and push the rest down a tier — and the controls to do it are already in front of you.
The main model: /model
The fastest lever is the model your main session runs on. Type /model for an interactive picker, or set it directly:
/model sonnet # switch the main session to Sonnet
/model opus # back up to Opus for heavy reasoning
You can name a model alias (opus, sonnet, haiku, fable) — which always resolves to the current version for your account — or a full model id (claude-sonnet-4-6) if you want to pin an exact version. The same value can be set without opening Claude Code at all:
# a single session
export ANTHROPIC_MODEL="claude-sonnet-4-6"
# or a durable default, in settings.json
{ "model": "sonnet" }
That alone is useful. But switching the whole session is a blunt instrument — you lose the strong model exactly when you need it. The sharper tool is to split the work.
The real lever: subagents on a cheaper model
Claude Code can delegate parts of a task to subagents — focused helpers with their own prompt, their own tools, and, crucially, their own model. A subagent is just a markdown file in .claude/agents/. The model is one line of front matter:
# .claude/agents/formatter.md
---
name: formatter
description: Formats and lints changed files. Use after edits.
model: haiku
tools: Read, Edit, Bash
---
You format and lint code. Apply the project's style. Do not
change behaviour. Report what you changed in one line.
Now the formatting work runs on Haiku while your main session stays on Opus or Sonnet. The model: field accepts the same aliases and full ids as /model, plus one special value — inherit — which simply uses whatever the main conversation is running. If you omit the field, inherit is the default.
Claude Code ships with a built-in Explore subagent that runs on Haiku by default. Every time Claude searches your codebase, that work is already happening on the cheap tier — and the bulky search output stays out of your main context window, which saves tokens twice over. Splitting work by model is not exotic; it is how the tool already behaves.
Turn the whole fleet down at once
If you want every subagent to run cheaply for a session — regardless of what each file says — there is a single override:
export CLAUDE_CODE_SUBAGENT_MODEL="haiku" # all subagents → Haiku
Set it back to inherit to restore normal per-agent resolution. This is handy when you are doing a large, mechanical sweep and want the main thread to orchestrate while the workers stay cheap.
Don't just force everything to Haiku
The point is not "cheaper is better." A weaker model in the wrong place produces confident, wrong work that costs you more to unpick than you saved. The pattern that works keeps judgement where judgement is needed:
- Main session on a strong model — it plans, decides what to delegate, and reviews what comes back.
- Subagents on a cheaper model — bounded, testable, reversible work: searching, formatting, applying an agreed edit, running checks.
Because the strong main thread decides when to delegate, the intelligence stays where it earns its price and the volume runs cheap. That is the whole idea:
Match each unit of work to the cheapest model that can do it reliably — not to the cheapest model you can find.
You can go a long way on the built-in controls alone. The next two articles push further: Part 2 looks at why this saves so much (it is as much about context as about price), and Part 3 shows how to route work to a non-Claude model entirely — a cheap open worker doing the iteration, Claude reviewing the result.
The cheaper-agents series: Part 1 — Cheaper models inside Claude Code (this article) · Part 2 — Why splitting the work saves money · Part 3 — Roll your own, across providers
First published on x-trillion.com. A version also appears on Medium.