Agent routing 2026-09-01: 15 model pins, one field each
Lane agent-routing, PR #3872. CC 2.1.257 made inherit resolve to claude-fable-5-1, the $10 / $50 tier, so every agent that never declared a model silently became the most expensive one. Fifteen frontmatter model: fields change in src/agents/; nothing else in those files moves. The rule set lives in the platform repo at docs/playbooks/model-routing-policy.md; the full review is /tmp/bench-0902/lanes/agent-routing.md on the operator machine.
Where the 15 land
Direction matters. Nine leave Fable for a cheaper tier, five climb from haiku to sonnet (irreversible ops and synthesis were never cheap-tier jobs), and one drops from opus to sonnet. Cost goes down on the whole, but this is a fit pass, not a cost pass.
Every move
| agent | before | after | why |
|---|---|---|---|
code-quality-reviewer | inherit | opus | Judge role. Measured the same night: Opus 5 found every planted defect plus the unplanted one for $2.50, Fable-grade review at half the price, ZDR-capable. |
ci-cd-engineer | inherit | sonnet | Pipeline edits that CI itself verifies. Mid tier per the policy. |
component-curator | inherit | sonnet | Registry search and freshness audits. Discovery work, mid tier. |
design-context-extractor | inherit | sonnet | Token extraction from screenshots and URLs. Structured extraction, mid tier. |
design-system-architect | inherit | sonnet | Token hierarchies and theming. Mostly structure, not cross-file reasoning. |
genui-architect | inherit | sonnet | Zod catalog design with constrained props. Mid tier. |
python-performance-engineer | inherit | sonnet | Profiling and targeted edits, measured by the profiler afterwards. |
test-generator | inherit | sonnet | Generation with a heal loop behind it; a wrong test fails loudly and is regenerated. |
data-pipeline-engineer | haiku | sonnet | Chunking and index design is not mechanical. Up from the cheap tier. |
market-intelligence | haiku | sonnet | Synthesis across sources, and the most-used ork agent in the 14-day telemetry window (9 spawns). Up. |
deployment-manager | haiku | sonnet | Releases and rollbacks are irreversible; the policy says never haiku for those. |
git-operations-engineer | haiku | sonnet | A bad rebase or recovery costs a day. Irreversible ops, up. |
monitoring-engineer | haiku | sonnet | Alert rules page a human. Up from the cheap tier. |
event-driven-architect | opus | sonnet | Topology design, not a judge role. Escalate to opus by hand when a pass fails. |
emulate-engineer | inherit | haiku | Seed configs for API emulation. Mechanical, cheap tier. |
Source of truth for this table: the src/agents/ diff of the PR branch against origin/main (git diff origin/main..HEAD src/agents/). Each row is one -model: / +model: pair. The four that stay on inherit are backend-system-architect, frontend-ui-developer, infrastructure-architect and product-strategist: cross-file reasoning where rework costs more than tokens.
List prices per MTok (input / output)
| model | tier name in frontmatter | input | output |
|---|---|---|---|
| Claude Fable 5.1 | inherit (session default since CC 2.1.257) | $10 | $50 |
| Claude Opus 5 | opus | $5 | $25 |
| Claude Sonnet 5 | sonnet | $2 | $10 |
| Claude Haiku 4.5 | haiku | $1 | $5 |
List prices only. Cache reads, batch discounts and seat plans change the real bill. Subagent telemetry logs no model on 5,684 of 5,841 rows, so the saving from this PR cannot be measured yet; the feedback loop is the worker_token_share metric in the weekly agent ROI digest.
What this does not do
- Under
CLAUDE_CODE_SUBAGENT_MODEL_FORCEevery pin here is ignored. That env var (CC 2.1.257) overrides agent frontmatter for the session. The cost-cap shape isCLAUDE_CODE_SUBAGENT_MODEL=sonnetplus FORCE, and when it is set these fifteen edits are inert by design. They remain correct as authoring policy. - A pinned agent does not pass its pin to the agents it spawns. code-quality-reviewer on opus can spawn test-generator and security-auditor, and each of those resolves its own
model:field (sonnet and opus respectively), not the parent's. A pin is one hop deep. - No skill, tool list, or prompt body changed. The diff is 15 files in
src/agents/, one line each, plus the regeneratedplugins/and docs-site data that mirror them. - hq-ext and user agents are not in this PR. The same review proposes 12 hq-ext moves and 3 user-agent moves; those are separate PRs and a by-hand edit.