{"record":{"id":"6975a18d70813e85","repo":"zed-industries/zed","slug":"provider-is-not-authenticated","errorCode":null,"errorMessage":"Provider {} is not authenticated","messagePattern":"Provider (.+?) is not authenticated","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/eval_cli/src/main.rs","lineNumber":457,"sourceCode":"\n        if !should_wait_for_discovery || started_at.elapsed() >= MODEL_DISCOVERY_TIMEOUT {\n            return Err(cx.update(|cx| model_not_found_error(&selected_model_name(selected), cx)));\n        }\n\n        cx.background_executor()\n            .timer(MODEL_DISCOVERY_POLL_INTERVAL)\n            .await;\n    }\n}\n\nfn ensure_provider_authenticated(selected: &SelectedModel, cx: &gpui::App) -> Result<()> {\n    let registry = LanguageModelRegistry::global(cx);\n    let provider = registry\n        .read(cx)\n        .provider(&selected.provider)\n        .ok_or_else(|| anyhow::anyhow!(\"Provider {} not found\", selected.provider.0))?;\n\n    anyhow::ensure!(\n        provider.is_authenticated(cx),\n        \"Provider {} is not authenticated\",\n        selected.provider.0\n    );\n\n    Ok(())\n}\n\nfn find_available_model(\n    selected: &SelectedModel,\n    cx: &gpui::App,\n) -> Option<Arc<dyn LanguageModel>> {\n    let registry = LanguageModelRegistry::global(cx);\n    let models = registry.read(cx).available_models(cx).collect::<Vec<_>>();\n\n    if let Some(model) = models\n        .iter()\n        .find(|model| model.provider_id() == selected.provider && model.id() == selected.model)","sourceCodeStart":439,"sourceCodeEnd":475,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/eval_cli/src/main.rs#L439-L475","documentation":"The selected provider exists in the LanguageModelRegistry but is not authenticated — its credentials/API key are missing. This guard fires after the provider lookup succeeds and before the agent run starts, because requests to that provider would all fail with 401.","triggerScenarios":"Thrown at crates/eval_cli/src/main.rs:457 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run the provider's sign-in flow (e.g. 'zed: sign in') or set its API key in settings before running eval_cli","For OpenAI-compatible providers, verify the api_url/api_key settings are present and correct"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}