Skip to main content
Model profiles control which Claude model each GSD agent uses. Balance quality vs token spend based on project needs.

Quick Comparison

ProfilePlanningExecutionVerificationBest For
qualityOpusOpusSonnetCritical work, quota available
balanced (default)OpusSonnetSonnetMost projects, best value
budgetSonnetSonnetHaikuHigh-volume, less critical work

Setting Your Profile

During Project Init

/gsd:new-project
You’ll be asked to choose a profile during configuration.

Change Anytime

/gsd:set-profile quality
/gsd:set-profile balanced
/gsd:set-profile budget
Or via settings:
/gsd:settings

Per-Agent Breakdown

Quality Profile

Maximum quality. Opus for all decision-making, Sonnet for read-only verification.
AgentModelRole
gsd-plannerOpusCreates task plans with XML structure
gsd-roadmapperOpusDesigns phase breakdown and roadmap
gsd-executorOpusImplements code from plans
gsd-phase-researcherOpusInvestigates domain/stack for phases
gsd-project-researcherOpusDeep research during project init
gsd-research-synthesizerSonnetCombines research findings
gsd-debuggerOpusRoot cause analysis and fixes
gsd-codebase-mapperSonnetMaps existing codebase structure
gsd-verifierSonnetVerifies phase completion
gsd-plan-checkerSonnetValidates plans achieve goals
gsd-integration-checkerSonnetChecks cross-phase integration
Use when:
  • Building production systems
  • Complex architecture decisions
  • Quota is available
  • Quality is non-negotiable

Balanced Profile (Default)

Opus where it matters most (planning), Sonnet everywhere else.
AgentModelRole
gsd-plannerOpusCreates task plans with XML structure
gsd-roadmapperSonnetDesigns phase breakdown and roadmap
gsd-executorSonnetImplements code from plans
gsd-phase-researcherSonnetInvestigates domain/stack for phases
gsd-project-researcherSonnetDeep research during project init
gsd-research-synthesizerSonnetCombines research findings
gsd-debuggerSonnetRoot cause analysis and fixes
gsd-codebase-mapperHaikuMaps existing codebase structure
gsd-verifierSonnetVerifies phase completion
gsd-plan-checkerSonnetValidates plans achieve goals
gsd-integration-checkerSonnetChecks cross-phase integration
Use when:
  • Most development work
  • Good balance of quality and cost
  • Default recommendation

Budget Profile

Minimum cost. Sonnet for code, Haiku for research and verification.
AgentModelRole
gsd-plannerSonnetCreates task plans with XML structure
gsd-roadmapperSonnetDesigns phase breakdown and roadmap
gsd-executorSonnetImplements code from plans
gsd-phase-researcherHaikuInvestigates domain/stack for phases
gsd-project-researcherHaikuDeep research during project init
gsd-research-synthesizerHaikuCombines research findings
gsd-debuggerSonnetRoot cause analysis and fixes
gsd-codebase-mapperHaikuMaps existing codebase structure
gsd-verifierHaikuVerifies phase completion
gsd-plan-checkerHaikuValidates plans achieve goals
gsd-integration-checkerHaikuChecks cross-phase integration
Use when:
  • Prototyping or exploration
  • High-volume work
  • Less critical phases
  • Conserving quota

Profile Philosophy

Why Opus for Planning?

Planning is where architectural decisions happen. A good plan structure makes execution straightforward. Bad plans create cascading issues. Opus excels at:
  • Breaking down complex requirements
  • Identifying dependencies
  • Creating atomic, executable tasks
  • Anticipating edge cases

Why Sonnet for Execution?

Sonnet follows structured plans extremely well. Given clear XML instructions, it produces consistent quality code. Balanced profile philosophy:
  • Opus plans the “what” and “why”
  • Sonnet executes the “how”
  • Quality stays high, cost stays reasonable

Why Haiku for Verification?

Verification is read-only analysis. Haiku is fast and capable for checking deliverables against requirements. Budget profile trade-off:
  • Lower cost across the board
  • Acceptable quality for most work
  • May need manual review on complex phases

Token Cost Implications

Relative Costs (Approximate)

ModelInput CostOutput CostSpeed
Opus4x4xSlowest
Sonnet1x1xMedium
Haiku0.1x0.1xFastest

Example Phase Execution

A typical phase with 3 plans:
ProfilePlanning CostExecution CostVerification CostTotal
Quality4x (Opus)12x (3× Opus)1x (Sonnet)~17x
Balanced4x (Opus)3x (3× Sonnet)1x (Sonnet)~8x
Budget1x (Sonnet)3x (3× Sonnet)0.1x (Haiku)~4x
Actual costs vary based on context size, research depth, and plan complexity.

Combining Profiles with Workflow Agents

Further optimize cost by disabling agents:

Maximum Speed (Budget Profile + No Agents)

{
  "model_profile": "budget",
  "workflow": {
    "research": false,
    "plan_check": false,
    "verifier": false
  }
}
Use for: Quick prototypes, familiar domains, iteration cycles.

Maximum Quality (Quality Profile + All Agents)

{
  "model_profile": "quality",
  "workflow": {
    "research": true,
    "plan_check": true,
    "verifier": true,
    "nyquist_validation": true
  }
}
Use for: Production systems, complex domains, critical phases.
{
  "model_profile": "balanced",
  "workflow": {
    "research": true,
    "plan_check": true,
    "verifier": true,
    "nyquist_validation": true
  }
}
Use for: Most development work.

Model Selection Strategy

Choose profile based on:

Use Quality When:

  • Building production systems
  • Making critical architecture decisions
  • Complex or unfamiliar domain
  • Quota is available
  • Quality > cost

Use Balanced When:

  • Normal development work
  • Good existing context (after map-codebase)
  • Want good quality at reasonable cost
  • Default for most projects

Use Budget When:

  • Prototyping or exploration
  • High-volume work (many phases)
  • Simple or familiar domains
  • Conserving quota
  • Speed > quality

Dynamic Profile Switching

Switch profiles per phase:
# Critical foundation phase
/gsd:set-profile quality
/gsd:plan-phase 1
/gsd:execute-phase 1

# Simpler UI phase
/gsd:set-profile balanced
/gsd:plan-phase 2
/gsd:execute-phase 2

# Bulk content phase
/gsd:set-profile budget
/gsd:plan-phase 3
/gsd:execute-phase 3

Viewing Current Profile

Check active profile:
cat .planning/config.json | grep model_profile
Or via progress:
/gsd:progress
Shows current config including profile.