{"record":{"id":"8ff57c538f8ba793","repo":"zed-industries/zed","slug":"login-command-should-be-set","errorCode":null,"errorMessage":"login command should be set","messagePattern":"login command should be set","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/agent_ui/src/conversation_view.rs","lineNumber":2135,"sourceCode":"            })\n        })\n        .detach();\n    }\n\n    fn spawn_external_agent_login(\n        login: task::SpawnInTerminal,\n        workspace: Entity<Workspace>,\n        project: Entity<Project>,\n        method: acp::AuthMethodId,\n        previous_attempt: bool,\n        window: &mut Window,\n        cx: &mut App,\n    ) -> Task<Result<()>> {\n        let Some(terminal_panel) = workspace.read(cx).panel::<TerminalPanel>(cx) else {\n            return Task::ready(Err(anyhow!(\"Terminal panel is unavailable\")));\n        };\n\n        window.spawn(cx, async move |cx| {\n            let mut task = login.clone();\n            if let Some(cmd) = &task.command {\n                // Have \"node\" command use Zed's managed Node runtime by default\n                if cmd == \"node\" {\n                    let resolved_node_runtime = project.update(cx, |project, cx| {\n                        let agent_server_store = project.agent_server_store().clone();\n                        agent_server_store.update(cx, |store, cx| {\n                            store.node_runtime().map(|node_runtime| {\n                                cx.background_spawn(async move { node_runtime.binary_path().await })\n                            })\n                        })\n                    });\n\n                    if let Some(resolve_task) = resolved_node_runtime {\n                        if let Ok(node_path) = resolve_task.await {\n                            task.command = Some(node_path.to_string_lossy().to_string());\n                        }\n                    }","sourceCodeStart":2117,"sourceCodeEnd":2153,"githubUrl":"https://github.com/zed-industries/zed/blob/9d272b036335401f339d024ea94968fd51016c40/crates/agent_ui/src/conversation_view.rs#L2117-L2153","documentation":"Guard in conversation_view.rs expecting the agent's login command to be configured when handling the node-runtime resolution path. Fires if the ACP agent server descriptor lacks a login command, which the surrounding code assumes is present by this point.","triggerScenarios":"Thrown at crates/agent_ui/src/conversation_view.rs:2128 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the agent server extension defines a login command","Check that agent metadata was fully loaded before rendering the conversation view","Reinstall or update the agent server extension"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9d272b036335401f339d024ea94968fd51016c40","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}