
# Why do subagents use so much of my Claude plan?

Subagents feel free because they run off to the side, but each one is a full session with its own context, model and
cache. Five hidden costs add up, and each has a fix.

## 1. Model and effort follow the main conversation

With no model in the subagent file and no `CLAUDE_CODE_SUBAGENT_MODEL` set, a subagent runs on the main conversation's
model. An Opus or Fable main agent therefore sends tiny jobs, like running a diff, to the same expensive model.

Fix: set `model` (`sonnet`, `opus`, `haiku`, `fable`, a full model id, or `inherit`) and `effort` (`low` to `max`) in
the frontmatter of `.claude/agents/*.md`. For a default, set `CLAUDE_CODE_SUBAGENT_MODEL` in the `env` block of a
settings file. On its own, `CLAUDE_CODE_SUBAGENT_MODEL` leaves the built-in Explore and Plan subagents alone;
`CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1` applies it to every subagent, those included. Then have the main agent pick the right subagent for each task.

## 2. Inherited context is a call-up fee

Every subagent starts by paying for a large context before it does any work. Many small calls mean that fee many times.

Fix: give a subagent one real job, not a quick question, and keep the main conversation lean so there is less to
carry in.

## 3. The subagent cache lasts 5 minutes by default

Subagent prompt cache defaults to 5 minutes, even on a plan. A subagent that pauses longer rewrites its whole context
at full price.

Fix: set `experimental: cacheTtl: 1h` in the subagent file. It needs Claude Code v2.1.248 or later and is ignored while usage credits are in use.
The `subagentPromptCacheTtl` setting on the linked TTL page sets the same thing for every subagent, while the per-file key sets it for one.
On one Max 20x account, moving subagents to the 1-hour cache cut cold cache rewrites from about 8% of a week (16% at
worst) to under 2%. See [setting the prompt cache TTL](https://atlas-ade.dev/docs/prompt-cache-ttl/index.md).

## 4. Progress summaries go back to the main chat

On one Max 20x account, subagent progress summaries took about 10% of a typical week, and about 13% once subagents were on the 1-hour cache. Each summary cost most of what the subagent turn it reported on did, because it re-reads that turn's context. They're written by the subagent's own model, so a cheaper subagent model makes them cheaper too, and there's no setting to turn them off.

Fix: use fewer, longer subagent jobs, so fewer summaries get written, and give subagents a cheaper model (section 1).

## 5. Background subagents can misbehave

This is observed behaviour, not a documented bug. Background subagent turns and their timers can leak into the main
chat, and messaging a running subagent is unreliable.

Fix: do not depend on mid-run messages. Give the subagent everything it needs up front and read its result when it
finishes.

ADE runs each card as its own headless session for these reasons. See [How ADE flies](https://atlas-ade.dev/docs/how-it-flies/index.md).
