Docs/Administration/Custom Roles

Custom Roles

When no built-in role fits, an Owner can compose a custom role from the permission catalog. A custom role sets an access level for each module and, where you need it, for each page inside a module. Anything the role does not grant is No access.

ℹ

Custom roles are an Enterprise feature. They need the rbac-custom-roles entitlement (the Enterprise cloud plan, and the Pro and Enterprise self-hosted plans). Without it, the Custom Roles tab is hidden. Only the Owner role can view, create, edit, delete and assign custom roles. A custom role can never grant the right to author custom roles.

Where to find them

Go to Organization Settings → Custom Roles. The list shows each role with these columns:

ColumnMeaning
RoleName and description
AccessThe modules the role grants and their levels
AssignedHow many organization and project memberships hold the role
ExpiresThe expiry date, Expired with the date once it has passed, or Never
UpdatedLast change

Custom roles belong to one organization. Every project in that organization can use them.

Create a custom role

Start the role

Select Create custom role. The role editor opens.

Name and describe it

  • Name (required): up to 64 characters, unique in the organization. It cannot contain <, >, { or }.
  • Description (optional): up to 500 characters. HTML tags and template expressions ({{, }}, ${) are rejected.
  • Expires (optional): a date after which the role stops granting anything.

Optionally clone a built-in role

Use Clone from built-in role to start from the permissions of Department Admin, Security & Compliance, Cost Analyst, Manager Viewer, End User or Auditor, then adjust. Owner cannot be cloned. Cloning is only offered when you create a role.

Set permissions

Set access levels on the Pages tab or the JSON tab. Both edit the same permissions. See Setting permissions.

Review

Check the Effective permissions panel. It lists every page and setting the role reaches, with its level, and the number of organization and project scopes it compiles to. If a combination breaks a separation of duties rule, a Separation of duties warning explains why and the role cannot be saved.

Save

Select Create role and complete step-up verification. The role is now available to assign.

Setting permissions

Access levels

LevelShown asMeaning
NONENo accessHidden and refused
READReadView only
WRITERead & WriteView and change
ADMINAdminHighest tier, for example approving compliance requests or managing Budget AI keys

Each module and page offers only the levels that mean something for it. A read-only page such as Risk Dashboard offers only No access and Read.

Pages tab

The Pages tab is laid out like the sidebar, with a section per sidebar heading (Discover AI, Gauge AI, Budget AI, Governance) and a Settings & administration section for settings tabs and data permissions that have no sidebar page.

  • Each row is a page (or a group of pages that share one permission) with a level dropdown.
  • A page that you have not set shows Inherit from its module, with the inherited level. Select a level to override it, or the reset icon to go back to inheriting.
  • An override wins in both directions: you can turn one page off inside a module you granted, or grant one page inside a module set to No access.
  • Set all pages… on a section heading applies one level to every page in it.
  • Filter pages… narrows the list by page name or key.
  • Module defaults (advanced) sets the fallback level for a whole module at once. It also grants the module-wide permissions that no single page carries, such as configuring notification automations in Governance and running evaluation jobs in Gauge AI. Modules marked Sensitive (Budget AI, PII / raw-prompt content, Integrations & service accounts, Tenant security, Billing) deserve extra care.

Some pages sit under a sidebar heading that differs from the module that controls them. Tracing and Sessions appear under Discover AI but inherit from Governance. AI Agent Center appears under Discover AI but belongs to Gauge AI. AI Inventory appears under Gauge AI but belongs to Governance. The row always names the module it inherits from.

Permission catalog

ModuleLevelsPages and settings it covers
Discover AINo access, Read, Read & WriteAI Usage Intelligence (adoption), AI Tools, Users, Devices, Usage Intelligence, discovered AI agents, Configure (policy, tool registry, enrollment keys, directory)
AI TrailMapsNo access, ReadAI TrailMaps
Gauge AINo access, Read, Read & WriteAI Agent Center, AI Optimizer, Cost & Latency dashboards (Cost Dashboard, Latency Dashboard, Cost Performance Metrics, Latency & Analytics, AI Usage), Users (per-user cost)
GovernanceNo access, Read, Read & Write, AdminRisk Dashboard, AI Guardrails, AI Violations, My Requests, Available Requests and approvals, Evidence Collection, Framework Coverage, agent profiles, Tracing and Sessions, AI Inventory
Budget AINo access, Read, Read & Write, AdminOverview, Keys, Budgets & Limits, Models & Routing, Budget AI settings
Audit & ExportNo access, Read, Read & WriteAudit Log Viewer (Organization Settings → Audit Logs), Audit & Evidence Export (Governance → Audit & Export)
PII / raw-prompt contentNo access, ReadThe text of prompts and responses wherever it appears
Data exportNo access, Read & WriteProject Settings → Exports and table exports of traces, sessions, observations, scores, dataset items, dataset run items and audit logs
User data exportNo access, Read & WriteExporting the Users table
AI Agent data exportNo access, Read & WriteExporting agent, discovered agent and agent governance tables
User & role managementNo access, Read, Read & WriteOrganization members, project members, invitations
Integrations & service accountsNo access, Read, Read & Write, AdminNotification and analytics integrations, AI Studio connectors, project API keys (Admin only)
Tenant security & data retentionNo access, Read, AdminSSO & identity, organization features & MFA, Budget AI key incident response (block and unblock), data retention
Billing & subscriptionNo access, ReadOrganization Settings → Billing
Ants AssistNo access, Read, Read & WriteUsing Ants Assist and configuring it for a project

Sub-pages offer only the levels that apply to them. For example, Governance's request queue offers Admin (final approval), while AI Violations is read-only. A module level above what a page offers resolves down to the page's highest level.

JSON tab

The JSON tab shows the same permissions as an object of keys and levels. Values are READ, WRITE or ADMIN. Omit a key to inherit its module's level.

json
{ "discoverAi.tools": "READ", "discoverAi.tracing": "READ", "gaugeAi.dashboards": "WRITE", "governance.risk": "READ", "auditLogs": "READ" }
  • Page keys follow the sidebar: <heading>.<page>, for example discoverAi.tracing.
  • A bare heading key such as "discoverAi": "READ" expands into one key per page under that heading.
  • Module keys (shadowAi, roiAi, guardianAi, gatewayAi, auditLogs, piiRawPrompt, dataExport, userDataExport, agentDataExport, userRoleManagement, integrations, tenantSecurity, billing, antsAssist, trailmap) and their dotted sub-module keys (for example guardianAi.tracing) are always accepted. Module keys are what the platform stores.
  • Settings permissions keep their module spelling, for example integrations.apiKeys or tenantSecurity.dataRetention.
  • Unknown keys, customRoleAuthoring, and levels a key does not offer are rejected with an error that names the key. The key reference under the editor lists every valid key.

Separation of duties

Some combinations are blocked in every custom role, whoever creates it:

Blocked combinationWhy
User & role management at Read & Write and Audit & Export at Read or aboveWhoever grants access must not also control the record of who was granted it.
User & role management at Read & Write and Tenant security at AdminRole administration and tenant security configuration are separate duties.
PII / raw-prompt content at Read and Data export at Read & WriteTogether they allow bulk export of personal data.

The check counts a module at the highest level held by the module or any of its pages, so a rule cannot be avoided by granting only pages.

Assign a custom role

Custom roles are assigned in the same places as built-in roles. The role dropdowns show a Custom roles group below the built-in roles.

  • Organization level: in Organization Settings → Members, pick the custom role in a member's role dropdown. The role applies in every project where the member has no project role.
  • Project level: in Project Settings → Members, pick the custom role as the member's project role. It replaces their organization role in that project. Project-level assignment needs the rbac-project-roles entitlement.
  • Invitations: when you select Add member, choose a custom role as the Organization Role or Project Role. The invitee receives it when they join.
  • Identity provider groups: map an Okta or other identity provider group to the custom role, at organization or project scope, with group role mappings. Members get the role at sign-in and on SCIM group changes, so least-privilege roles follow the groups you manage in your identity provider.

A membership holds either a built-in role or a custom role at each level, never both. Assigning a custom role requires the Owner role and is checked against your own access. Changing an existing member's role asks for step-up verification. Expired roles appear in the dropdown marked Expired and cannot be selected.

The roles attribute in SCIM provisioning sets built-in roles only. Use group role mappings to assign custom roles from your identity provider.

Edit, expire and delete

  • Edit: select the edit icon, change the role, and select Save changes. Step-up verification is required. The new permissions apply to everyone who holds the role. Their memberships do not change.
  • Expiry: after the expiry date, the role grants nothing. Members who hold it keep the membership but lose all access it gave until you extend the date or assign another role.
  • Delete: select the delete icon and confirm Delete custom role?. The dialog says how many members hold it. They fall back to the role None and lose the access the custom role granted.
  • A custom role that grants nothing does not let its holder open a project. The editor warns you: "Grants nothing. A member holding only this role cannot open the project."

Creating, editing and deleting custom roles, and assigning them, are recorded in Audit Logs.

Examples

GoalPermissions
Read-only membership auditorUser & role management: Read
Compliance reviewer for one framework programGovernance: Read, with Evidence Collection at Read & Write and Available Requests at Read & Write
Discover AI tool inventory onlyDiscover AI: AI Tools at Read
Budget AI key administratorBudget AI: Keys at Admin
External auditor for a single projectAudit & Export: Read, assigned as a project role in that project, with organization role None

Next steps

© 2026 ANTS Platform, Inc.Docs v1.0 · Last updated June 2026