{"record":{"id":"fee02c7e786912f3","repo":"aaif-goose/goose","slug":"provider-inventory-refresh-task-panicked-fee02c","errorCode":null,"errorMessage":"provider inventory refresh task panicked","messagePattern":"provider inventory refresh task panicked","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/goose/src/acp/server/providers.rs","lineNumber":847,"sourceCode":"                        Ok(Ok(provider)) => {\n                            match ensure_refresh_identity_current(&provider_id, &identity).await {\n                                Ok(()) => match AssertUnwindSafe(provider.fetch_recommended_models(\n                                    crate::model_config::global_toolshim(),\n                                ))\n                                .catch_unwind()\n                                .await\n                                {\n                                    Ok(Ok(models)) => Ok(models),\n                                    Ok(Err(error)) => Err(anyhow::anyhow!(error.to_string())),\n                                    Err(_) => Err(anyhow::anyhow!(\n                                        \"provider inventory refresh task panicked\"\n                                    )),\n                                },\n                                Err(error) => Err(error),\n                            }\n                        }\n                        Ok(Err(error)) => Err(error),\n                        Err(_) => Err(anyhow::anyhow!(\"provider inventory refresh task panicked\")),\n                    };\n\n                match fetch_result {\n                    Ok(models) => match provider_inventory\n                        .store_refreshed_models_for_identity(&identity, &models)\n                        .await\n                    {\n                        Ok(()) => refresh_guard.complete(),\n                        Err(error) => warn!(\n                            provider = %provider_id,\n                            error = %error,\n                            \"failed to store refreshed provider inventory\"\n                        ),\n                    },\n                    Err(error) => {\n                        let error_message = error.to_string();\n                        match provider_inventory\n                            .store_refresh_error_for_identity(&identity, error_message.clone())","sourceCodeStart":829,"sourceCodeEnd":865,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/crates/goose/src/acp/server/providers.rs#L829-L865","documentation":"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.","triggerScenarios":"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.","commonSituations":"Opening the provider/model picker right after a custom provider misbehaves; gateway responses with unexpected shapes; poisoned session state after prior errors.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"match fetch_result {\n    Ok(models) => provider_inventory.store_refreshed_models_for_identity(&identity, &models).await?,\n    Err(e) if e.to_string().contains(\"panicked\") => {\n        warn!(provider = %provider_id, error = %e, \"refresh panicked; serving cached inventory\");\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Report panicking providers upstream with the gateway's response sample","Restart the session after repeated panics to clear poisoned state"],"tags":["panic","provider","inventory","acp"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}