Roles & permissions
Roles are objects keyed by name and ordered by position. A user stores an ordered array of role names. The first role supplying a color or gradient determines public styling.
Two permission layers
Section titled “Two permission layers”Administrative permissions are named capabilities such as manage_channels, manage_users, manage_roles, manage_emojis, manage_config, review_reports, and view_audit_log. owner/administrator provide broad authority through the permission helper.
Channel permissions map actions to role-name rule arrays. A positive role name grants access; !role denies that role before grants are considered; an array with no positive roles allows everyone not explicitly denied. The owner role name bypasses channel rules. The defaults grant viewing, sending, own editing/deletion, reactions, and thread creation to user; pinning goes to owner/admin/moderator.
Safe role management
Section titled “Safe role management”Actors cannot grant a permission they do not themselves hold. Hierarchy checks prevent managing protected or superior roles. owner, admin, and user cannot be deleted or made self-assignable. Custom roles may opt into self-assignment; role changes trigger channel refreshes because visibility can change immediately.
