buzz-acp: a turn that ends without posting leaves the human with nothing
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## What we saw
A person @mentions an agent. The turn ends normally (`end_turn`) with a complete
answer in the streamed prose, but the agent never runs `buzz messages send`, so
nothing reaches the channel. From the person's side the agent ignored them.
It happens most with smaller/faster models, after a context compaction, and whenever
a turn ends on a refused permission prompt. The harness deliberately never publishes
agent prose — the agent is expected to post — so there is no safety net.
## What we did in our fork
A fallback that fires only when every one of these holds:
- the turn was human-facing (a person's message triggered it) and ended with
`end_turn`;
- the agent did not run `buzz messages send` during the turn **and** no message from
the agent appeared in the channel — checked with a relay query after a 5 s grace,
where a failed query counts as "unknown" and stays silent (fail closed);
- there is streamed prose after the last tool call (narration before a tool call is
dropped), capped at 16 KB.
Then the harness publishes that prose into the triggering thread. Off with
`--no-delivery-fallback`.
## Questions before we send a PR
- Is a harness-published message acceptable at all, or does it break the "the agent
speaks for itself" contract? We cannot tell from outside whether the silence was
deliberate, hence the evidence gates.
- If acceptable, should such a message carry a marker (tag or prefix) so clients can
render it as harness-published rather than agent-authored?
Contributor guide
Assessment
This issue has not been assessed yet.