{"record":{"id":"02e9e5aff3ac809d","repo":"aaif-goose/goose","slug":"could-not-create-provider-provider-not-found","errorCode":null,"errorMessage":"Could not create provider: provider '{}' not found","messagePattern":"Could not create provider: provider '(.+?)' not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/goose/src/agents/agent.rs","lineNumber":3598,"sourceCode":"            if crate::providers::get_from_registry(&provider_name)\n                .await\n                .is_ok()\n            {\n                let p = crate::providers::create_with_working_dir(\n                    &provider_name,\n                    extensions,\n                    session.working_dir.clone(),\n                )\n                .await\n                .map_err(|error| provider_creation_error(error, \"Could not create provider\"))?;\n                (p, model_config, false)\n            } else {\n                let fallback_provider_name = config\n                    .get_goose_provider()\n                    .ok()\n                    .filter(|name| name != &provider_name)\n                    .ok_or_else(|| {\n                        anyhow!(\n                            \"Could not create provider: provider '{}' not found\",\n                            provider_name\n                        )\n                    })?;\n\n                tracing::warn!(\n                    \"Session provider '{}' unavailable, falling back to '{}'\",\n                    provider_name,\n                    fallback_provider_name\n                );\n\n                let fallback_model_name = config.get_goose_model().ok().ok_or_else(|| {\n                    anyhow!(\"Could not configure fallback provider: missing model\")\n                })?;\n                let fallback_model_config = crate::model_config::model_config_from_user_config(\n                    &fallback_provider_name,\n                    &fallback_model_name,\n                )","sourceCodeStart":3580,"sourceCodeEnd":3616,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/crates/goose/src/agents/agent.rs#L3580-L3616","documentation":"Thrown when the session's provider is not found in the provider registry (providers::get_from_registry fails) AND no fallback is possible: config.get_goose_provider() returns none or returns the same missing name. The filter(|name| name != &provider_name) explicitly rejects a fallback identical to the missing provider, so goose cannot silently retry the same broken name.","triggerScenarios":"Resuming a session whose provider_name no longer exists (renamed or removed provider in a newer goose version, or a custom/bundled provider uninstalled) while GOOSE_PROVIDER is unset or set to that same missing provider.","commonSituations":"Version upgrades that rename or drop providers; sessions copied from another machine that had different providers installed; typos in GOOSE_PROVIDER; self-built or experimental providers removed from the registry.","solutions":["Set GOOSE_PROVIDER to an installed provider different from the session's, e.g. 'export GOOSE_PROVIDER=openai', then resume — goose will fall back to it","List what is available via 'goose configure' provider selection to confirm the installed names","Update or reinstall goose so the session's provider exists in the registry again","If the provider is permanently gone, start a new session instead of resuming"],"exampleFix":"# before: session saved with provider 'experimental-agent'\n$ goose session resume\nError: Could not create provider: provider 'experimental-agent' not found\n\n# after\n$ export GOOSE_PROVIDER=openai\n$ goose session resume   # logs: falling back to 'openai'","handlingStrategy":"validation","validationCode":"// Rust — before resuming, confirm the session provider exists or a distinct fallback is set\nlet session_provider_ok = crate::providers::get_from_registry(&provider_name).await.is_ok();\nlet fallback = Config::global().get_goose_provider().ok()\n    .filter(|n| n.as_str() != provider_name);\nif !session_provider_ok && fallback.is_none() {\n    // choose an installed provider in config before restoring\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep GOOSE_PROVIDER set to a mainstream installed provider so a fallback always exists","Re-check installed provider names after every goose upgrade","Avoid resuming sessions that reference custom providers you have uninstalled"],"tags":["provider","registry","session-restore","versioning","fallback"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}