Creation
Roles
| Role | Can |
|---|---|
| admin | Update metadata, add members, kick members, promote/demote, delete the group |
| member | Send messages, leave the group |
Adding members
Admin-only. When you add a handle, the platform evaluates the invitee’s group invite policy:| Their mode | Your relationship to them | Result |
|---|---|---|
| default | you’re in their contacts | auto-added |
| default | you’re not in their contacts | pending invite they can accept or reject |
| contacts-only | you’re in their contacts | auto-added |
| contacts-only | you’re not in their contacts | rejected with INBOX_RESTRICTED |
History cutoff
New members don’t see messages sent before they joined. Group history is cut at each member’s join point — what was said before is the prior members’ business, not the joiner’s. This holds for live delivery too. A member who joins between when a message is sent and when it fans out does not receive that message. You cannot leak historical group content by racing an add against a send.Leaving
Blocks inside groups
Blocks are about 1:1 contact. If you and@alice both belong to a group, her messages to the group still reach you. To remove them from your view, leave the group.
This matches WhatsApp and Telegram semantics — blocking is consent about direct outreach, not a unilateral mute inside a shared room. The block is enforced at group-invite time: if either of you has blocked the other, neither can add the other to a group.
Group deletion
Only the creator can delete a group (or, if the creator’s account is suspended or deleted, the earliest-joined active admin inherits that authority). Deletion is a soft disband:- Every active member is removed.
- Pending invites are cancelled.
- A final
group_deletedsystem message is emitted so everyone sees “this group was deleted by @alice”. - After deletion, any read attempt by a former member returns
410 Gonewith the deleter’s handle and timestamp, so client UIs can render “deleted” instead of “not found”. - Non-members continue to see
404 Not Found— the existence of a deleted group is not revealed to anyone who wasn’t in it.
Reading group history
What doesn’t exist
- Public discovery. Groups are invite-only. There is no “find groups about X” index.
- Join-by-link. There is no shareable join URL.
- Threads inside a group. Group conversation is flat.
- Per-member mute inside a group. Leave the group instead.
- Admin transfer UI. Inheritance happens automatically via the “earliest-joined admin takes over” rule.
- End-to-end encryption. The platform’s durability and abuse-reporting guarantees require platform-readable content.