What this feature is
Historically, Super Admin access in AAEKB was all-or-nothing. An account was either a full super admin (every tab, every action, platform-wide) or it held the narrow Monitoring flag (read-only Logs & Auditing) — and nothing in between. Super Admin RBAC replaces that binary with admin roles. An admin role is a named bundle of permissions across the Super Admin dashboard’s surfaces. You assign exactly one admin role to a user, and that role decides:- which tabs appear in the Super Admin sidebar for them,
- whether each of those tabs is fully interactive or read-only,
- whether the Super Admin entry appears in their top navigation at all.
This is platform-wide administration, not team or project permissions. Team roles (Owner / Admin / Editor / Member) and project roles are a separate, unrelated system. Admin roles govern the Super Admin dashboard only.
Prerequisites
- You need Admin Roles → View to open the Admin Roles tab, and Admin Roles → Manage to change anything on it. Full super admins have both by default.
- Direct link:
/admin/super?tabName=roles(the alias?tabName=admin_rolesalso works).
Concepts you need before configuring anything
Resource and action
A permission is a pair: a resource (a Super Admin surface, such as Users or Teams) and an action you may perform on it.
Not every action applies to every resource. In the role builder, inapplicable combinations show as a dash (—) instead of a checkbox.
The action hierarchy
Checks are not literal — some actions satisfy others:
The practical consequence: ticking Manage is always enough. You never need to tick View alongside it. Tick View on its own only when you want a genuinely read-only grant.
How access is resolved for a user

