block / block/buzz

buzz-acp: a turn that ends without posting leaves the human with nothing

Open
#7,583 0 comments 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

## 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

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.