{"record":{"id":"33d500e4cabfdad5","repo":"zed-industries/zed","slug":"project-state-not-found-for-session","errorCode":null,"errorMessage":"Project state not found for session","messagePattern":"Project state not found for session","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/agent/src/agent.rs","lineNumber":1837,"sourceCode":"                        .log_err();\n                }\n            }))\n            .await;\n        }\n    }\n\n    fn send_mcp_prompt(\n        &self,\n        client_user_message_id: ClientUserMessageId,\n        session_id: acp::SessionId,\n        prompt_name: String,\n        server_id: ContextServerId,\n        arguments: HashMap<String, String>,\n        original_content: Vec<acp::ContentBlock>,\n        cx: &mut Context<Self>,\n    ) -> Task<Result<acp::PromptResponse>> {\n        let Some(state) = self.session_project_state(&session_id) else {\n            return Task::ready(Err(anyhow!(\"Project state not found for session\")));\n        };\n        let server_store = state\n            .context_server_registry\n            .read(cx)\n            .server_store()\n            .clone();\n        let path_style = state.project.read(cx).path_style(cx);\n\n        cx.spawn(async move |this, cx| {\n            let prompt =\n                crate::get_prompt(&server_store, &server_id, &prompt_name, arguments, cx).await?;\n\n            let (acp_thread, thread) = this.update(cx, |this, _cx| {\n                let session = this\n                    .sessions\n                    .get(&session_id)\n                    .context(\"Failed to get session\")?;\n                anyhow::Ok((session.acp_thread.clone(), session.thread.clone()))","sourceCodeStart":1819,"sourceCodeEnd":1855,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/agent/src/agent.rs#L1819-L1855","documentation":"send_mcp_prompt resolves per-session project state via session_project_state(&session_id); when the session id is not registered in the agent's in-memory sessions/projects map, it returns a ready Err 'Project state not found for session'. The MCP prompt never reaches the server store because there is no project context to resolve it against.","triggerScenarios":"Invoking an MCP prompt for a session id that was never created on this Agent, was removed (ended/rewound fully), or belongs to a different agent instance/process.","commonSituations":"Client fires the prompt before session creation resolves; agent restarted while the client kept its old session ids; two agent connections with crossed session ids; session torn down concurrently with the prompt.","solutions":["Create the session and await its completion before sending MCP prompts","On this error, recreate the session and re-invoke the prompt","Ensure prompts are routed to the agent instance that owns the session"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Ensure the session is registered before sending an MCP prompt\nif agent.session_project_state(&session_id).is_none() {\n    let session = agent.create_session(project, cx).await?; // register first\n    session_id = session.id;\n}\nsend_mcp_prompt(client_id, session_id, prompt_name, server_id, args, content, cx)","typeGuard":null,"tryCatchPattern":"match send_mcp_prompt(...).await {\n    Err(error) if error.to_string().contains(\"Project state not found\") => {\n        // Session was never registered / was removed: recreate and retry once.\n        let session = recreate_session(cx).await?;\n        send_mcp_prompt(client_id, session.id, prompt_name, server_id, args, content, cx).await\n    }\n    other => other,\n}","preventionTips":["Await session creation before enabling MCP prompt UI","Invalidate cached session ids whenever the agent restarts","Route prompts to the agent instance that created the session"],"tags":["rust","zed","agent","mcp","session","acp"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}