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

  1. Find the panic location in the logs immediately preceding this error and fix/update that provider
  2. Restart the desktop app / ACP session to clear poisoned state and retry the refresh
  3. 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

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


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