Skip to content

fix(buzz-acp): accept siblings under allowlist author gate#1108

Merged
wpfleger96 merged 1 commit into
mainfrom
duncan/allowlist-sibling-gate
Jun 18, 2026
Merged

fix(buzz-acp): accept siblings under allowlist author gate#1108
wpfleger96 merged 1 commit into
mainfrom
duncan/allowlist-sibling-gate

Conversation

@wpfleger96

Copy link
Copy Markdown
Collaborator

Problem

The inbound author gate in crates/buzz-acp/src/lib.rs decides which authors' events fire an agent turn. It had an asymmetry between its two owner-dependent modes:

  • OwnerOnly accepted the owner and same-owner siblings (other bots launched by the same human, verified via their kind:0 NIP-OA auth tag through is_owner_or_sibling).
  • Allowlist accepted only the owner plus the explicit pubkey list — no sibling check.

So switching an agent from owner-only to allowlist — e.g. to let an external collaborator @mention it — silently revoked recognition of same-owner teammate bots. Their @mentions hit the gate's continue and never fired a turn, producing multi-hour agent blackouts where teammate handoffs sat undelivered until a human re-poked the agent.

Fix

The Allowlist arm now accepts owner + siblings + explicit external pubkeys, using the same is_owner_or_sibling check that OwnerOnly already uses. Allowlist was meant to add external people, never to revoke same-owner team bots — this restores that intent.

The gate decision is extracted into author_allowed, which makes the policy logic unit-testable (it previously lived inline inside the long run loop). The gate call site collapses to a single await.

Tests

author_gate_tests covers the Allowlist policy decision: a same-owner sibling absent from the explicit list is accepted, an explicitly listed external pubkey is accepted, a non-sibling absent from the list is rejected, and the owner is always accepted.

The inbound author gate's Allowlist arm accepted only the owner plus the
explicit pubkey list, with no sibling check. Switching an agent from
owner-only to allowlist (e.g. to add an external collaborator) silently
revoked same-owner teammate bots: their @mentions hit the gate's continue
and never fired a turn, causing multi-hour agent blackouts.

Allowlist now accepts owner + siblings + explicit pubkeys via the same
is_owner_or_sibling check used by owner-only. The gate decision is
extracted into author_allowed so it can be unit-tested directly.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
@wpfleger96 wpfleger96 merged commit dd9ce09 into main Jun 18, 2026
29 checks passed
@wpfleger96 wpfleger96 deleted the duncan/allowlist-sibling-gate branch June 18, 2026 01:40
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.

1 participant