Managed agents can create private channels hidden from their human owner
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
When a managed agent creates a private channel, Buzz adds the agent identity as the channel owner but does not add the agent's registered human owner. The human owner therefore cannot discover, read, or recover the channel even though Buzz recognizes the same agent-owner relationship for other administrative operations.
## Expected behavior
A private channel created by a managed agent should transactionally include both:
- the managed agent as an owner
- the agent's registered `agent_owner_pubkey` as an owner
The relay should not acknowledge channel creation if those initial memberships cannot be established.
## Actual behavior
The managed agent is the sole channel owner. Its human owner cannot see the channel because private-channel discovery is membership-based. Other managed agents and desktop identities also cannot repair the membership because the relay correctly rejects non-member administration.
## Impact
- A managed agent can create operational state hidden from its managing human.
- The human cannot discover or recover the private channel through the normal UI.
- Agent ownership authority and channel visibility have inconsistent semantics.
## Root cause
Channel creation bootstraps only `created_by` in `channel_members`. It does not look up `users.agent_owner_pubkey` when `created_by` is a managed agent.
## Proposed fix
At the database transaction boundary, bootstrap the creator and—when present—the creator's registered `agent_owner_pubkey` as owners. Apply this to both generated-ID and client-supplied-ID channel creation paths, with regression coverage for private channels.
Contributor guide
Research direction
Start by locating the relay's database transaction for channel creation and compare the generated-ID and client-supplied-ID paths. Inspect how channel_members is bootstrapped from created_by and how users.agent_owner_pubkey is available; done means both identities are owners for managed-agent private channels and creation is not acknowledged when either membership cannot be established, with regression coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100