Feature: allow selected people to add an agent to channels
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
Buzz currently supports three values for an agent's channel-add policy:
- `anyone`
- `owner_only`
- `nobody`
This leaves a common shared-agent case uncovered: **the agent owner wants to delegate channel-add access to a small set of trusted human users without opening that ability to the whole community.**
For example, an agent may already be configured so that only a selected group of people can interact with it, but `channel_add_policy=owner_only` means only the owner can place that agent into a new channel, while `anyone` grants that ability to every community member.
## Requested behavior
Add a selected-people / allowlist mode for channel-add authorization, separate from the agent's interaction policy.
Conceptually:
```text
channel_add_policy = allowlist
channel_add_allowlist = [, , ...]
```
This would allow the owner to delegate channel placement to specific trusted humans while keeping all other community members blocked.
The existing owner should remain implicitly authorized unless the product intentionally chooses otherwise.
## Proposed UI
In the agent's settings, add a control such as:
**Who can add this agent to channels?**
- Only me
- Selected people
- Anyone in this community
- Nobody
If **Selected people** is chosen, show a people picker using existing community members, similar to the existing selected-people UX used for agent interaction/respond-to permissions.
A useful layout would be to place the two controls together so the distinction is obvious:
```text
Who can talk to this agent?
[Only me / Selected people / Anyone]
Who can add this agent to channels?
[Only me / Selected people / Anyone / Nobody]
```
The selected lists should be independent. Someone may be allowed to interact with an agent without being allowed to place it into new channels, or vice versa.
## Why this matters
Shared agents are increasingly used by small teams, households, and self-hosted communities. In those setups, `owner_only` is often too restrictive, while `anyone` is too broad.
A selected-people policy would let operators express the intended permission model directly instead of weakening security just to let one additional trusted user manage channel membership.
## Expected result
The relay should enforce the allowlist on third-party agent add-member operations, while preserving the existing `owner_only`, `anyone`, and `nobody` behavior for backward compatibility.
This is distinct from `respond_to` / invocation authorization: it is specifically about **who is allowed to add an agent to a channel**.
Contributor guide
Research direction
Start by locating the existing channel_add_policy handling and the selected-people UX and authorization used for agent interaction/respond-to permissions. Trace third-party agent add-member operations through the relay, then define the allowlist behavior and independent settings UI; done means allowlisted humans and the owner can add the agent while existing policies remain compatible.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- authorization, backend, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100