Files
msd-core/get-shit-done/references/model-profiles.md
Lex Christopherson 2b9951b9c8 fix(agents): return 'inherit' instead of 'opus' for model resolution (#558)
Claude Code's "opus" alias maps to a specific model version (claude-opus-4-1).
Organizations that block older opus versions while allowing newer ones see
agents silently fall back to Sonnet. By returning "inherit" instead, agents
use whatever opus version the user has configured in their session.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-15 09:21:40 -06:00

2.9 KiB

Model Profiles

Model profiles control which Claude model each GSD agent uses. This allows balancing quality vs token spend.

Profile Definitions

Agent quality balanced budget
gsd-planner opus opus sonnet
gsd-roadmapper opus sonnet sonnet
gsd-executor opus sonnet sonnet
gsd-phase-researcher opus sonnet haiku
gsd-project-researcher opus sonnet haiku
gsd-research-synthesizer sonnet sonnet haiku
gsd-debugger opus sonnet sonnet
gsd-codebase-mapper sonnet haiku haiku
gsd-verifier sonnet sonnet haiku
gsd-plan-checker sonnet sonnet haiku
gsd-integration-checker sonnet sonnet haiku

Profile Philosophy

quality - Maximum reasoning power

  • Opus for all decision-making agents
  • Sonnet for read-only verification
  • Use when: quota available, critical architecture work

balanced (default) - Smart allocation

  • Opus only for planning (where architecture decisions happen)
  • Sonnet for execution and research (follows explicit instructions)
  • Sonnet for verification (needs reasoning, not just pattern matching)
  • Use when: normal development, good balance of quality and cost

budget - Minimal Opus usage

  • Sonnet for anything that writes code
  • Haiku for research and verification
  • Use when: conserving quota, high-volume work, less critical phases

Resolution Logic

Orchestrators resolve model before spawning:

1. Read .planning/config.json
2. Get model_profile (default: "balanced")
3. Look up agent in table above
4. Pass model parameter to Task call

Switching Profiles

Runtime: /gsd:set-profile <profile>

Per-project default: Set in .planning/config.json:

{
  "model_profile": "balanced"
}

Design Rationale

Why Opus for gsd-planner? Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.

Why Sonnet for gsd-executor? Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.

Why Sonnet (not Haiku) for verifiers in balanced? Verification requires goal-backward reasoning - checking if code delivers what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.

Why Haiku for gsd-codebase-mapper? Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.

Why inherit instead of passing opus directly? Claude Code's "opus" alias maps to a specific model version. Organizations may block older opus versions while allowing newer ones. GSD returns "inherit" for opus-tier agents, causing them to use whatever opus version the user has configured in their session. This avoids version conflicts and silent fallbacks to Sonnet.