Skip to content

Permissions

Complete reference for all permissions available in Mantis RBAC system.

Mantis uses a resource:action permission model with 111 predefined permissions covering all system resources.

ComponentDescriptionExamples
ResourceThe entity being accesseddeployments, targets, users
ActionThe operation being performedcreate, read, update, delete
NameCombined identifierdeployments:create

Manage deployment actions (scripts, commands).

PermissionDescription
actions:createCreate new actions
actions:readView actions and versions
actions:updateModify existing actions
actions:deleteDelete actions

Manage deployment sequences.

PermissionDescription
sequences:createCreate new sequences
sequences:readView sequences and versions
sequences:updateModify existing sequences
sequences:deleteDelete sequences

Manage deployment solutions.

PermissionDescription
solutions:createCreate new solutions
solutions:readView solutions and versions
solutions:updateModify existing solutions
solutions:deleteDelete solutions

Manage deployment targets.

PermissionDescription
targets:createRegister new targets
targets:readView target information
targets:updateModify target settings
targets:deleteRemove targets

Manage deployment execution.

PermissionDescription
deployments:createStart new deployments
deployments:readView deployment status and history
deployments:updateModify deployment settings
deployments:cancelCancel running deployments
deployments:triggerTrigger deployments
deployments:override_freezeDeploy despite an active freeze

Manage deployment environments.

PermissionDescription
environments:createCreate new environments
environments:readView environments
environments:updateModify environment settings
environments:deleteDelete environments
environments:manage_targetsAssign/remove targets in environments

Manage resource tags.

PermissionDescription
tags:createCreate new tags
tags:readView tags
tags:updateModify tags
tags:deleteDelete tags

Manage storage backends.

PermissionDescription
storage:createUpload packages/artifacts
storage:readView and download packages
storage:updateModify storage configurations
storage:deleteDelete packages
storage:testTest storage connections

Manage deployment freezes.

PermissionDescription
freezes:createCreate deployment freezes
freezes:readView deployment freezes
freezes:updateModify deployment freezes
freezes:deleteDelete/end deployment freezes

Manage deployment promotions.

PermissionDescription
promotions:createPromote deployments between environments
promotions:readView promotion history
promotions:updateModify a pending promotion
promotions:approveApprove a pending promotion
promotions:rejectReject a pending promotion

Manage deployment rollbacks.

PermissionDescription
rollbacks:createInitiate deployment rollbacks
rollbacks:readView rollback history

Manage TLS certificates.

PermissionDescription
certificates:createUpload TLS certificates
certificates:readView certificates
certificates:deleteDelete certificates

Manage user accounts (admin).

PermissionDescription
users:createCreate new user accounts
users:readView user accounts
users:updateModify user accounts
users:deleteDelete user accounts

Manage roles (admin).

PermissionDescription
roles:createCreate new roles
roles:readList the users assigned to a role (role-users endpoint)
roles:updateModify role metadata
roles:deleteDelete roles
roles:manageList/view roles and assign/remove their permissions

Manage tenants (system admin).

PermissionDescription
tenants:createCreate new tenants
tenants:readView tenant information
tenants:updateModify tenant settings
tenants:deleteDelete tenants
tenants:manage_solutionsAssign solutions to tenants
tenants:manage_tagsAssign tags to tenants
tenants:manage_targetsAssign targets to tenants
tenants:manage_variablesManage tenant variables

Manage client registrations.

PermissionDescription
registrations:createCreate client registrations
registrations:readView client registrations
registrations:approveApprove client registrations
registrations:rejectReject pending registrations
registrations:revokeRevoke client registrations
registrations:deleteDelete registrations

Manage registration tokens.

PermissionDescription
registration_tokens:createCreate registration tokens
registration_tokens:readView registration tokens
registration_tokens:updateUpdate registration tokens
registration_tokens:revokeRevoke registration tokens
registration_tokens:deleteDelete registration tokens

View system statistics.

PermissionDescription
statistics:readView system statistics

Manage system settings.

PermissionDescription
settings:readView system settings
settings:manageModify system settings

Manage encryption keys.

PermissionDescription
encryption:statsView encryption statistics
encryption:verifyVerify encryption key

System-level administration.

PermissionDescription
system:adminFull administrative access

Manage the response/data cache.

PermissionDescription
cache:readView cache statistics
cache:manageManage cache (clear, enable/disable)

Manage notification channels.

PermissionDescription
notifications:createCreate notification channels
notifications:readView notification channels
notifications:updateModify notification channels
notifications:deleteDelete notification channels

Manage AI-assisted deployment analysis.

PermissionDescription
analysis:readView analysis results and settings
analysis:manageConfigure analysis providers/settings

View and manage recurring deployment-failure patterns.

PermissionDescription
patterns:readView failure patterns, cluster detail, and stats
patterns:manageRecompute, mute, resolve, and reactivate patterns

Manage reusable variable sets.

PermissionDescription
variable_sets:createCreate new variable sets
variable_sets:readView variable sets
variable_sets:updateModify variable sets
variable_sets:deleteDelete variable sets

Manage configuration-as-code repositories and sync.

PermissionDescription
config:manageManage config-as-code repositories and sync
config:set_authoritativeMark a config repository as authoritative

Access audit logs.

PermissionDescription
audit:readView audit log entries

Manage scheduled deployments.

PermissionDescription
schedules:createCreate scheduled jobs
schedules:readView scheduled jobs
schedules:updateModify scheduled jobs
schedules:deleteDelete scheduled jobs
schedules:executeTrigger a scheduled job now

Manage the WireGuard overlay network.

PermissionDescription
wireguard:readView WireGuard configuration/state
wireguard:manageManage WireGuard configuration

