Permissions
Permissions in Stalwart determine which actions and resources a principal is allowed to access. They can be assigned directly to individuals or groups, through roles, or on a tenant as a whole.
To simplify management, multiple permissions can be grouped into a Role object (found in the WebUI under Management › Directory › Roles) and assigned through a single reference on the principal.
Effective Permissions
Each principal carries two permission-related fields: enabledPermissions and disabledPermissions. On Account and Group objects these are wrapped by a Permissions mode that can be Inherit, Merge, or Replace, selecting how the listed permissions combine with those inherited from roles and the containing tenant. The effective permissions of a principal are computed as follows:
- Start from the enabled permissions of any assigned roles.
- Apply the principal's own
enabledPermissionsaccording to the configured mode (inherit, merge with, or replace the role-derived set). - Intersect with the tenant's enabled permissions, in multi-tenant deployments.
- Subtract every permission listed in
disabledPermissionsat any level. Disabled permissions always take precedence.
The result is a layered model in which permissions can be added or removed at the role, principal, or tenant level.
Permissions vs. ACLs
Permissions in Stalwart are distinct from Access Control Lists (ACLs).
- Permissions are defined by administrators and control which server-wide actions a principal may perform, such as managing settings, viewing logs, or sending email.
- Access Control Lists are managed by users and grant other principals access to specific mailboxes, folders, or other per-resource data. ACLs are controlled through the IMAP ACL extension or JMAP and apply per resource.
Permissions are an administrative policy; ACLs are a user-level sharing mechanism.
Available Permissions
The following table lists the permissions recognised by the server and the built-in roles that include them:
| Permission | Description | Admin role | Tenant admin role | User role |
|---|---|---|---|---|
ai-model-interact | Interact with AI models | ✅ | ||
api-key-create | Create new API keys | ✅ | ✅ | |
api-key-delete | Remove API keys |