{"record":{"id":"ba70d94c2d9be921","repo":"zed-industries/zed","slug":"resuming-subagent-sessions-is-not-supported","errorCode":null,"errorMessage":"Resuming subagent sessions is not supported","messagePattern":"Resuming subagent sessions is not supported","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/agent/src/thread.rs","lineNumber":774,"sourceCode":"pub trait ThreadEnvironment {\n    fn create_terminal(\n        &self,\n        command: String,\n        extra_env: Vec<acp::EnvVariable>,\n        cwd: Option<PathBuf>,\n        output_byte_limit: Option<u64>,\n        sandbox_wrap: Option<acp_thread::SandboxWrap>,\n        cx: &mut AsyncApp,\n    ) -> Task<Result<Rc<dyn TerminalHandle>>>;\n\n    fn create_subagent(&self, label: String, cx: &mut App) -> Result<Rc<dyn SubagentHandle>>;\n\n    fn resume_subagent(\n        &self,\n        _session_id: acp::SessionId,\n        _cx: &mut App,\n    ) -> Result<Rc<dyn SubagentHandle>> {\n        Err(anyhow::anyhow!(\n            \"Resuming subagent sessions is not supported\"\n        ))\n    }\n\n    /// Creates an independent sibling thread visible in the agent sidebar.\n    /// Unlike subagents, sibling threads are first-class threads that persist\n    /// and run in parallel without reporting results back to the parent.\n    fn create_sibling_thread(\n        &self,\n        request: SiblingThreadRequest,\n        cx: &mut AsyncApp,\n    ) -> Task<Result<SiblingThreadInfo>> {\n        let _ = request;\n        let _ = cx;\n        Task::ready(Err(anyhow::anyhow!(\n            \"Creating sibling threads is not supported in this environment\"\n        )))\n    }","sourceCodeStart":756,"sourceCodeEnd":792,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/agent/src/thread.rs#L756-L792","documentation":"Default implementation of ThreadEnvironment::resume_subagent in crates/agent/src/thread.rs. Environments that only implement create_subagent cannot resume a subagent session by id, so they return this error.","triggerScenarios":"Calling resume_subagent on a ThreadEnvironment that did not override it — custom embedded environments, test doubles, any non-native host.","commonSituations":"Custom ThreadEnvironment implementations; headless tests; code assuming all environments support subagent persistence.","solutions":["Implement resume_subagent in your ThreadEnvironment if you persist subagent sessions.","Otherwise create a new subagent via create_subagent and re-feed the needed context.","Attempt resume and fall back to create when it fails."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"match environment.resume_subagent(session_id.clone(), cx) {\n    Ok(handle) => handle,\n    Err(e) if e.to_string().contains(\"Resuming subagent sessions is not supported\") => {\n        environment.create_subagent(label, cx)? // fall back to a fresh subagent\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Know your ThreadEnvironment implementation's capabilities before relying on resume.","Persist enough context to recreate subagents instead of assuming resumability."],"tags":["rust","zed","agent","trait-default","subagent","capability"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}