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

  1. Read the per-agent 'failed to spawn: {e}' log lines — they carry the OS-level cause (NotFound, PermissionDenied, Exec format error)
  2. Run the configured agent command manually in the same environment and user context to reproduce
  3. Fix the path/args/permissions in the agent startup config, or rebuild the missing binary
  4. 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

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


AI-assisted analysis of block/buzz@6c35e82bd5 (2026-08-20). Data as JSON: /api/errors/43caaa0c8157a7e8. Report an issue: GitHub.