aaif-goose/goose · error
provider inventory refresh task panicked
Error message
provider inventory refresh task panicked
What it means
The providers.rs variant of the inventory refresh: provider.fetch_recommended_models was again run under catch_unwind (both the provider lookup and the fetch are wrapped), and one of those futures panicked; the Err(_) arms produce this message. It exists so a panicking provider cannot take down the ACP server task that refreshes model inventories.
Source
Thrown at crates/goose/src/acp/server/providers.rs:847
Ok(Ok(provider)) => {
match ensure_refresh_identity_current(&provider_id, &identity).await {
Ok(()) => match AssertUnwindSafe(provider.fetch_recommended_models(
crate::model_config::global_toolshim(),
))
.catch_unwind()
.await
{
Ok(Ok(models)) => Ok(models),
Ok(Err(error)) => Err(anyhow::anyhow!(error.to_string())),
Err(_) => Err(anyhow::anyhow!(
"provider inventory refresh task panicked"
)),
},
Err(error) => Err(error),
}
}
Ok(Err(error)) => Err(error),
Err(_) => Err(anyhow::anyhow!("provider inventory refresh task panicked")),
};
match fetch_result {
Ok(models) => match provider_inventory
.store_refreshed_models_for_identity(&identity, &models)
.await
{
Ok(()) => refresh_guard.complete(),
Err(error) => warn!(
provider = %provider_id,
error = %error,
"failed to store refreshed provider inventory"
),
},
Err(error) => {
let error_message = error.to_string();
match provider_inventory
.store_refresh_error_for_identity(&identity, error_message.clone())View on GitHub (pinned to 3810898a74)
Solutions
- Find the panic location in the logs immediately preceding this error and fix/update that provider
- Restart the desktop app / ACP session to clear poisoned state and retry the refresh
- Pin static models (dynamic_models: false with a models list) for the affected provider until a fix lands
Defensive patterns
Strategy: fallback
Try / catch
match fetch_result {
Ok(models) => provider_inventory.store_refreshed_models_for_identity(&identity, &models).await?,
Err(e) if e.to_string().contains("panicked") => {
warn!(provider = %provider_id, error = %e, "refresh panicked; serving cached inventory");
}
Err(e) => return Err(e),
} Prevention
- Report panicking providers upstream with the gateway's response sample
- Restart the session after repeated panics to clear poisoned state
When it happens
Trigger: Identical to 291/292: a panic inside the provider lookup or fetch_recommended_models while the providers view (model listing UI) refreshes inventory in the background.
Common situations: Opening the provider/model picker right after a custom provider misbehaves; gateway responses with unexpected shapes; poisoned session state after prior errors.
Related errors
- provider inventory refresh task panicked
- provider changed before inventory refresh completed
- Provider rejected mode update: {e}
- /compact is not available for provider '{provider}' because
- ACP URL is not available
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/fee02c7e786912f3.
Report an issue: GitHub.