zed-industries/zed · error
No sibling-thread host is registered. This usually means the
Error message
No sibling-thread host is registered. This usually means the agent panel hasn't been initialized in this workspace.
What it means
create_sibling_thread requires a SiblingThreadHost registered on the NativeAgent (agent.sibling_thread_host()); the host is supplied by the agent panel. If the panel has not been initialized in this workspace, no host exists and the request cannot be served.
Source
Thrown at crates/agent/src/agent.rs:3266
&self,
session_id: acp::SessionId,
cx: &mut App,
) -> Result<Rc<dyn SubagentHandle>> {
self.resume_subagent_thread(session_id, cx)
}
fn create_sibling_thread(
&self,
request: SiblingThreadRequest,
cx: &mut AsyncApp,
) -> Task<Result<SiblingThreadInfo>> {
let host = match self
.agent
.read_with(cx, |agent, _| agent.sibling_thread_host())
{
Ok(Some(host)) => host,
Ok(None) => {
return Task::ready(Err(anyhow!(
"No sibling-thread host is registered. This usually means the \
agent panel hasn't been initialized in this workspace."
)));
}
Err(err) => return Task::ready(Err(err)),
};
host.create_sibling_thread(request, cx)
}
fn list_available_agents(&self, cx: &mut App) -> Result<AvailableAgents> {
let host = self
.agent
.read_with(cx, |agent, _| agent.sibling_thread_host())?
.ok_or_else(|| {
anyhow!(
"No sibling-thread host is registered. This usually means the \
agent panel hasn't been initialized in this workspace."
)View on GitHub (pinned to bc538def45)
Solutions
- Initialize the agent panel in the workspace before sibling-thread tools become available.
- In embedded/test contexts, register a SiblingThreadHost implementation on the NativeAgent.
- Fall back to a regular subagent when no host is registered.
Defensive patterns
Strategy: fallback
Validate before calling
// inside the app: check host registration before offering the capability let host_registered = agent.read(cx).sibling_thread_host().is_some();
Type guard
fn sibling_threads_available(agent: &Entity<NativeAgent>, cx: &App) -> bool {
agent.read(cx).sibling_thread_host().is_some()
} Try / catch
match env.create_sibling_thread(request, cx).await {
Ok(info) => info,
Err(e) if e.to_string().contains("sibling-thread host") => {
// no panel host: fall back to a subagent
env.create_subagent_thread(title, cx)?
}
Err(e) => return Err(e),
} Prevention
- Initialize the agent panel in workspaces that expose sibling-thread tools.
- In embedded hosts, register a SiblingThreadHost implementation.
When it happens
Trigger: A tool attempting to create a sibling thread where the agent panel never initialized: headless or embedded use of the agent crate, a workspace without the panel loaded, or a call made before registration.
Common situations: Running the agent crate in tests or headless harnesses; invoking sibling-thread tools from embedded hosts; panel closed or not yet constructed.
Related errors
- Creating sibling threads is not supported in this environmen
- Listing available agents is not supported in this environmen
- output token limit reached
- message not found
- not supported
AI-assisted analysis of zed-industries/zed@bc538def45 (2026-08-16).
Data as JSON: /api/errors/99b2b7b7f3d63d41.
Report an issue: GitHub.