diff --git a/README.md b/README.md index 92c974af5..9f30261dd 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/src/cli.ts b/src/cli.ts index 1c9dff7da..3b7f226a8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -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)