Skip to content

fix(acp): default subscribe=all excludes typing/presence (#3649) - #3675

Open
NanoRisk6 wants to merge 1 commit into
block:mainfrom
NanoRisk6:cat/acp-subscribe-all-exclude-ephemeral-3649
Open

fix(acp): default subscribe=all excludes typing/presence (#3649)#3675
NanoRisk6 wants to merge 1 commit into
block:mainfrom
NanoRisk6:cat/acp-subscribe-all-exclude-ephemeral-3649

Conversation

@NanoRisk6

Copy link
Copy Markdown

What Problem This Solves

With BUZZ_ACP_SUBSCRIBE=all and no BUZZ_ACP_KINDS, the agent subscribed to every kind. Typing indicators (20002) and presence (20001) each started an agent turn — token burn per keystroke and a false Desktop “agent is typing” badge while the human typed. Fixes #3649.

Why This Change Was Made

Mentions mode already ships a curated default kinds list. All mode used kinds: None (NIP-01 wildcard).

Default for All (when kinds override is unset) is now a durable allowlist:

  • stream messages (+ v2 / edits)
  • deletions, reactions, gift-wrap DMs
  • canvas, stream reminders
  • workflow approval + trigger

Ephemeral kinds (typing, presence, observer frames) are not included.

BUZZ_ACP_KINDS=… still fully overrides (operators can re-add 20002 if they really want it).

Same default applied in resolve_dynamic_channel_filter for late-joined channels.

User Impact

Agents on subscribe=all respond to real channel work without paying a model call for every keystroke, and Desktop no longer shows the agent “typing” while the human composes.

Evidence

cargo test -p buzz-acp --lib test_all_mode
# test_all_mode_default_excludes_ephemeral_kinds ... ok
# test_all_mode_with_kinds_override ... ok
# test_all_mode_kinds_override_can_opt_into_typing ... ok

@NanoRisk6
NanoRisk6 requested a review from a team as a code owner July 30, 2026 03:42
)

BUZZ_ACP_SUBSCRIBE=all with no BUZZ_ACP_KINDS was a full wildcard, so
typing (20002) and presence (20001) woke the agent every keystroke —
token burn and a false "agent is typing" badge. Use a durable allowlist
by default; explicit kinds override still wins.

Signed-off-by: NanoRisk6 <aidashtherapy@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

buzz-acp subscribe=all delivers typing/presence events to agents: token burn per keystroke and false typing badge

1 participant