Built-in profiles
Setmodel_profile in config.json or switch profiles instantly with /gsd-config --profile <name>.
- quality
- balanced
- budget
- adaptive
- inherit
Uses Opus for all decision-making agents and Sonnet for verification. Best for quota-rich environments and critical architecture work where output quality is the top priority.
Agent tier assignments
The table below shows how the five most-used agents resolve under each profile. The tier names (Opus, Sonnet, Haiku) are resolved to runtime-native model IDs whenruntime is set in config.json.
| Agent | quality | balanced | budget | adaptive | inherit |
|---|---|---|---|---|---|
gsd-planner | Opus | Opus | Sonnet | Opus | Inherit |
gsd-executor | Opus | Sonnet | Sonnet | Sonnet | Inherit |
gsd-phase-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit |
gsd-verifier | Sonnet | Sonnet | Haiku | Sonnet | Inherit |
gsd-codebase-mapper | Sonnet | Haiku | Haiku | Haiku | Inherit |
The full catalog covers all 33 shipped agents with explicit per-profile tier assignments. These five represent the most frequently invoked agents during a standard phase lifecycle.
Per-agent overrides
Override individual agents without changing the profile for everything else. This is useful when you want one agent to use a more powerful model than the profile assigns.opus, sonnet, haiku, inherit, or a fully-qualified model ID such as "openai/o3" or "google/gemini-2.5-pro".
Per-phase-type model assignment
Themodels block lets you tune at the phase level without knowing individual agent names. Specify a tier for each phase type and GSD applies it to all agents in that category.
| Phase type | Agents included |
|---|---|
planning | gsd-planner, gsd-roadmapper, gsd-pattern-mapper |
research | gsd-phase-researcher, gsd-project-researcher, gsd-codebase-mapper, gsd-ui-researcher |
execution | gsd-executor, gsd-debugger, gsd-doc-writer |
verification | gsd-verifier, gsd-plan-checker, gsd-nyquist-auditor, gsd-ui-checker |
model_overrides[<agent>]— per-agent exception, wins over everythingdynamic_routing.tier_models[<tier>]— when dynamic routing is enabledmodels[<phase_type>]— coarse phase-level tiermodel_profile— global profile tier per agent- Runtime default
Dynamic routing with failure-tier escalation
Dynamic routing lets agents start on a cheaper tier and escalate automatically when the orchestrator detects a soft failure (plan-check FLAG, verification inconclusive). Enable it withdynamic_routing.enabled: true.
| Tier | Examples | Use case |
|---|---|---|
light | gsd-codebase-mapper, gsd-nyquist-auditor, gsd-plan-checker | Fast mappers, scanners, low-stakes audits |
standard | gsd-executor, gsd-verifier, gsd-phase-researcher | Default workhorse agents |
heavy | gsd-planner, gsd-roadmapper, gsd-debugger | Deep reasoning — these agents are already at the top tier |
Dynamic routing settings reference
Dynamic routing settings reference
| Key | Type | Default | Description |
|---|---|---|---|
dynamic_routing.enabled | boolean | false | Master switch. true activates the dynamic resolver. |
dynamic_routing.tier_models.light | tier alias | (none) | Model for the light tier, typically haiku. |
dynamic_routing.tier_models.standard | tier alias | (none) | Model for the standard tier, typically sonnet. |
dynamic_routing.tier_models.heavy | tier alias | (none) | Model for the heavy tier, typically opus. |
dynamic_routing.escalate_on_failure | boolean | true | When false, every attempt uses the default tier regardless of failure. |
dynamic_routing.max_escalations | integer | 1 | Hard cap on retry escalations per agent invocation. |
Effort control
Control the reasoning effort of each agent invocation independently of model tier. The universal effort ladder is:output_config.effort for Claude, model_reasoning_effort for Codex. Cross-provider clamping applies: max is Anthropic-only and clamps to xhigh on Codex; minimal is Codex-only and clamps to low on Claude.
Effort settings reference
Effort settings reference
| Key | Default | Description |
|---|---|---|
effort.default | "high" | Global fallback effort level when no tier or agent override matches. |
effort.routing_tier_defaults.light | "low" | Effort for light-tier agents. |
effort.routing_tier_defaults.standard | "high" | Effort for standard-tier agents. |
effort.routing_tier_defaults.heavy | "xhigh" | Effort for heavy-tier agents. |
effort.agent_overrides.<agent-id> | (none) | Per-agent effort override; beats all tier defaults. |
- Invocation override (e.g.
--effortflag onresolve-execution) effort.agent_overrides[<agent-id>]effort.routing_tier_defaults[<light|standard|heavy>]effort.default"high"(universal default)
Profile philosophy
| Profile | Philosophy | When to use |
|---|---|---|
quality | Opus for all decision-making, Sonnet for verification | Quota available; critical architecture work |
balanced | Opus for planning only, Sonnet for everything else | Normal development (recommended default) |
budget | Sonnet for code-writing, Haiku for research/verification | High-volume work, less critical phases |
inherit | All agents follow the session model | Non-Anthropic providers, OpenRouter, local models |
