Skip to content

How to Configure GSD Model Profiles for Quality vs Token Budget Trade-offs

I was burning through my API budget way too fast. My GSD agent sessions were racking up hundreds of thousands of tokens, and I couldn’t figure out why. Then I discovered the model profile system - it turns out I was using Opus for everything, even simple verification tasks where Haiku would have been plenty.

The Problem: Wrong Model for the Wrong Task

GSD uses different agents for different phases: planning, execution, and verification. Each phase has different complexity requirements:

  • Planning needs deep reasoning to understand requirements and design solutions
  • Execution needs solid coding skills but not maximum intelligence
  • Verification just needs to check if things work - fast and cheap is fine

By default, GSD uses a “balanced” profile that puts Opus on planning and Sonnet on execution. But I didn’t know this. I also didn’t know I could change it.

Understanding the Four Profiles

GSD offers four model profiles to balance quality against token cost:

ProfilePlanningExecutionVerification
qualityOpusOpusSonnet
balanced (default)OpusSonnetSonnet
budgetSonnetSonnetHaiku
inheritInheritInheritInherit

Quality gives you maximum reasoning everywhere. Opus plans and Opus executes. This is overkill for most tasks but perfect for complex architectural decisions.

Balanced is the default. Opus plans, Sonnet executes and verifies. Good quality at moderate cost.

Budget uses Sonnet for heavy lifting and Haiku for verification. Lower quality, but significantly cheaper.

Inherit follows whatever model your runtime is currently using. This is essential for non-Anthropic providers like OpenRouter or local models.

Switching Profiles

I switched to budget mode with a simple command:

Switch to Budget Profile
/gsd-set-profile budget

To go back to quality mode:

Switch to Quality Profile
/gsd-set-profile quality

For interactive configuration where you can see all options:

Interactive Settings
/gsd-settings

The interactive mode shows you the current profile and lets you change it along with other GSD settings.

When to Use Each Profile

After experimenting, I found these use cases work best:

Quality profile:

  • Complex architectural decisions
  • Research-heavy planning phases
  • Projects where correctness is critical

Balanced profile (default):

  • Most development work
  • Good balance of quality and cost
  • When you’re not sure, stick with this

Budget profile:

  • Quick prototyping
  • Simple, well-defined tasks
  • Running out of API budget
  • CI/CD pipelines where cost matters

Inherit profile:

  • Using OpenRouter with various models
  • Running local LLMs (Ollama, LM Studio)
  • When your runtime handles model selection

Per-Agent Overrides

Sometimes you want more granular control. Through /gsd-settings, you can override individual agents:

Per-Agent Configuration
# Example: Use Haiku for code-reviewer (fast checking)
# Use Opus for planner (complex reasoning)
# Custom model assignments per agent type

This is useful when you know certain agents in your workflow don’t need expensive models. My code-reviewer agent just checks style and basic issues - Haiku handles that perfectly.

Adaptive Model Preset

GSD v1.34.0 introduced an adaptive model preset that dynamically adjusts based on task complexity:

Adaptive Model Behavior
Simple tasks -> Lower tier model
Complex tasks -> Higher tier model

The system detects complexity automatically. I haven’t tested this extensively yet, but it sounds like a smarter approach than manually switching profiles.

Non-Anthropic Providers

If you’re using OpenRouter or local models, the inherit profile is your only option. GSD will follow your runtime’s current model choice:

Use Inherit for OpenRouter/Local
/gsd-set-profile inherit

This works with:

  • OpenRouter (multiple model providers)
  • Local models (Ollama, LM Studio, vLLM)
  • Runtime model selection (OpenCode /model)

The inherit profile ensures GSD plays nice with whatever model your runtime has active.

Summary

GSD model profiles solved my budget problem. I was using quality mode by accident, burning tokens on simple verification tasks. Now I switch profiles based on the work:

  • Quality for complex planning
  • Balanced for normal development
  • Budget for prototyping and CI/CD
  • Inherit for non-Anthropic providers

The /gsd-set-profile command is my new best friend. Quick switch, immediate cost impact.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments