[Feature Request] Add advisor auto mode for autonomous agent operations
Summary
Add advisor: auto — an advisor policy where the harness consults the advisor model only at decision-class moments, instead of today's binary of "advisor attached to every turn" or "no advisor".
Why the binary is the wrong shape
The docs frame the advisor as "Escalate hard decisions with the advisor tool — pair your main model with a stronger advisor model that Claude consults at key moments during a task." The intent is already "key moments". But attachment is per-session (--advisor <model>, /advisor, advisorModel), and which moments count is left to the primary model's own judgement on every turn. Two problems from running it across a fleet:
- On routine work a standing advisor is net-flat to slightly harmful for a top-tier primary. We measured this on Fable 5 and turned it off in our posture file. At genuine one-way doors it earns its cost. A per-session switch cannot express "only at one-way doors".
- In autonomous operation nobody is present to toggle it. Stop-hook loops,
claude --bgworkers and scheduled sessions either pay the standing advisor cost for hours or run without a second opinion at the one moment it matters. The decision about when to escalate is exactly the decision an unattended session is worst at making for itself.
Proposed behaviour
advisorMode: "auto" in settings, --advisor-mode auto on the CLI, /advisor auto in-session — alongside the existing model choice. always (today's behaviour) and off remain.
Triggers, decided harness-side rather than by the model:
- (a) an action the permission layer already classifies as irreversible or protected — deletes of critical paths, force-pushes, production deploys, payments, repository visibility changes;
- (b) a plan-approval boundary (
ExitPlanMode), so the plan gets a second reading before the human sees it; - (c) N consecutive failed attempts at the same step (default 3);
- (d) an explicit operator hook — a
PreToolUseorStophook returninghookSpecificOutput.consultAdvisor: true, so a project can add its own decision classes.
On trigger: one advisor call carrying the current context and the pending decision; the result is injected as additionalContext for the next turn; the invocation is written to the transcript and exposed to hooks (#70611) and the status line (#77980).
Off-trigger: no advisor traffic, no advisor cost.
Trigger set and N tunable in settings.
Related: model auto-selection
The same shape applies to the primary model. A session-level model: auto that routes by task shape — unbounded or judgement-heavy work to the top tier, bounded and specified work to the mid tier, mechanical work to the small model — with the pick shown in the status line and overridable per turn, is the natural sibling. CLAUDE_CODE_SUBAGENT_MODEL and agent-definition model: already do this for subagents; the gap is the primary session. Not filed separately, to keep one thread; happy to split it out if there is interest.
Environment
Claude Code 2.1.257, Linux. Original feedback ID 27a8c844-1097-4faf-83b2-e8650c1a6cd8 (this body replaces the one-line original, which was filed from the in-product feedback form).
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