Docs / Operations / Permission Model & Role Bundles
Permission Model & Role Bundles
Every action in Athena is guarded by a named permission — a stable, dotted id such
as agents.delete or commands.execute. Each of Athena's four roles holds a
fixed bundle of those permissions, and what an account may actually do is the bundle
for its role. This page is the reference for that model: the full permission catalogue, which bundle
each role gets, and how to read it all back so you can answer “why was this person allowed
(or refused) that?” with a query instead of a guess.
Where this lives in the console
The permission matrix is on Settings → Security → Permissions, and every account
can see its own effective permissions from its Profile. The same data is
available over the REST API under api/permissions and through the Athena PowerShell
module. For the four roles themselves and how you assign them, see
Roles & Permissions and User Accounts.
The permission catalogue. The single list of every capability Athena guards. Each
entry has a stable id (lowercase, dotted — e.g. deployments.execute), a
display category, and a one-sentence description of what granting it
lets someone do.
Role bundles. Each of the four roles — User, Helpdesk,
Operator, Admin — holds a fixed set of permission ids.
Effective permissions. What a specific account ends up with, resolved from its
role's bundle. This is the exact set the server checks on every request, so what a screen shows and
what the server will actually allow can never disagree.
Permission ids are an identity, not display text
Ids are compared case-sensitively and are permanent — agents.delete
is a permission; Agents.Delete is not. When you filter by id (in the API or PowerShell),
match the exact lowercase string.
The bundles are fixed in this release — there are exactly four roles, no custom roles,
and no per-resource scoping. They also nest: everything a
User can do, a Helpdesk can do; everything a Helpdesk can do, an
Operator can do; and Admin holds every permission in the catalogue. There is
deliberately no wildcard — Admin holds each id explicitly, so a
destructive capability is always separately visible rather than hidden behind a catch-all.
Role
In broad terms
Permissions held
User
Start and operate a remote-support session, and open the agent views it launches from. The lowest tier.
remote.view, remote.control, agents.view
Helpdesk
Everything a User has, plus read-only visibility across the product — inventory, the agent list, commands, deployments, collections, compliance, the scheduler, reports, monitors, alerts, tagging rules, and the audit log. Also the read-only BitLocker, Sysmon and Power Management views, BitLocker startup-PIN reveal, and the Credentials page with the audited reveal of Secret credentials.
User's three, plus the *.view reads for each area, plus credentials.view, credentials.reveal, bitlocker.view, bitlocker.pin.reveal, sysmon.view and power.view
Operator
Everything Helpdesk can see, plus the day-to-day operational writes — manage agents, run commands, deploy packages, manage collections, compliance, schedules, reports and monitors, acknowledge alerts, restart devices, start the Secure Boot 2023 certificate update, and view credentials and binaries. Also changes BitLocker, Sysmon and Power Management policies.
Helpdesk's reads, plus the operational *.manage / *.execute grants
Admin
The whole catalogue, including the destructive and server-configuration permissions (delete agents/commands/deployments, manage users, PKI, credentials, identity providers, retention and server settings), plus managing the BitLocker, Sysmon and Power Management modules.
Every permission in the catalogue, module permissions included
Screen-share is open to every role by design
remote.view and remote.control are in all four bundles — every
authenticated account can start and drive a remote-support session, with session ownership (not role)
governing who may operate which session. See Remote Commands & Desktop
and Remote Session Limits.
View vs. manage, and the delete / api.view splits#
Reading the catalogue is easier once you know the naming pattern:
<area>.view — read the area's screens. Held from
Helpdesk up (these are the reads that make up the Helpdesk bundle).
<area>.manage / <area>.execute — the writes
and actions for that area. Held from Operator up.
<area>.delete — destructive removal that cannot be undone
(e.g. agents.delete, commands.delete, collections.delete,
deployments.delete). These are Admin-only and are kept separate so deleting
is never bundled in with ordinary management.
<area>.api.view — reading the same data through the REST API,
which sits at a tighter tier than the equivalent console page for a few areas
(agents, commands, collections, deployments,
scheduler). It lets the console read stay broad while the API read stays at the
Operator tier.
Module permissions don't follow the view/manage tiers above. Their
*.manage ids are Admin-only. See
Module permissions.
Every permission Athena guards, grouped by category. This is the authoritative list the authorization
checks use; the descriptions are the same operator-facing sentences shown in the console and returned
by the API.
See the agent list and open an agent's details, status and history.
agents.api.view
Read agents, their status, statistics and tags through the REST API.
agents.manage
Edit agent details, tags, notes and settings, and trigger agent-side actions.
agents.delete
Delete an agent and every record that belongs to it — this cannot be undone.
agents.revoke
Revoke an agent's registration so it can no longer talk to this server.
agents.files
Browse and download files from a remote agent's filesystem.
agents.diagnostics
Run connectivity and relay diagnostics against an agent.
agents.restart
Restart a device (Windows), after a delay the operator chooses and the logged-on user is told about. Held by Operator and Admin. See Restarting Computers.
agents.logs.trace
Set an agent's log level to Verbose (Trace), where the agent records the script text of the commands it runs. Admin only by default. See Agent Logs.
secureboot.update
Start the Secure Boot 2023 certificate update on a device — it changes firmware variables on the next reboots. Held by Operator and Admin. See Secure Boot 2023 Certificate Update.
agents.migrate
Move agents to a different Athena server or re-enroll them elsewhere.
agents.migrate.view
Review the history of agent migrations without being able to start one.
agents.update
Push an agent software update to selected agents.
agents.update.view
Review agent update history and the outcome of past update pushes.
See which stored credentials exist and where they are used — never their secrets.
credentials.manage
Add, update and remove the stored credentials Athena uses to reach devices.
credentials.use
Run commands and deployment steps as a stored credential — never reveals its secret.
credentials.reveal
Reveal the value of a stored Secret (such as a BIOS password). Every reveal is audited; Local and Domain account passwords are never revealed. See Revealing a Secret.
pki.view
Inspect the certificate authority and the certificates issued to agents.
pki.manage
Issue and renew agent certificates and manage the certificate authority.
pki.revoke
Revoke a certificate, immediately cutting off the agent that holds it.
tokens.manage
Create and revoke the enrollment tokens that let new agents join.
See which agent and helper binaries are published and their versions.
binaries.manage
Upload, replace and delete the agent and helper binaries devices download.
updates.view
See the state of the offline Windows Update scan catalogue.
updates.manage
Upload and remove the offline Windows Update scan catalogue used by agents.
Module permissions — BitLocker, Sysmon and Power Management#
The BitLocker, Sysmon and Power Management modules add their own permissions to the catalogue. Once
added, they behave exactly like any other permission: they show up on
Settings → Security → Permissions, in api/permissions and in
Get-AthenaPermission, and the server checks them the same way. Each module's permissions
are listed under the module's name as the category — BitLocker,
Sysmon or Power Management — so you can filter them with
?category=BitLocker or -Category "Power Management".
The default holders differ from the core naming pattern. Admin holds every module
permission. The read-only ones (bitlocker.view, sysmon.view,
power.view) and the help-desk PIN reveal (bitlocker.pin.reveal) are also given
to Helpdesk and Operator. The policy-editing ones (bitlocker.manage,
sysmon.manage, power.manage) are also given to Operator. The rest
(bitlocker.reveal, bitlocker.decrypt, sysmon.config.delete) are
Admin-only. These pages live in the Policies group.
Permission
Category
What it grants
Held by default
bitlocker.view
BitLocker
See BitLocker volume status and policies.
Helpdesk, Operator, Admin
bitlocker.manage
BitLocker
Edit BitLocker policies, assignments and per-agent overrides, and trigger BitLocker actions.
Operator, Admin
bitlocker.reveal
BitLocker
Reveal an escrowed BitLocker recovery key (a reason is required and the reveal is audited).
Admin
bitlocker.decrypt
BitLocker
Set an agent's Decrypt override, which makes the agent remove BitLocker from its volumes (also needs bitlocker.manage).
Admin
bitlocker.pin.reveal
BitLocker
Show a stored TPM+PIN startup PIN (a policy PIN or a device override). Every reveal is audited.
Helpdesk, Operator, Admin
sysmon.view
Sysmon
View fleet Sysmon status, configurations and revisions. Read-only.
Helpdesk, Operator, Admin
sysmon.manage
Sysmon
View fleet Sysmon status, upload Sysmon config revisions and deploy them to agents.
Operator, Admin
sysmon.config.delete
Sysmon
Delete a Sysmon configuration and its revisions from the server. Agents keep the config they run.
Admin
power.view
Power Management
See power policies, their assignments and the power configuration agents report.
Helpdesk, Operator, Admin
power.manage
Power Management
Create, edit, assign and apply power policies, and turn power enforcement on or off.
Operator, Admin
bios.view
BIOS Configuration
See each agent's BIOS settings, the fleet-learned model catalog, the baselines and their drift, and ask an agent to read its BIOS settings again. See BIOS Configuration.
Helpdesk, Operator, Admin
bios.baselines.manage
BIOS Configuration
Create, edit and delete BIOS baselines (desired attribute values per vendor and model). Saving only re-evaluates drift; nothing is written to any machine.
Operator, Admin
bios.remediate
BIOS Configuration
Send a drifted machine its baseline's values through the vendor's firmware interface; they take effect at the next restart. Using a stored BIOS password also needs credentials.use. See Remediating drift.
Admin
bios.password
BIOS Configuration
Set, change or remove a machine's BIOS administrator password through the vendor's firmware interface, and see which credential is escrowed as its current password. Also needs credentials.use. See BIOS administrator password.
Each module is licensed separately. If your license is valid but doesn't include a module, that
module's permissions are refused for every role, Admin included,
whatever the role's bundle says. Its controls are hidden in the console, and its REST calls return
403 with a license reason. The permissions still appear in the role bundles, so an
account's effective permissions can list an id the license currently blocks. The same applies to the
core license-governed areas (remote control and recordings, reports, and the offline Windows Update
catalogue). An expired or missing license does not trigger this block. See
Separately licensed modules.
Effective permissions — what an account can really do#
An account's effective permissions are simply the bundle for its role, resolved from
the same source the authorization check itself uses. That means a permissions view can never show a set
the server would not honour. Every account can look up its own effective permissions — even a
User-role account — from its Profile or the
api/permissions/me endpoint. Looking up another account's permissions requires the
users.view permission.
Answer access questions without guessing
To explain a denial, compare the permission the action needs (from the catalogue) against the
account's effective set. To plan a promotion, diff the two role bundles and you see exactly what the
change would add.
The permission model is read-only over the API — you inspect it, you don't edit it
(role bundles are fixed in this release). All endpoints require an authenticated session; the
per-endpoint permission is noted below. See the API Reference for
authentication details.
Method & path
Purpose
Permission
GET api/permissions
List the whole permission catalogue. Optional ?category=Agents filter (matched case-insensitively; an unmatched category returns an empty list).
settings.view
GET api/permissions/roles
List all four role bundles, least-privileged first.
settings.view
GET api/permissions/roles/{role}
One role's bundle, by name (User, Helpdesk, Operator, Admin).
The Athena module reads the same model. Connect first with
Connect-Athena. The catalogue and role-bundle cmdlets require
the settings.view permission; asking about your own effective permissions needs only a
connected session.
Cmdlet
What it does
Get-AthenaPermission
Return the catalogue. Filter with -Category or look one up with -Id (exact, case-sensitive).
Get-AthenaRolePermission
Return every role's bundle, or one role's with -Role. Each result carries RoleName, PermissionIds and PermissionCount.
Get-AthenaEffectivePermission
Return the connected account's effective permissions, or another account's with -UserId (accepts a user piped from Get-AthenaUser).
A few practical one-liners, from a connected session:
# What can I do right now?
Get-AthenaEffectivePermission | Select-Object Username, RoleName, PermissionCount
# List just the agent permissions and what each one allows
Get-AthenaPermission -Category"Agents"| Format-Table Id, Description
# Can Helpdesk acknowledge an alert?
(Get-AthenaRolePermission -Role Helpdesk).PermissionIds -contains'alerts.acknowledge'# Exactly what would promoting someone from Helpdesk to Operator add?$hd = (Get-AthenaRolePermission -Role Helpdesk).PermissionIds
$op = (Get-AthenaRolePermission -Role Operator).PermissionIds
Compare-Object $hd$op# Does a specific user hold the (Admin-only) delete-agent permission?
Get-AthenaUser -Username jsmith | Get-AthenaEffectivePermission |
ForEach-Object { $_.PermissionIds -contains'agents.delete' }
Roles are fixed — grant access by changing the role
Because bundles are fixed in this release, you don't grant individual permissions; you give an
account the role whose bundle covers what it needs. Change a user's role on
User Accounts, or map directory groups to roles with
LDAP / Active Directory and
Keycloak SSO. A role change takes effect on the account's next
sign-in.
Why was a user refused an action their role “should” allow?
Check the permission the action needs against the user's effective set (Get-AthenaEffectivePermission or api/permissions/users/{id}). If the id isn't in the set, the role's bundle doesn't include it — the action belongs to a higher role.
Can I create a custom role or grant one extra permission?
Not in this release. There are exactly four fixed roles and no per-permission grants; assign the role whose bundle fits.
Does Admin have a wildcard “allow everything”?
No. Admin holds every catalogue id explicitly — there is no wildcard — so destructive permissions are always individually visible.
Why does an account's permission count not change after I changed its role?
A role change applies at the next sign-in. Have the user sign out and back in, then re-read the effective permissions.
Can an Operator change BitLocker, Sysmon or power policies?
Yes. Since October 2026 the built-in Operator role also holds bitlocker.manage, sysmon.manage and power.manage. Revealing BitLocker recovery keys, Decrypt and deleting Sysmon configurations stay Admin-only. See Module permissions.
Why is an Admin refused a BitLocker, Sysmon or Power Management action?
If your license is valid but doesn't include that module, the module's permissions are refused for every role. The 403 response gives the license reason. See Separately licensed modules.
Why are there both agents.view and agents.api.view?
Console reads and REST reads sit at slightly different tiers for a few areas. The *.api.view ids keep the REST read at the Operator tier while the console read stays broader.