aaif-goose/goose · error

Could not create provider: provider '{}' not found

Error message

Could not create provider: provider '{}' not found

What it means

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.

Source

Thrown at crates/goose/src/agents/agent.rs:3598

            if crate::providers::get_from_registry(&provider_name)
                .await
                .is_ok()
            {
                let p = crate::providers::create_with_working_dir(
                    &provider_name,
                    extensions,
                    session.working_dir.clone(),
                )
                .await
                .map_err(|error| provider_creation_error(error, "Could not create provider"))?;
                (p, model_config, false)
            } else {
                let fallback_provider_name = config
                    .get_goose_provider()
                    .ok()
                    .filter(|name| name != &provider_name)
                    .ok_or_else(|| {
                        anyhow!(
                            "Could not create provider: provider '{}' not found",
                            provider_name
                        )
                    })?;

                tracing::warn!(
                    "Session provider '{}' unavailable, falling back to '{}'",
                    provider_name,
                    fallback_provider_name
                );

                let fallback_model_name = config.get_goose_model().ok().ok_or_else(|| {
                    anyhow!("Could not configure fallback provider: missing model")
                })?;
                let fallback_model_config = crate::model_config::model_config_from_user_config(
                    &fallback_provider_name,
                    &fallback_model_name,
                )

View on GitHub (pinned to 3810898a74)

Solutions

  1. 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
  2. List what is available via 'goose configure' provider selection to confirm the installed names
  3. Update or reinstall goose so the session's provider exists in the registry again
  4. If the provider is permanently gone, start a new session instead of resuming

Example fix

# before: session saved with provider 'experimental-agent'
$ goose session resume
Error: Could not create provider: provider 'experimental-agent' not found

# after
$ export GOOSE_PROVIDER=openai
$ goose session resume   # logs: falling back to 'openai'
Defensive patterns

Strategy: validation

Validate before calling

// Rust — before resuming, confirm the session provider exists or a distinct fallback is set
let session_provider_ok = crate::providers::get_from_registry(&provider_name).await.is_ok();
let fallback = Config::global().get_goose_provider().ok()
    .filter(|n| n.as_str() != provider_name);
if !session_provider_ok && fallback.is_none() {
    // choose an installed provider in config before restoring
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/02e9e5aff3ac809d. Report an issue: GitHub.