Manage Thorax gRPC server instances.

PermissionDescription
thorax_instances:readView Thorax gRPC server instances
thorax_instances:updateModify Thorax instance settings
thorax_instances:deleteDeregister Thorax instances

Required permission: roles:manage.

Terminal window
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.mantis.local/api/v1/admin/permissions"

Response:

[
{
"resource": "actions",
"permissions": [
{
"id": "019b937d-4862-8ba3-98ce-0f03fba1c12d",
"name": "actions:create",
"resource": "actions",
"action": "create",
"description": "Create new actions"
},
{
"id": "019b937d-4862-892f-8964-135631fe2351",
"name": "actions:read",
"resource": "actions",
"action": "read",
"description": "View actions"
}
]
},
{
"resource": "deployments",
"permissions": [
{
"id": "019b937d-4862-8e2a-88e4-d34627a858db",
"name": "deployments:create",
"resource": "deployments",
"action": "create",
"description": "Start new deployments"
}
]
}
]

Has all (111) permissions assigned explicitly via the seed.

ResourcePermissions
actionscreate, read, update
sequencescreate, read, update
solutionscreate, read, update
targetscreate, read, update
deploymentscreate, read, cancel
environmentscreate, read, update, manage_targets
tagscreate, read, update
storagecreate, read, update, test
freezesread, update
promotionscreate, read
rollbackscreate, read
certificatesread
registrationsread
registration_tokensread
statisticsread
rolesread
tenantsread
schedulesread, update, execute
thorax_instancesread, update
cacheread, manage
notificationsread, create, update
variable_setsread, create, update
analysisread
wireguardread
patternsread
ResourcePermissions
actionsread
sequencesread
solutionsread
targetsread
deploymentsread
environmentsread
tagsread
storageread
freezesread
promotionsread
rollbacksread
certificatesread
statisticsread
rolesread
tenantsread
schedulesread
thorax_instancesread
cacheread
notificationsread
variable_setsread

The seed grants tenant_admin every permission except these five system-tier ones:

  • tenants:create
  • tenants:delete
  • system:admin
  • settings:manage
  • audit:read

This seeded permission set, however, is not the privilege ceiling for what a tenant_admin (or any non-system-admin) may delegate to others.

When a caller assigns roles/permissions to a user — or mints a role carrying permissions — Mantis enforces a secure-by-default ceiling (mandible/src/routes/admin/users.rs:67-126, roles.rs:45-69):

  • A full system administrator (holding system:admin) may confer anything.
  • Any other caller may confer only a permission it itself holds, or one carried by the baseline tenant roles (viewer / operator) — these are derived from the seed at call time (delegatable_permissions).
  • Everything else is refused — including any future system-tier permission. A tenant_admin therefore cannot grant itself the global admin role, mint a role carrying system:admin, or confer a newly-added dangerous permission it does not hold, even if such a permission is added later.
-- Check if user has permission
SELECT COUNT(*) > 0
FROM permissions p
INNER JOIN roles_permissions rp ON rp.permission_id = p.id
INNER JOIN users_roles ur ON ur.role_id = rp.role_id
WHERE ur.user_id = $user_id
AND p.name = $permission_name;

Minimal permissions for running deployments:

[
"deployments:create",
"deployments:read",
"deployments:cancel",
"solutions:read",
"targets:read",
"environments:read"
]

Create and manage deployment content:

[
"actions:create",
"actions:read",
"actions:update",
"sequences:create",
"sequences:read",
"sequences:update",
"solutions:create",
"solutions:read",
"solutions:update",
"storage:read",
"storage:create"
]

Manage targets and environments:

[
"targets:create",
"targets:read",
"targets:update",
"targets:delete",
"environments:create",
"environments:read",
"environments:update",
"environments:manage_targets",
"registrations:read",
"registrations:approve",
"registrations:revoke",
"registration_tokens:create",
"registration_tokens:read",
"certificates:read"
]

View everything without modification:

[
"actions:read",
"sequences:read",
"solutions:read",
"targets:read",
"deployments:read",
"environments:read",
"users:read",
"roles:read",
"tenants:read",
"freezes:read",
"promotions:read",
"rollbacks:read",
"registrations:read",
"statistics:read",
"settings:read"
]
CREATE TABLE permissions (
id UUID PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
resource TEXT NOT NULL,
action TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Indexes
CREATE INDEX idx_permissions_name ON permissions(name);
CREATE INDEX idx_permissions_resource ON permissions(resource);
CREATE UNIQUE INDEX idx_permissions_resource_action ON permissions(resource, action);

To add new permissions:

  1. Create a database migration
  2. Insert new permission records
  3. Update role assignments as needed
  4. Rebuild and redeploy
  1. Check user’s roles:

    Terminal window
    curl -s -H "Authorization: Bearer $TOKEN" \
    https://api.mantis.local/api/v1/admin/users/$USER_ID/roles
  2. Check role’s permissions:

    Terminal window
    curl -s -H "Authorization: Bearer $TOKEN" \
    https://api.mantis.local/api/v1/admin/roles/$ROLE_ID/permissions
  3. Verify permission exists:

    Terminal window
    curl -s -H "Authorization: Bearer $TOKEN" \
    https://api.mantis.local/api/v1/admin/permissions | jq '.[].permissions[].name' | grep "target"
  1. Check exact permission name - Must match exactly including colon
  2. Verify role assignment - User must have role with permission
  3. Check JWT claims - User ID must match database

Check API documentation or handler code:

// In handler
check_permission(&mut conn, audit, &auth.claims, "deployments:create").await?;

Each endpoint documents its required permission in the OpenAPI spec.