Permissions
A permission enables an identity or an access token to take the action that corresponds to the permission. The same permission governs the action wherever you take it, in the web app or through the API and the CLI.
- A member of your organization holds permissions through the groups they belong to.
- A service account holds a set of permissions, and its access tokens inherit them.
- A personal access token holds a set of permissions derived from the ones you hold.
Permission keys
Every permission is identified by a resource:action key, such as run:create or vault:unlock.
Available permissions
The last two columns name the surfaces each permission governs.
| Resource | Key | What it allows | API/CLI | Web |
|---|---|---|---|---|
| Organization | org:manage | Full organization administration. Manage members, billing, settings, and organization-managed infrastructure. | ❌ | ✅ |
| Groups | group:create | Create new groups. | ❌ | ✅ |
group:manage | Edit a group's permissions, members, and nesting, and delete the group. A manager can add themselves to the group, so this also grants everything the group grants. | ❌ | ✅ | |
| Service accounts | service_account:create | Create new service accounts. | ❌ | ✅ |
service_account:manage | Edit a service account's permissions, issue its access tokens, and attach it to a vault. | ❌ | ✅ | |
| Runs | run:create | Trigger new runs. | ✅ | ❌ |
run:manage | Cancel and re-run existing runs. | ❌ | ✅ | |
run:read | View run details, logs, and task outputs. | ✅ | ✅ | |
| Cron schedules | cron:run | Manually trigger a cron schedule. | ❌ | ✅ |
cron:manage | Pause, resume, and snooze cron schedules. | ❌ | ✅ | |
| Dispatches | dispatch:run | Trigger a dispatch. | ✅ | ✅ |
dispatch:manage | Archive dispatch definitions. | ❌ | ✅ | |
| Concurrency pools | concurrency_pool:manage | Pause and resume concurrency pools and abandon their leases. | ❌ | ✅ |
| Vaults | vault:create | Create new vaults. | ✅ | ✅ |
vault:write | ✅ | ✅ | ||
vault:create_secret | Add secrets to the vault. | ✅ | ✅ | |
vault:update_secret | Edit, rotate, and remove secrets in the vault. | ✅ | ✅ | |
vault:create_var | Add vars to the vault. | ✅ | ✅ | |
vault:update_var | Edit and remove vars in the vault. | ✅ | ✅ | |
vault:unlock | Unlock the vault to access secrets in a run. | ✅ | ❌ | |
vault:approve_access | Approve another user's request to access the vault. | ❌ | ✅ | |
vault:manage | Manage vault settings and delete the vault. | ✅ | ✅ | |
| Images | image:access | Push container images built in RWX to
a registry with | ✅ | ❌ |
| Organization Notifications | notification:create | Create organization notification subscriptions. | ❌ | ✅ |
notification:manage | Edit and delete organization notification subscriptions. | ❌ | ✅ | |
| Webhooks | webhook:manage | Pause, resume, and delete webhooks and manage their tokens. | ❌ | ✅ |
| VCS integrations | vcs_integration:create | Connect new version control integrations. | ❌ | ✅ |
vcs_integration:manage | Configure and disconnect version control integrations. | ❌ | ✅ | |
| Captain | captain:run | Submit test results to Captain. | ✅ | ❌ |
| Tests | tests:manage | Manage test suite settings: branches, quarantine policy, visibility, and file timings. | ❌ | ✅ |
tests:quarantine | Quarantine and unquarantine flaky tests. | ❌ | ✅ | |
| Billing | billing:manage | Open the billing portal to read invoices and manage payment methods. | ❌ | ✅ |
Coarser permissions grant finer ones
A coarse permission automatically grants the finer permissions it implies. For example:
run:managegrantsrun:create.run:creategrantsrun:read, andrun:readgrantsrun:public_read.cron:managegrantscron:run.dispatch:managegrantsdispatch:run.tests:managegrantstests:quarantine.vault:writegrantsvault:create_secret,vault:update_secret,vault:create_var, andvault:update_var.
vault:manage does not grant vault:create. A holder can reconfigure and delete existing vaults without being able to add new ones.
A permission never grants a permission on another resource. org:manage is not a catch-all: a member of the admin group holds each resource's managerial permission directly.
Scoping permissions to specific resources
Some permissions can be applied to all instances of a resource or only to specific ones:
- Every vault permission except
vault:create. group:manage, for specific groups.service_account:manage, for specific service accounts.notification:manage, for specific notifications.vcs_integration:manage, for specific integrations.
A single holder can have different permissions across different vaults.
You can only grant permissions you hold
What you grant is limited to the permissions you have yourself. For a scoped permission, you can only target the resource instances you hold that permission on.
Two permissions carry the ability to grant others:
vault:manageon a vault lets you grantvault:unlockandvault:approve_accesson that vault without holding them.group:managecan only be granted by someone who holds everything the group grants. See groups.