Skip to content

Model choice

GAIA does not run everything on one model. Your session’s model handles the conversation, the decisions, and every step that needs you. When a workflow hands a step to a sub-agent (opens in a new tab) (a separate Claude instance with its own fresh context), the workflow names the sub-agent’s model, chosen for that kind of work. This page lists every one of those choices.

Every choice follows one table that Claude reads from your project wiki (ask Claude to show it to you). GAIA ranks models by how well they fit the work: how much reasoning it needs, and how closely the model has to stick to its instructions. Price decides only between two models that fit equally well.

Kind of workModelWhy it fits
Pulling out, sorting, or listing items by a written ruleHaikuA rule decides each item, and the result can be counted or checked.
Following a template, a rule id, or a written convention: scaffolding, or a fix for a specific lint or accessibility ruleHaikuThe template already holds the answer. More reasoning adds nothing.
Reading widely and making a call on each item: research, checking a finding, verifyingSonnetThe instructions carry the judgment, and Sonnet applies it one item at a time without straying from them.
A bounded change with a written plan and a check behind itSonnetThe plan carries the judgment, and Sonnet sticks to the plan.
Review: finding what a change got wrongOpusIt needs sustained judgment and a wide view. A missed defect costs more than the price difference.
Specs, plans, and design or architecture decisionsOpus (or Fable)One weak choice here carries into everything built on it.

Some steps never leave your session, whatever kind of work they are: a step that needs to ask you something (a sub-agent cannot ask you questions), small work, and quick edit-run-fix loops, where handing off costs more than it saves. For the roles sub-agents take and why only your session commits, see Who does what.

How GAIA picks a model for a stepA step that needs you, is small, or is quick back-and-forth stays in your session on your model. Any other step goes to a sub-agent on the model for that kind of work: Haiku for rule, template, and list work; Sonnet for a judgment call on each item and for changes with a written plan; Opus for review; Opus or Fable for plans and design.A workflow reaches a stepDoes it need you, or is itsmall or back-and-forth?Your session does itYour modelA sub-agent does it, on the model for that kind of workRules, templates,listsHaikuA call on each item,a change with a planSonnetReviewOpusPlans and designOpus or FableYesNo
How GAIA picks a model for a stepA step that needs you, is small, or is quick back-and-forth stays in your session on your model. Any other step goes to a sub-agent on the model for that kind of work: Haiku for rule, template, and list work; Sonnet for a judgment call on each item and for changes with a written plan; Opus for review; Opus or Fable for plans and design.A workflow reaches a stepDoes it need you, or is it small orback-and-forth?Your session does itYour modelA sub-agent does it,on the model for thatkind of workRules, templates,listsHaikuA call on each item,a change with a planSonnetReviewOpusPlans and designOpus or FableYesNo
How GAIA picks a model for a step

GAIA never sets effort. Every sub-agent runs at your session’s /effort level, the same as work your session does itself, so a low-effort session reviews at low and a high-effort one at high. The CLAUDE_CODE_EFFORT_LEVEL environment variable overrides the level on a machine. Set it in your shell profile, then restart Claude Code. GAIA chooses the model. You choose the effort.

A step not listed here runs on your session’s model. That covers /gaia-debt, /gaia-residue, /gaia-codify, /gaia-forensics, and any sub-agent a workflow starts without naming a model.

WorkflowStepModel
/gaia-specWriting the SPEC, asking you questions, its auditYour model. On a model other than Opus or Fable, Claude first offers to stop so you can switch with /model. Auto mode skips the offer.
/gaia-planThe plannerOpus or Fable. On Opus or Fable it keeps your model. Otherwise Claude asks: Opus (recommended), Fable, or your model. Auto mode uses Opus without asking.
Each phase’s task sub-agentsSonnet. The planner can raise a phase to Opus when it judges that phase to be deep design work, and names the phase and the reason in the plan.
uat-fidelity-judgeOpus
Code Audit Teamaudit-loop-unit, which runs the roundsOpus
Members: code-audit-frontend, code-audit-github-workflowsOpus
audit-rule-specialist, started by code-audit-frontendHaiku
audit-refuter, for code-audit-frontend’s own Critical and Major findingsSonnet
audit-light-reviewerSonnet
The fixerSonnet
tdd skillworthiness-evaluatorOpus
/gaia-fitnessfitness-judge, and the agent that proposes fixesSonnet
/gaia-cleanseWriting the report, then applying itSonnet, one agent each
/gaia-wikiSync, and finding consolidate issuesSonnet
Lint checksHaiku
Consolidate questions and lint fixesYour model
/update-depsOverride checks, minor and patch updates, sub-dependency refreshHaiku
Major updates to react, react-router, storybook, or typescriptOpus
Major updates to eslint and every other groupSonnet
Security fixesYour model
/update-gaiaThe agent that merges the update into your projectOpus when the update crosses a major version, Sonnet otherwise
Scaffolders and fix skillsnew-component, new-route, new-hook, new-service, eslint-fixes, a11y-fixesHaiku

These show the workflows where the model changes from step to step.