The four built-in roles
These are seeded automatically and marked System in the roles table. Their permissions are fixed and cannot be edited or deleted — their names and descriptions can be changed if your organisation uses different terminology. To get a variation on one of them, create a custom role instead.Note on the UAM role. Its
user_manage grants on Teams and Projects are honoured by the API, but the dashboard’s tab-visibility rules mean the Projects tab does not appear (it requires Manage) and the Teams tab opens read-only (member-management controls are hidden). A UAM user therefore administers users through the Users tab and Access Controls, not through Teams or Projects. If you need a role that can genuinely manage team membership from the Teams tab, create a custom role with Teams → Manage.Permission reference
This is the complete matrix as it appears in the role builder, in order.Permissions that work end-to-end
These are enforced consistently by both the dashboard and the API. Use these to build delegated roles.Permissions that currently gate the dashboard only
These resources make the corresponding tab appear, but the underlying APIs are still restricted to full super admins. A user given only these permissions will see the tab and then hit “Unauthorized” errors when it loads.Surfaces that can never be delegated
These have no permission in the matrix and are reserved for full super admins by design: Overview, App Licenses, Teams Bots, LLM Metrics, LLM Usage, Extraction Usage, Email Configuration, KB Decryption Service, Migrations, System, Task Monitor, Global Notifications, and Custom Python Packages. Custom Python Packages is deliberately excluded and permanently locked to full super admins, because installing a package executes arbitrary code on the appliance host.Which tabs a role can see
Two different rules apply, and this is the single most common source of confusion when building a role.
If you tick View on Projects and the tab does not appear, this is why. Tick Manage.
What read-only actually looks like
There is no banner or badge announcing read-only mode. The controls are simply absent or greyed out.Step-by-step
1
Create a custom role
- Go to Super Admin → Security & access → Admin Roles.
- Click New Role.
- Enter a Name (for example, Support Tier 2). This is what appears in the role picker. An internal id is generated from the name automatically — lowercase, with spaces and punctuation replaced by underscores.
- Enter a Description. This shows under the name in the roles table; write it for the next administrator, not for yourself.
- In the permission matrix, tick the actions you want per resource. Remember: Manage implies View — you do not need both; for anything outside Users / Teams / Access Controls / Logs & Auditing / Admin Roles, you must tick Manage for the tab to appear at all; anything in the dashboard-only list above will not work end-to-end yet.
- Click Save.
2
Edit or delete a role
- Edit — click Edit on a custom role, change what you need, click Save.
- System roles — the button reads View instead of Edit and the matrix is locked. Name and description can still be changed; permissions cannot.
- Delete — click Delete on a custom role and confirm. Anyone currently holding it is silently unassigned and drops to no Super Admin access at all. There is no reassignment prompt, so check who holds a role before deleting it.
3
Assign a role to a user
- Go to Super Admin → Users & workspaces → Users.
- Find the user (search accepts user ID, email, or name).
- In their row, open the Assign admin role dropdown and pick a role, or No admin role to revoke all Super Admin access.
- Confirm the prompt. Granting or revoking platform-wide privileges is deliberately gated behind a confirmation, and demoting yourself carries an extra warning — you will lose access to the Super Admin dashboard immediately and will need another super admin to restore it.
4
Know when changes take effect
- For you, acting on others: immediately. The server re-resolves permissions on every request, so a revocation blocks the next API call the affected user makes.
- For the affected user’s browser: their sidebar and navigation are drawn from permission data fetched at sign-in and cached locally. They must reload the page (or sign out and back in) to see tabs appear or disappear.
Behaviour and limitations to plan around
The tab-visibility asymmetry
View reveals only five tabs (Users, Teams, Access Controls, Logs & Auditing, Admin Roles); everything else needs Manage. Budget for this when designing least-privilege roles.The UAM role cannot manage team or project membership from the UI
Itsuser_manage grants are real at the API level but the Teams tab renders read-only and the Projects tab is hidden. Use Teams → Manage in a custom role if UI-based team membership administration is the requirement.
Audit log export cannot be delegated
Ticking Logs & Auditing → Export un-hides the Export buttons, but every audit export endpoint still requires a full super admin, so the download fails with “Unauthorized”. Treat audit export as full-super-admin-only for now. Read access delegates correctly.Several matrix resources are dashboard-only
Agents, SSO Configuration, Knowledge Base, Templates, Toolkits, Secrets and Platform Settings reveal their tabs but their APIs still demand a full super admin. Overview does nothing whatsoever.The legacy flags are still there, and stay in sync
Assigning Super Admin sets the legacy super-admin flag; assigning Monitoring sets the legacy monitoring flag; assigning any other role, or clearing the role, clears both. You never need to manage these flags yourself, and you should not try to — role assignment is the only supported path.Recipes
Auditing
Every admin-role change is written to the Super Admin action audit log, visible under Super Admin → Usage & auditing → Logs & Auditing → Super Admin audits.
Role assignment events record the performer, the target user, and the before/after role.
Testing checklist
- Create a test custom role with a single narrow permission (e.g. Users → View) and confirm the tab appears read-only for a test account
- Confirm a Manage-only resource (e.g. Projects) stays hidden when only View is granted, and appears when Manage is granted
- Assign a role to a test user, then confirm they must reload their browser before the sidebar updates
- Attempt to edit a system role’s permissions and confirm it’s rejected
- Delete a custom role that’s currently assigned to someone and confirm they’re silently dropped to no admin role
- Confirm each role change appears correctly in the Super Admin audit log
- Verify at least two accounts hold full Super Admin before handing out any custom roles
Troubleshooting
Operational guidance
Upgrade behaviour
When the feature is deployed, existing privilege holders are migrated automatically:- Accounts with the legacy super-admin flag are assigned the Super Admin role.
- Accounts with only the legacy monitoring flag are assigned the Monitoring role.
- All other accounts are left with no admin role.
API reference
All endpoints are under the admin API and require a bearer token for a user holding the stated permission.
A role’s permissions are a JSON object mapping resource to a list of actions. The all-access wildcard is
{"*": ["*"]}. Creating a role with an unknown resource, or an action not valid for that resource, is rejected with HTTP 400.
Example — the built-in User Access Manager:
Permission matrix at a glance
Document version 1.0 — covers the Super Admin RBAC feature as shipped and subsequently corrected. The dashboard-only permissions and audit-export limitation described above reflect known limitations at the time of writing; verify against your deployed release before relying on them.