block/buzz · critical · anyhow::Error
all {} agents failed to start — cannot continue
Error message
all {} agents failed to start — cannot continue What it means
Every configured agent subprocess failed to spawn: each failure is logged per-agent as 'agent failed to spawn: {e}' and leaves a None slot; when live_count is zero the harness aborts because there is nothing to serve traffic. Partial failure is tolerated with a 'continuing with reduced pool' warning — only total failure is fatal.
Source
Thrown at crates/buzz-acp/src/lib.rs:5550
acp.shutdown().await;
agent_slots.push(None);
}
Err(_) => {
tracing::error!(agent = i, "agent timed out during init (60s)");
acp.shutdown().await;
agent_slots.push(None);
}
}
}
Err(e) => {
tracing::error!(agent = i, "agent failed to spawn: {e}");
agent_slots.push(None);
}
}
}
let live_count = agent_slots.iter().filter(|slot| slot.is_some()).count();
if live_count == 0 {
return Err(anyhow::anyhow!(
"all {} agents failed to start — cannot continue",
startup.agents
));
}
if live_count < startup.agents as usize {
tracing::warn!(
"started {}/{} agents — continuing with reduced pool",
live_count,
startup.agents
);
}
tracing::info!("agent_pool_ready agents={}", live_count);
Ok(AgentPool::from_slots(agent_slots))
}
// ── spawn_and_init ────────────────────────────────────────────────────────────
/// Spawn an agent subprocess and run the MCP `initialize` handshake.
///View on GitHub (pinned to 6c35e82bd5)
Solutions
- Read the per-agent 'failed to spawn: {e}' log lines — they carry the OS-level cause (NotFound, PermissionDenied, Exec format error)
- Run the configured agent command manually in the same environment and user context to reproduce
- Fix the path/args/permissions in the agent startup config, or rebuild the missing binary
- Confirm startup.agents matches the number of agent entries you actually configured
Example fix
# agent startup config
# before
agents:
- command: /usr/local/bin/buzz-agent-old
# after
agents:
- command: /usr/local/bin/buzz-agent
args: ["--acp"] Defensive patterns
Strategy: validation
Validate before calling
#!/usr/bin/env bash
# Preflight: every configured agent command must exist and be executable
for cmd in /path/to/agent-a /path/to/agent-b; do
[ -x "$cmd" ] || { echo "agent binary missing or not executable: $cmd" >&2; exit 1; }
done Prevention
- Smoke-test one agent spawn before starting the full pool; the harness logs each per-agent spawn error with the OS cause
- Pin absolute binary paths in service environments rather than relying on PATH
- Rebuild agent binaries after cargo clean or image updates, and re-deploy configs that reference target/ paths
When it happens
Trigger: The agent command/args in the harness startup config are wrong for every entry: nonexistent binary path, file not executable, exec format error (wrong arch/binary), or missing interpreter for a script command.
Common situations: Agent binary path changed after a reinstall or container image update; PATH not set in the service environment; config referencing a build artifact (./target/release/...) that was cleaned; exec-format mismatch on ARM hosts.
Related errors
- Configuration error: {e}
- git pack cache path must be available
- BUZZ_RELAY_PRIVATE_KEY must be set when BUZZ_REQUIRE_AUTH_TO
- RELAY_OWNER_PUBKEY required when BUZZ_REQUIRE_RELAY_MEMBERSH
- BUZZ_RELAY_PRIVATE_KEY is required when BUZZ_REQUIRE_RELAY_M
AI-assisted analysis of block/buzz@6c35e82bd5 (2026-08-20).
Data as JSON: /api/errors/43caaa0c8157a7e8.
Report an issue: GitHub.