charmbracelet/crush · critical · errModelProviderNotConfigured
model provider not configured
Error message
model provider not configured
What it means
errModelProviderNotConfigured is a sentinel error returned by coordinator.run (line 261), Summarize (line 1240), and runSubAgent (line 1425) when the provider named by the active model's ModelCfg.Provider is not found in the resolved Providers config. The provider config is required to build API credentials/options (mergeCallOptions, token refresh), so the run is aborted.
Source
Thrown at internal/agent/coordinator.go:60
"github.com/charmbracelet/crush/internal/skills"
"golang.org/x/sync/errgroup"
"charm.land/fantasy/providers/anthropic"
"charm.land/fantasy/providers/azure"
"charm.land/fantasy/providers/bedrock"
"charm.land/fantasy/providers/google"
"charm.land/fantasy/providers/openai"
"charm.land/fantasy/providers/openaicompat"
"charm.land/fantasy/providers/openrouter"
"charm.land/fantasy/providers/vercel"
openaisdk "github.com/openai/openai-go/v3/option"
"github.com/qjebbs/go-jsons"
)
// Coordinator errors.
var (
errCoderAgentNotConfigured = errors.New("coder agent not configured")
errModelProviderNotConfigured = errors.New("model provider not configured")
errLargeModelNotSelected = errors.New("large model not selected")
errSmallModelNotSelected = errors.New("small model not selected")
errLargeModelProviderNotConfigured = errors.New("large model provider not configured")
errSmallModelProviderNotConfigured = errors.New("small model provider not configured")
errLargeModelNotFound = errors.New("large model not found in provider config")
errSmallModelNotFound = errors.New("small model not found in provider config")
)
// Copilot models that use the Responses API instead of Chat Completions.
var copilotResponsesModels = map[string]bool{
"gpt-5.2": true,
"gpt-5.2-codex": true,
"gpt-5.3-codex": true,
"gpt-5.4": true,
"gpt-5.4-mini": true,
"gpt-5.5": true,
"gpt-5-mini": true,
"gpt-5.6-luna": true,View on GitHub (pinned to 7944b8e522)
Solutions
- Add the missing provider block to your crushrc so it matches the model's provider id.
- Update the model selection (large/small model settings) to a model whose provider is configured.
- Check config load logs for provider merge/load failures and fix the source config.
Example fix
// before
provider "openai" { ... }
model "anthropic/claude-sonnet-4" // provider missing
// after
provider "anthropic" {
api_key env.ANTHROPIC_API_KEY
}
model "anthropic/claude-sonnet-4" Defensive patterns
Strategy: validation
Validate before calling
model := coord.CurrentModel()
if _, ok := cfg.Providers.Get(model.ModelCfg.Provider); !ok {
return fmt.Errorf("provider %q for selected model %q is not configured", model.ModelCfg.Provider, model.ID)
} Try / catch
result, err := coord.Run(ctx, sessionID, prompt)
if errors.Is(err, errModelProviderNotConfigured) {
// add the provider block or switch models, then retry the run
} Prevention
- Ensure every selected model (large and small) references a defined provider block.
- Check startup logs for provider config load/merge failures.
- When renaming a provider, update all model references in the same change.
When it happens
Trigger: Run/Summarize/runSubAgent invoked after UpdateModels resolved a model whose Provider string has no matching entry in cfg.Config().Providers — e.g. the model came from a different config layer, the provider block was removed, or the provider id is misspelled.
Common situations: Deleting or renaming a provider block while models still reference it; env-specific config overlays dropping a provider; OAuth providers whose config failed to load; switching models to one whose provider was never set up.
Related errors
- small model provider not configured
- coder agent not configured
- %s model: provider %q not found in configuration. Use 'crush
- %s model %q not found
- %s model: model %q found in multiple providers: %s. Please s
AI-assisted analysis of charmbracelet/crush@7944b8e522 (2026-08-29).
Data as JSON: /api/errors/13a0dde7397184f4.
Report an issue: GitHub.