
Claude Advisor Tool vs Subagents: Which to Use
The advisor tool is a second opinion without a handoff. A subagent is a handoff without a second opinion. The advisor lets a fast executor model pause mid-generation, have a stronger model read the entire transcript, and come back with a plan — while the executor keeps the task. A subagent takes the task away, works in its own context, and hands back a result. Reach for the advisor when the main model should keep driving but needs a better route. Reach for a subagent when you want the work done somewhere else entirely.
The Difference in One Table
Both features exist to combine model strengths. They differ on one axis: who keeps the work.
| Advisor tool | Subagent | |
|---|---|---|
| Who does the task | The executor, start to finish | The subagent does the subtask |
| Context it sees | The executor's full transcript | A fresh window plus your brief |
| What comes back | Guidance text the executor applies | A finished result or summary |
| Tools | None — the advisor runs toolless | Whatever you grant it |
| Round trips | Zero — inside one request | A separate call you orchestrate |
| Best at | Planning, unsticking, final review | Isolating token-heavy grunt work |
That last row is the decision rule I actually use. If the value is in thinking better, advisor. If the value is in keeping 40,000 tokens of file-reading out of the main context, subagent. I wrote about the second case in detail in what a Claude subagent actually costs you in tokens.
How the Advisor Tool Works
It's a server tool, which means Anthropic executes it. You declare it, the executor decides when to call it, and you never see a tool-use loop.
response = client.beta.messages.create(
model="claude-sonnet-5", # executor
max_tokens=4096,
betas=["advisor-tool-2026-03-01"],
tools=[{
"type": "advisor_20260301",
"name": "advisor",
"model": "claude-opus-5", # advisor
"max_uses": 3,
}],
messages=[{"role": "user", "content": "..."}],
)When the executor wants advice it emits a server_tool_use block named advisor with an empty input. That detail surprises people. The executor only signals timing; the server builds the advisor's view from the full transcript — your system prompt, your tool definitions, prior turns, tool results, and whatever the executor has produced so far in this turn. Nothing you put in input reaches the advisor, because the executor never puts anything there.
The advisor answers under Anthropic's own system prompt, with no tools and no context management, and its thinking blocks are stripped before the result comes back as an advisor_tool_result block. Then the executor keeps generating. All of this happens inside a single /v1/messages call.
If the advisor call fails — rate limited, overloaded, transcript longer than the advisor's context window — you get an advisor_tool_result_error with an error_code and the request still succeeds. The executor shrugs and continues unadvised. I like that default, but it does mean a silent degradation path: if your advisor is throwing too_many_requests all day, your output quality quietly drops and your HTTP status codes never mention it. Log the error codes.
The Billing Field Everyone Misses
Advisor tokens are not in the top-level usage object. They can't be — they bill at a different model's rates. They live in usage.iterations[]:
"iterations": [
{ "type": "message", "input_tokens": 412,
"output_tokens": 89 },
{ "type": "advisor_message", "model": "claude-opus-5",
"input_tokens": 823, "output_tokens": 1612 },
{ "type": "message", "input_tokens": 1348,
"output_tokens": 442 }
]Every cost dashboard I've inherited reads response.usage.output_tokens and calls it a day. Turn on an Opus advisor under that dashboard and your spend goes up while your chart stays flat. Filter iterations[] on type == "advisor_message"and price those rows at the advisor's rate.
Two knobs bound the damage. max_uses caps advisor calls per request — not per conversation — and once hit, further calls return max_uses_exceeded and the executor carries on without advice. max_tokens on the tool definition (minimum 1024) caps the advisor's own output; the top-level max_tokens does not touch it. For a conversation-level budget you count calls yourself and drop the tool from toolswhen you hit your cap — you don't have to strip old result blocks from history.
For scale: Anthropic's docs put typical advisor output at 400–700 text tokens, or 1,400–1,800 including thinking. The savings argument is that the advisor writes a plan, not your deliverable — the executor generates the bulk of the output at the cheaper rate. There's also a separate caching switch on the tool definition for the advisor's own transcript, which Anthropic suggests enabling only when you expect three or more advisor calls in a conversation. Same instinct as ordinary prompt caching: the write costs something, so it needs reads to pay for itself.
Two Rules That Will 400 Your Request
The pairing is validated server-side, and an invalid pair returns 400 invalid_request_error naming the combination. Two constraints:
- The advisor must be Sonnet 4.6 or better. Haiku 4.5 can call an advisor but can never be one.
- The advisor must be at least as capable as the executor. Equal-rank models may advise each other, so Opus 4.7 accepts an Opus 4.8 advisor and an Opus 4.6 executor accepts Sonnet 5. But a Claude Fable 5.1 executor only accepts Fable 5.1 or Mythos 5.1 — an Opus advisor is rejected outright.
The second gotcha is the one that bites integrators: the advice may be encrypted. The advisor_tool_result.content field is a discriminated union. Plaintext advisors return advisor_result with a readable text field. Fable 5.1, Fable 5, Mythos 5.1, Mythos 5 and Opus 5 return advisor_redacted_result with an opaque encrypted_contentblob. The server decrypts it into the executor's prompt on the next turn; you never read it.
So if you were planning to log the advice, display it in your UI, or run evals on it, pick a plaintext advisor like claude-opus-4-8 — and note that a Fable or Opus 5 executor can't give you one. Either way, round-trip the result block verbatim on later turns, and branch on content.type if you ever swap advisors mid-conversation. Also worth knowing: Priority Tier applies per model, so a commitment on your executor does nothing for advisor latency.
Using the Advisor in Claude Code
Same server tool, friendlier surface. Three ways in:
/advisor opus # set mid-session, saved as your default
claude --advisor opus # one session only, not listed in --help
// settings.json
{ "advisorModel": "opus" }/advisor off stops it; CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 removes the feature entirely. During a session you'll see an Advising line while the call runs, then either Reviewed or Advisor declined to advise on this request. Ctrl+O reads the guidance when it's readable.
Three details I didn't expect. Toggling the advisor mid-session does not invalidate your main model's prompt cache — unlike switching models, which does. Subagents inherit the configured advisor and get their own pairing check, so the two features compose rather than compete; see agent teams vs subagents for how that stacks. And the advisor requires feature-flag fetching, so a session running with DISABLE_TELEMETRYset will silently have no advisor at all. It's also API-only — not on Bedrock, Google Cloud, or Microsoft Foundry.
On cost pairing, Anthropic's guidance is that a Sonnet executor at medium effort plus an Opus advisor lands near Sonnet-at-default-effort intelligence for less money. Treat that as a starting hypothesis and measure it on your own workload, because the benefit shrinks as the executor's own capability approaches the advisor's. Pairing Fable 5.1 as an advisor maximizes the quality lift and, on subscription plans, bills to usage credits.
When I'd Actually Turn It On
This blog is published by an agent on a cron. Research, draft, hero image, build, push, verify the URL returns 200. For 27 days that pipeline skipped one checklist item — adding the new post to the index array — and reported success every single run, because the thing it verified was “does the URL return 200,” and the URL always returned 200. Twenty posts went live linked from nowhere. I backfilled all twenty in one commit on July 31st.
That failure is exactly the shape the advisor is built for: a model that is about to declare a job done, asking something that read the whole transcript whether it actually is.It's also exactly the shape a deterministic check handles better and cheaper — a four-line script that greps the index array for the new slug catches that bug for zero tokens, forever. I wrote both. The script is what saved me; the advisor is what catches the version of the bug I haven't thought to write a script for yet.
So my rule: deterministic checks first, an independent grader for artifact quality, the advisor for judgment. Rubric grading via Claude Outcomes scores a finished artifact against criteria you wrote down. The advisor operates earlier and fuzzier — before committing to an approach, on the third identical error, before saying “done.”
Where I'd skip it: single-turn Q&A, classification, extraction, anything where there's no plan to get wrong. And anywhere every turn genuinely needs the bigger model — then just run the bigger model. An advisor bolted onto a workload that needs Opus end to end is a tax, not a saving.
One last thing worth saying plainly: Claude decides when to consult, not you. There's no setting to force or cap consultations per turn — only max_uses as a ceiling, and your prompt as a nudge. “Consult the advisor before you commit to an approach” works the way any tool instruction works, which is to say usually. If you need a guaranteed second pass, that's a subagent or a grader, not an advisor. The full parameter reference is in Anthropic's advisor tool docs, and the Claude Code surface is documented separately. It's still marked experimental, so pin your expectations accordingly.
Paying Opus Prices for Haiku Work?
Most agent stacks I audit run one expensive model for every turn because nobody has measured which turns actually need it. I'll instrument your token spend per step, split the routine work off the judgment calls, and wire the pairing — advisor, subagents, or plain model routing — that gets the quality you need at the bill you want.
Related Posts
AI Agents
Claude Outcomes: Rubric Grading for AI Agents
Outcomes hands your agent's output to a second agent in a separate context window, scored against a rubric you write. The API, the iteration cost multiplier, and the checklist item my own pipeline skipped for 27 days.
AI Agents
Claude Code /rewind: What It Won't Restore
Checkpoints only capture what Claude edits through its own file tools. Shell edits, background subagents, symlinks and hard links all fall outside — and the code-restore option quietly disappears instead of warning you. The full coverage map, plus the commit habit that closes all four gaps at once.
AI Agents
Claude Code Agent Teams vs Subagents: When to Use Each
Agent Teams shares a task list and git worktrees between sessions; subagents delegate and report back. They solve different coordination problems — the decision framework I use, and the merge trap Agent Teams hides.