{"record":{"id":"5f2bb88b24719aa3","repo":"zed-industries/zed","slug":"subagent-session-session-id-was-released","errorCode":null,"errorMessage":"Subagent session {session_id} was released","messagePattern":"Subagent session (.+?) was released","errorType":"error_code","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/agent/src/agent.rs","lineNumber":3254,"sourceCode":"        );\n\n        self.prompt_subagent(session_id, subagent_thread, acp_thread)\n    }\n\n    pub(crate) fn resume_subagent_thread(\n        &self,\n        session_id: acp::SessionId,\n        cx: &mut App,\n    ) -> Result<Rc<dyn SubagentHandle>> {\n        let (subagent_thread, acp_thread) = self.agent.update(cx, |agent, _cx| {\n            let session = agent\n                .sessions\n                .get(&session_id)\n                .ok_or_else(|| anyhow!(\"No subagent session found with id {session_id}\"))?;\n            let acp_thread = session\n                .acp_thread\n                .upgrade()\n                .ok_or_else(|| anyhow!(\"Subagent session {session_id} was released\"))?;\n            anyhow::Ok((session.thread.clone(), acp_thread))\n        })??;\n\n        let depth = subagent_thread.read(cx).depth();\n\n        if let Some(parent_thread_entity) = self.thread.upgrade() {\n            telemetry::event!(\n                \"Subagent Started\",\n                session = parent_thread_entity.read(cx).id().to_string(),\n                subagent_session = session_id.to_string(),\n                depth,\n                is_resumed = true,\n            );\n        }\n\n        self.prompt_subagent(session_id, subagent_thread, acp_thread)\n    }\n","sourceCodeStart":3236,"sourceCodeEnd":3272,"githubUrl":"https://github.com/zed-industries/zed/blob/9d272b036335401f339d024ea94968fd51016c40/crates/agent/src/agent.rs#L3236-L3272","documentation":"Guard in resume_subagent_thread: the requested acp::SessionId is not present in the agent's live sessions map. This happens when the subagent session was already released (dropped after its run finished), or the id was never registered by spawn/prompt_subagent, so there is no subagent thread to resume and the lookup fails with a released-session error.","triggerScenarios":"Thrown at crates/agent/src/agent.rs:3254 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check whether the subagent finished and its session was cleaned up before requesting a resume; spawn a new subagent session instead of resuming a released one","Verify the session id passed in matches the id returned when the subagent was originally created","Retain the subagent session in the sessions map for as long as resume operations remain possible, or store enough state to re-create it"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9d272b036335401f339d024ea94968fd51016c40","analyzedAt":"2026-09-05T10:33:00.413Z","contentChangedAt":"2026-09-05T10:33:00.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}