fix: auto-select default model after login to prevent 'No model configured' error

When users logged in via /login but never explicitly ran /model, the agent
would throw 'No model configured' on every action. Now GSD auto-selects
a default model from available authenticated providers on startup.

Preference order: claude-sonnet-4-20250514 > any Anthropic model > first available.

Also documented /model command in README Getting Started section.

Closes #4
This commit is contained in:
Lex Christopherson 2026-03-10 23:54:33 -06:00
parent 5c64f991bc
commit 0181ff2dca
2 changed files with 21 additions and 0 deletions

View file

@ -132,6 +132,12 @@ gsd
Select from 20+ providers — Anthropic, OpenAI, Google, OpenRouter, GitHub Copilot, and more. If you have a Claude Max or Copilot subscription, the OAuth flow handles everything. Otherwise, paste your API key when prompted.
GSD auto-selects a default model after login. To switch models later:
```bash
/model
```
### Use it
Open a terminal in your project and run:

View file

@ -17,6 +17,21 @@ await runWizardIfNeeded(authStorage)
const modelRegistry = new ModelRegistry(authStorage)
const settingsManager = SettingsManager.create(agentDir)
// Auto-select a default model if none is configured.
// This prevents the "No model configured" error for users who logged in
// but never explicitly ran /model to pick one.
if (!settingsManager.getDefaultModel()) {
const availableModels = modelRegistry.getAvailable()
if (availableModels.length > 0) {
// Prefer Anthropic's default (claude-sonnet-4-20250514), then any Anthropic model, then first available
const preferred =
availableModels.find((m) => m.provider === 'anthropic' && m.id === 'claude-sonnet-4-20250514') ||
availableModels.find((m) => m.provider === 'anthropic') ||
availableModels[0]
settingsManager.setDefaultModelAndProvider(preferred.provider, preferred.id)
}
}
// GSD always uses quiet startup — the gsd extension renders its own branded header
if (!settingsManager.getQuietStartup()) {
settingsManager.setQuietStartup(true)