Roles & Permissions
Configure granular access control with Keva's RBAC system
Keva defines role-based access control (RBAC) with 38 granular permissions across 12 groups. Selected product paths enforce these permissions locally; universal coverage, user-assignment UI, deployment, and product proof remain open.
Overview
The RBAC system consists of:
- Roles - Named sets of permissions
- Permissions - Granular access rights
- Assignments - Users assigned to roles
Default Role Templates
New organizations start with four system-role templates. These roles cannot be deleted, but authorized permission edits mean their stored permission sets can later differ from these defaults.
| Role | Color | Description |
|---|---|---|
| Owner | Purple | Full access to all features including billing |
| Admin | Blue | Full access except billing management |
| Agent | Green | Handle tickets, approvals, and knowledge base |
| Viewer | Gray | Read-only access to tickets and analytics |
Permission Groups
This catalogue defines Keva's permission identifiers. A listed identifier does
not by itself prove a connected UI action, universal route enforcement, or
deployed behavior; for example, Settings > General exposes invite and
pending-invitation revoke controls for authorized users with team.invite,
while organization-member removal and Clerk membership-role changes remain
outside this screen.
Tickets
| Permission | Description |
|---|---|
tickets.view | View ticket list and details |
tickets.create | Create new tickets |
tickets.edit | Edit ticket properties |
tickets.assign | Assign tickets to agents |
Approvals
| Permission | Description |
|---|---|
approvals.view | View pending approvals |
approvals.approve | Approve AI actions |
approvals.reject | Reject AI actions |
Knowledge Base
| Permission | Description |
|---|---|
kb.view | View knowledge base entries |
kb.create | Create new entries |
kb.edit | Edit existing entries |
kb.delete | Delete entries |
Settings
| Permission | Description |
|---|---|
settings.view | View workspace settings |
settings.edit | Modify workspace settings |
Team
| Permission | Description |
|---|---|
team.view | View team members |
team.invite | Invite new members |
team.remove | Remove members |
team.edit_roles | Modify role assignments |
Analytics
| Permission | Description |
|---|---|
analytics.view | View analytics dashboard |
Billing
| Permission | Description |
|---|---|
billing.view | View billing information |
billing.manage | Reserved for billing mutations; checkout and portal are currently suspended |
API Keys
| Permission | Description |
|---|---|
api_keys.view | View API keys |
api_keys.create | Create new API keys |
api_keys.delete | Delete API keys |
Connectors
| Permission | Description |
|---|---|
connectors.view | View platform connectors |
connectors.create | Add new connectors |
connectors.edit | Edit connector settings |
connectors.delete | Remove connectors |
Automation
| Permission | Description |
|---|---|
automation.view | View automation rules |
automation.create | Create automation rules |
automation.edit | Edit automation rules |
automation.delete | Delete automation rules |
Audit
| Permission | Description |
|---|---|
audit.view | View audit logs |
audit.export | Export audit data |
Custom Fields
| Permission | Description |
|---|---|
custom_fields.view | View custom field definitions |
custom_fields.edit | Create and modify custom fields |
Creating Custom Roles
- Navigate to Settings > Roles
- Click Add Role
- Enter a name and description
- Select a color for visual identification
- Check the permissions to grant
- Click Create Role
Editing Roles
- Find the role in the list
- Click Edit
- Modify permissions as needed
- Click Update Role
The DELETE /api/user-roles path rejects removing another user's sole remaining
Owner assignment and rejects removing your own Owner assignment. Other role
writers are not yet coordinated into a tenant-wide last-Owner guarantee. The
current Settings screen does not expose tenant-role assignment controls.
System roles (Owner, Admin, Agent, Viewer) cannot be renamed, recolored, or deleted. Their permission sets are currently editable. The Owner role cannot be reduced to zero permissions.
Assigning Roles
Keva's tenant RBAC roles are separate from Clerk organization membership roles. The current Settings UI manages role definitions and their permissions, but does not expose a control for assigning these tenant RBAC roles to users.
Settings > Team displays the Clerk organization role (Admin or Member)
as read-only. Clerk membership-role mutation is suspended in Keva and must use
the approved Clerk administration process. The screen does not assign Owner,
Admin, Agent, Viewer, or custom Keva tenant roles.
Default Permission Sets
Roles do not inherit from each other. New organizations start with these permission sets; authorized edits can change the stored system-role permissions:
Owner: All 38 permissions
Admin: All except billing.manage
Agent: Tickets, approvals, KB, analytics
Viewer: View-only permissionsBest Practices
Start with Least Privilege
Begin with Viewer role and add permissions as needed rather than starting with Admin and removing.
Create Function-Specific Roles
Consider custom roles for specific functions:
- Support Lead: Agent + team.view
- KB Manager: kb.* + settings.view
- Billing Admin: billing.* + analytics.view
Regular Permission Audits
Review role assignments quarterly:
- List all custom roles
- Verify permissions are still appropriate
- Reconcile user assignments through an approved administrative process
- Remove unused custom roles
Document Custom Roles
Keep documentation of custom roles and their intended purpose for SOC 2 compliance.
Audit Trail
Role-management API mutations log these events:
role.created- New role createdrole.updated- Role fields or permissions updatedrole.deleted- Role removeduser_role.assigned- User assigned to roleuser_role.removed- User removed from role
This list does not claim that provisioning, Clerk membership lifecycle, or every direct writer emits the same per-role events.