aaif-goose/goose · error
Failed to create provider for OAuth: {}
Error message
Failed to create provider for OAuth: {} What it means
Before running the OAuth flow, goose instantiates the provider with `create(provider_name, Vec::new())`. If the provider cannot be constructed — unknown name, unsatisfied construction requirements, or a failure while fetching provider metadata — that construction error is wrapped with this message, so the OAuth flow is never even attempted.
Source
Thrown at crates/goose-cli/src/commands/configure.rs:468
// Create a temporary provider instance to handle OAuth
match create(provider_name, Vec::new()).await {
Ok(provider) => match provider.configure_oauth().await {
Ok(_) => {
let _ = cliclack::log::success("OAuth authentication completed successfully!");
Ok(())
}
Err(e) => {
let _ = cliclack::log::error(format!("Failed to authenticate: {}", e));
Err(anyhow::anyhow!(
"OAuth authentication failed for {}: {}",
key_name,
e
))
}
},
Err(e) => {
let _ = cliclack::log::error(format!("Failed to create provider for OAuth: {}", e));
Err(anyhow::anyhow!(
"Failed to create provider for OAuth: {}",
e
))
}
}
}
const UNLISTED_MODEL_KEY: &str = "__unlisted__";
fn interactive_model_search(
models: &[String],
provider_meta: &goose::providers::base::ProviderMetadata,
) -> anyhow::Result<String> {
const MAX_VISIBLE: usize = 30;
let mut query = String::new();
loop {
let _ = cliclack::clear_screen();View on GitHub (pinned to 3810898a74)
Solutions
- Check the embedded error text for the construction failure reason
- Verify the provider id against the list offered by `goose configure`/docs
- Fix network egress/proxy if the constructor fetches remote metadata, then retry
- Update goose — provider registration regressions are typically fixed quickly
Defensive patterns
Strategy: validation
Validate before calling
// Rust: prove the provider is constructible before offering OAuth
let provider = create(provider_name, Vec::new())
.await
.map_err(|e| anyhow::anyhow!("provider unavailable before OAuth: {e}"))?; Prevention
- Use provider ids exactly as goose lists them
- Pin goose versions in automation to avoid factory drift
- Smoke-test provider creation in setup scripts before OAuth
When it happens
Trigger: `goose configure` -> OAuth for a provider whose factory call fails: provider id not recognized in this build, or the provider constructor erroring during initialization (e.g. fetching remote model metadata).
Common situations: Typos or renamed provider ids; custom builds with some providers compiled out; constructors that call the network failing behind proxies; version drift between saved config and the binary.
Related errors
- OAuth authentication failed for {}: {}
- TLS was requested but no TLS backend is enabled. Enable the
- goose configure requires an interactive terminal. If you ins
- invalid thinking effort
- Failed to store secret
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/22cd7f3a8bb955a7.
Report an issue: GitHub.