block / block/buzz

buzz-acp: no progress-based liveness check — stuck agents run silently until 2-hour max_turn ceiling

Open
#6,066 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

**Describe the bug**

buzz-acp allows agent turns to run for up to 2 hours (`max_turn=7200s`) with no progress-based liveness check. The harness cannot distinguish a stuck agent from one legitimately working, so silent hangs are only detected when the hard ceiling is reached or the user explicitly cancels.

**Steps to reproduce**

1. Trigger an agent turn that hangs mid-execution (e.g. a blocking tool call, unresponsive API, or infinite reasoning loop)
2. Observe that the harness logs `extending in-flight deadline by 7200s` each time the agent renews
3. Wait — the turn continues silently until the 2-hour ceiling or manual cancel
4. On cancel, if the agent does not drain within 5s, the harness logs `cancel_drain_timeout` and respawns

**Expected behavior**

A configurable inactivity timeout (e.g. `idle_timeout` or `progress_timeout`) should fail the turn if no tool calls, messages, or heartbeats are observed for N minutes, rather than waiting up to 2 hours.

**Version and platform**

- Buzz version: 0.5.14
- OS: macOS 26.5.2 (Apple Silicon)

**Logs / additional context**

Agent ran from ~16:54 to ~18:08 UTC (1h14m) on a single turn:

```
INFO buzz_acp::queue: extending in-flight deadline by 7200s + 100s buffer
...
WARN buzz_acp::acp: hard turn timeout exceeded (silence 5.001861875s)
WARN buzz_acp: agent_returned — respawning (cancel-drain timeout) outcome="cancel_drain_timeout"
```

The agent kept renewing its deadline but never completed. Distinct from #5849 (process leak after cancel), which covers the cleanup side; this issue covers the detection side.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.