Roles & Permissions

Kapable uses role-based access control (RBAC) to manage what members can do within your organisation. This guide explains the built-in roles, how to create custom roles, and best practices for access management.

Built-in Roles

Every organisation comes with four built-in roles:

Owner

The organisation creator. Full access to everything.

There is exactly one owner per organisation. Ownership can be transferred but not shared.

Admin

Trusted team leads with broad access, but no billing or destructive org controls.

Member

Standard team members who build and deploy.

Viewer

Read-only access for stakeholders and observers.

Permission Matrix

ActionOwnerAdminMemberViewer
Organisation
View org infoYesYesYesYes
Edit org name/slugYesYesNoNo
Delete organisationYesNoNoNo
Manage billingYesNoNoNo
Members
View membersYesYesYesYes
Invite membersYesYesNoNo
Remove membersYesYesNoNo
Change member rolesYesYesNoNo
Apps
View appsYesYesYesYes
Create appsYesYesYesNo
Deploy appsYesYesYesNo
Delete appsYesYesNoNo
Manage app settingsYesYesYesNo
Manage custom domainsYesYesNoNo
Auth & Security
View audit logYesYesNoNo
Configure SSOYesYesNoNo
Manage domain allowlistYesYesNoNo
Communications
View agentsYesYesYesYes
Create agentsYesYesYesNo
Manage agent keysYesYesYesNo
View send auditYesYesYesNo
API Keys
Create own API keysYesYesYesNo
Revoke own API keysYesYesYesNo
View all API keysYesYesNoNo
Revoke others' keysYesYesNoNo

Custom Roles

Organisations on paid plans can create custom roles with fine-grained permissions.

Creating a Custom Role

  1. Navigate to Roles in your console sidebar
  2. Click Create Role
  3. Enter a role name and description
  4. Select permissions from the available list
  5. Save the role

Assigning Custom Roles

Once created, custom roles appear in the role dropdown when:

Editing and Deleting

Role-Based Access in the API

When using the API with a session token or API key, the caller's role determines what endpoints succeed:

# This succeeds for Owner/Admin
POST /v1/orgs/{org_id}/invitations
Authorization: Bearer kses_...

# This fails for Member/Viewer with 403 Forbidden
POST /v1/orgs/{org_id}/invitations
Authorization: Bearer kses_...
{"error": "insufficient permissions"}

The API returns 403 Forbidden for any action the caller's role doesn't permit.

Best Practices

Principle of Least Privilege

Assign the minimum role needed for each member's job:

Regular Access Reviews

  1. Review the member list monthly
  2. Deactivate accounts for departed team members immediately
  3. Downgrade roles when responsibilities change
  4. Check the audit log for unusual activity patterns

Onboarding Checklist

When a new team member joins:

  1. Send invitation with the appropriate role
  2. Verify they authenticate through SSO (if configured)
  3. Confirm they can access the apps they need
  4. Share relevant documentation links

Offboarding Checklist

When a team member leaves:

  1. Deactivate their account (Members page)
  2. Revoke any API keys they created
  3. Review and rotate shared secrets they had access to
  4. Check recent audit log entries for their account

Next Steps