{"record":{"id":"13a0dde7397184f4","repo":"charmbracelet/crush","slug":"model-provider-not-configured","errorCode":null,"errorMessage":"model provider not configured","messagePattern":"model provider not configured","errorType":"exception","errorClass":"errModelProviderNotConfigured","httpStatus":null,"severity":"critical","filePath":"internal/agent/coordinator.go","lineNumber":60,"sourceCode":"\t\"github.com/charmbracelet/crush/internal/skills\"\n\t\"golang.org/x/sync/errgroup\"\n\n\t\"charm.land/fantasy/providers/anthropic\"\n\t\"charm.land/fantasy/providers/azure\"\n\t\"charm.land/fantasy/providers/bedrock\"\n\t\"charm.land/fantasy/providers/google\"\n\t\"charm.land/fantasy/providers/openai\"\n\t\"charm.land/fantasy/providers/openaicompat\"\n\t\"charm.land/fantasy/providers/openrouter\"\n\t\"charm.land/fantasy/providers/vercel\"\n\topenaisdk \"github.com/openai/openai-go/v3/option\"\n\t\"github.com/qjebbs/go-jsons\"\n)\n\n// Coordinator errors.\nvar (\n\terrCoderAgentNotConfigured         = errors.New(\"coder agent not configured\")\n\terrModelProviderNotConfigured      = errors.New(\"model provider not configured\")\n\terrLargeModelNotSelected           = errors.New(\"large model not selected\")\n\terrSmallModelNotSelected           = errors.New(\"small model not selected\")\n\terrLargeModelProviderNotConfigured = errors.New(\"large model provider not configured\")\n\terrSmallModelProviderNotConfigured = errors.New(\"small model provider not configured\")\n\terrLargeModelNotFound              = errors.New(\"large model not found in provider config\")\n\terrSmallModelNotFound              = errors.New(\"small model not found in provider config\")\n)\n\n// Copilot models that use the Responses API instead of Chat Completions.\nvar copilotResponsesModels = map[string]bool{\n\t\"gpt-5.2\":       true,\n\t\"gpt-5.2-codex\": true,\n\t\"gpt-5.3-codex\": true,\n\t\"gpt-5.4\":       true,\n\t\"gpt-5.4-mini\":  true,\n\t\"gpt-5.5\":       true,\n\t\"gpt-5-mini\":    true,\n\t\"gpt-5.6-luna\":  true,","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/charmbracelet/crush/blob/7944b8e52225d8805e31eacbf7ef24856b0dfb7a/internal/agent/coordinator.go#L42-L78","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nprovider \"openai\" { ... }\nmodel \"anthropic/claude-sonnet-4\" // provider missing\n// after\nprovider \"anthropic\" {\n  api_key env.ANTHROPIC_API_KEY\n}\nmodel \"anthropic/claude-sonnet-4\"","handlingStrategy":"validation","validationCode":"model := coord.CurrentModel()\nif _, ok := cfg.Providers.Get(model.ModelCfg.Provider); !ok {\n    return fmt.Errorf(\"provider %q for selected model %q is not configured\", model.ModelCfg.Provider, model.ID)\n}","typeGuard":null,"tryCatchPattern":"result, err := coord.Run(ctx, sessionID, prompt)\nif errors.Is(err, errModelProviderNotConfigured) {\n    // add the provider block or switch models, then retry the run\n}","preventionTips":["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."],"tags":["config","provider","model","coordinator"],"backgroundTag":"provider-not-configured","analyzedSha":"7944b8e52225d8805e31eacbf7ef24856b0dfb7a","analyzedAt":"2026-08-29T12:48:59.079Z","schemaVersion":2},"datasetVersion":"2026-08-29T17:17:51.833Z"}