Model Routing Policy
Status: adopted Last updated: 2026-09-05
This document defines the default model and reasoning-effort routing for Claude Code, Codex, Cursor, and Grok in Harness workflows.
Decision
Use explicit role tiers, not prompt-text inference.
Harness must route model and effort from the workflow role:
lite: cheap, read-heavy, low-risk workstandard: ordinary implementation and setupworker: Breezing implementation and retry workdeep: architecture, security, cross-repo, migration, and failure recoveryreview: quality gates and adversarial checksrelease: procedural release and public-surface checkslong-context: large repository or long-session context work
Do not infer effort from free-text markers such as "think harder". A caller may still ask for one-off deeper reasoning, but durable routing belongs in config, agent frontmatter, or wrapper arguments.
Official Evidence
Claude Code supports model aliases and explicit model IDs. The legacy opusplan alias uses Opus in plan mode and Sonnet in execution mode; the September routes below select Fable 5.1 explicitly. Claude Code settings can pin model, restrict availableModels, and set default alias targets through ANTHROPIC_DEFAULT_*_MODEL environment variables. Official docs: https://code.claude.com/docs/en/model-config
Claude Code effort is configurable through /effort, /model, --effort, CLAUDE_CODE_EFFORT_LEVEL, effortLevel, and skill/subagent frontmatter. Frontmatter overrides the session level, while CLAUDE_CODE_EFFORT_LEVEL overrides both. Official docs: https://code.claude.com/docs/en/model-config
On the verified Claude Code 2.1.261 runtime, a saved