Desktop spawns managed agents with BUZZ_ACP_MULTIPLE_EVENT_HANDLING hard-coded to steer — no per-agent exposure
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
Research direction
Start with MultipleEventHandling in crates/buzz-acp/src/config.rs and the managed-agent spawn path in desktop/src-tauri/src/managed_agents/runtime.rs. Trace how idle_timeout_seconds and max_turn_duration_seconds are stored and passed to the command, then determine where the per-agent setting belongs. Done means a selected event-handling mode is exposed at the requested scope and replaces the unconditional steer environment value.
Written by the indexing model from the issue text.
Description
Component
desktop (managed agents) / buzz-acp
Summary
The runner supports four mid-turn delivery modes (crates/buzz-acp/src/config.rs, MultipleEventHandling): queue, steer (default), interrupt, owner-interrupt. The CLI flag and BUZZ_ACP_MULTIPLE_EVENT_HANDLING work fine when spawning buzz-acp manually.
But managed agents spawned by the desktop app cannot use any of this: the spawn path hard-codes the env (desktop/src-tauri/src/managed_agents/runtime.rs at ef2aa1a):
command.env("BUZZ_ACP_MULTIPLE_EVENT_HANDLING", "steer");
command.env("BUZZ_ACP_DEDUP", "queue");
It is unconditional, while the neighboring envs shown it being written deliberately key off record fields:
if let Some(idle) = record.idle_timeout_seconds {
command.env("BUZZ_ACP_IDLE_TIMEOUT", idle.to_string());
}
if let Some(max_dur) = record.max_turn_duration_seconds {
command.env("BUZZ_ACP_MAX_TURN_DURATION", max_dur.to_string());
}
So idle_timeout_seconds / max_turn_duration_seconds are exposed per agent, but the event-handling mode is not — there is no UI setting and no agent-record field, even though the mechanism clearly exists.
Impact
Managed agents are always subject to steering semantics: a @mention arriving mid-turn cancels the in-flight turn and merges (see also #5839 for the channel-scoped variant of this). Users who want queue semantics — never cancel, deliver the new message after the current turn — have no way to choose it for a managed agent.
Request
Expose multiple_event_handling as a per-managed-agent setting (like idle timeout and max turn duration already are), or at minimum a workspace-level default, and pass the chosen value into the spawn env instead of the hard-coded steer.
Verified against
commit ef2aa1a (fresh checkout of main). Happy to link a PR if maintainers agree with the shape.
- Dominant language
- Rust
- Stars
- 33.7k
- Forks
- 4.4k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 239
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from block/buzz
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
workflow_sink's mention parser never masks code regions — @name inside a code span wakes the agent Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 Half a day Newbie friendliness 88/100
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100