From a5caf9194bc4671ed460f029bc973139adcae6ec Mon Sep 17 00:00:00 2001 From: Lex Christopherson Date: Sun, 15 Feb 2026 10:41:04 -0600 Subject: [PATCH] feat(config): add per-agent model overrides (#510) Allow overriding specific agent models without changing the entire profile. Add model_overrides key to config that takes precedence over profile lookup. Co-Authored-By: Claude Opus 4.5 --- get-shit-done/bin/gsd-tools.js | 8 ++++++++ get-shit-done/references/model-profiles.md | 20 ++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/get-shit-done/bin/gsd-tools.js b/get-shit-done/bin/gsd-tools.js index fe9e55d12..18e17251b 100755 --- a/get-shit-done/bin/gsd-tools.js +++ b/get-shit-done/bin/gsd-tools.js @@ -3620,6 +3620,14 @@ function cmdScaffold(cwd, type, options, raw) { function resolveModelInternal(cwd, agentType) { const config = loadConfig(cwd); + + // Check per-agent override first + const override = config.model_overrides?.[agentType]; + if (override) { + return override === 'opus' ? 'inherit' : override; + } + + // Fall back to profile lookup const profile = config.model_profile || 'balanced'; const agentModels = MODEL_PROFILES[agentType]; if (!agentModels) return 'sonnet'; diff --git a/get-shit-done/references/model-profiles.md b/get-shit-done/references/model-profiles.md index 3efd46713..ad401e27c 100644 --- a/get-shit-done/references/model-profiles.md +++ b/get-shit-done/references/model-profiles.md @@ -42,11 +42,27 @@ Orchestrators resolve model before spawning: ``` 1. Read .planning/config.json -2. Get model_profile (default: "balanced") -3. Look up agent in table above +2. Check model_overrides for agent-specific override +3. If no override, look up agent in profile table 4. Pass model parameter to Task call ``` +## Per-Agent Overrides + +Override specific agents without changing the entire profile: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-planner": "haiku" + } +} +``` + +Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`. + ## Switching Profiles Runtime: `/gsd:set-profile `