Models in /gaia-planThe planner keeps your model when you are on Opus or Fable. In auto mode, or with nobody to ask, it uses Opus. Otherwise Claude asks: Opus, Fable, or your model. The planner writes the plan. Each phase then runs its tasks in Sonnet sub-agents, and the planner can raise one phase to Opus. The UAT fidelity judge, on Opus, checks the acceptance tests against the SPEC, and the pull request goes to the Code Audit Team.Pick the planner's modelOn Opus or Fable:keep itOpus or FableAuto mode, ornobody to askOpusOtherwise Claude asks:Opus, Fable, or yoursYour modelThe planner writes the planEach phase's tasks run in sub-agents(the planner can raise a phase to Opus)SonnetThe UAT fidelity judge checks theacceptance tests against the SPECOpusThe Code Audit Team reviews the pull request
Models in /gaia-planThe planner keeps your model when you are on Opus or Fable. In auto mode, or with nobody to ask, it uses Opus. Otherwise Claude asks: Opus, Fable, or your model. The planner writes the plan. Each phase then runs its tasks in Sonnet sub-agents, and the planner can raise one phase to Opus. The UAT fidelity judge, on Opus, checks the acceptance tests against the SPEC, and the pull request goes to the Code Audit Team.Pick the planner's modelOn Opus or Fable:keep itOpus or FableAuto mode, or nobodyto askOpusOtherwise Claude asks: Opus, Fable, or yoursYour modelThe planner writes the planEach phase's tasks run in sub-agents (theplanner can raise a phase to Opus)SonnetThe UAT fidelity judge checks the acceptancetests against the SPECOpusThe Code Audit Team reviews the pull request
Models in /gaia-plan
Models in the Code Audit Teamaudit-loop-unit, on Opus, runs the rounds outside your session. A member, on Opus, reviews its files, or audit-light-reviewer, on Sonnet, reviews a small change since the last full review. code-audit-frontend also hands line-level rule checks to audit-rule-specialist agents on Haiku, and each of its own Critical or Major findings to an audit-refuter on Sonnet. A fixer on Sonnet repairs the findings. A script checks each repair, the Quality Gate runs, and the round is committed. The next round starts until every member has cleared the change, and then your session merges it.The pull request is ready for auditaudit-loop-unit runs the roundsoutside your sessionOpusA member reviews its files.code-audit-frontend also starts:Opusaudit-light-reviewer, for asmall change since a reviewSonnetaudit-rule-specialist,one per areaHaikuaudit-refuter, one perCritical or Major findingSonnetA fixer repairs what the reviewers foundSonnetA script checks each repair, the Quality Gateruns, and the round is committedEvery member has cleared it: your session mergesYour modelNext roundAll clear
Models in the Code Audit Teamaudit-loop-unit, on Opus, runs the rounds outside your session. A member, on Opus, reviews its files, or audit-light-reviewer, on Sonnet, reviews a small change since the last full review. code-audit-frontend also hands line-level rule checks to audit-rule-specialist agents on Haiku, and each of its own Critical or Major findings to an audit-refuter on Sonnet. A fixer on Sonnet repairs the findings. A script checks each repair, the Quality Gate runs, and the round is committed. The next round starts until every member has cleared the change, and then your session merges it.The pull request is ready for auditaudit-loop-unit runs the rounds outside yoursessionOpusA member reviews itsfiles.code-audit-frontendalso starts:Opusaudit-light-reviewer,for a small changesince a reviewSonnetaudit-rule-specialist, one perareaHaikuaudit-refuter, oneper Critical or MajorfindingSonnetA fixer repairs what the reviewers foundSonnetA script checks each repair, the Quality Gateruns, and the round is committedEvery member has cleared it: your session mergesYour modelNext roundAll clear
Models in the Code Audit Team
Models in /update-depsAfter you approve the preview, a Haiku agent runs the override check and the minor and patch updates. Each major update group gets its own agent: Opus for react, react-router, storybook, and typescript; Sonnet for eslint and every other group. A Haiku agent refreshes sub-dependencies. Your session handles the security fixes, because they can need your answer. A Haiku agent runs the override check again.You approve the previewYour modelOverride check, thenminor and patch updatesHaikuMajor: react, react-router,storybook, typescriptOpusMajor: eslint andevery other groupSonnetSub-dependencies refreshHaikuSecurity fixesYour modelOverride check againHaiku
Models in /update-depsAfter you approve the preview, a Haiku agent runs the override check and the minor and patch updates. Each major update group gets its own agent: Opus for react, react-router, storybook, and typescript; Sonnet for eslint and every other group. A Haiku agent refreshes sub-dependencies. Your session handles the security fixes, because they can need your answer. A Haiku agent runs the override check again.You approve the previewYour modelOverride check, then minor and patch updatesHaikuMajor: react,react-router,storybook, typescriptOpusMajor: eslint andevery other groupSonnetSub-dependencies refreshHaikuSecurity fixesYour modelOverride check againHaiku
Models in /update-deps

Six skills set Haiku in their frontmatter: the four scaffolders (new-component, new-route, new-hook, new-service) and the two fix skills (eslint-fixes, a11y-fixes). When one of them loads, Claude Code runs the rest of that turn on Haiku. That is right for these skills, because the turn that loads them does nothing but follow a template or fix a specific rule.

Every other skill leaves the model alone and runs on yours. Some look like lookups but load in the middle of other work, such as typescript and tailwind. A Haiku setting there would move the rest of your implementation turn to Haiku. Others need judgment, such as react-code.

A pinned skill runs the rest of the turn on its model even when you picked a stronger one, so a pin on judgment work would hold that work back. Set a model on a skill you write only when every use of it is template or rule-id work.

  • Your session’s model, with /model. It runs every step that is not listed in the table, and everything that needs you.
  • The planner’s model, when /gaia-plan asks.
  • Effort, with /effort, for your session and every sub-agent.

What each step costs shows up in the cost and usage ledger.