Skip to main content

Overview

Infisical’s project permissions system follows a role-based access control (RBAC) model built on a subject-action-object framework. At the project level, these permissions determine what actions users/machines can perform on various resources within a specific project. Each permission consists of:
  • Subject: The resource the permission applies to (e.g., secrets, members, settings)
  • Action: The operation that can be performed (e.g., read, create, edit, delete)
Some project-level resources—specifically secrets, secret-folders, secret-imports, dynamic-secrets, secret-syncs, secret-rotation, identity, app-connections, mcp-endpoints, and pam-accounts—support conditional permissions and permission inversion for more granular access control. Conditions allow you to specify criteria (like environment, secret path, tags, app connection ID, identity ID, resource name, or endpoint name) that must be met for the permission to apply.

Available Project Permissions

Below is a comprehensive list of all available project-level subjects and their supported actions.

Core Platform & Access Control

Subject: role

ActionDescription
readView project roles and their assigned permissions
createCreate new project roles
editModify existing project roles
deleteRemove project roles

Subject: member

ActionDescription
readView project members
createAdd new members to the project
editModify member details
deleteRemove members from the project
grant-privilegesChange permission levels of project members

Subject: groups

ActionDescription
readView project groups
createCreate new groups within the project
editModify existing groups
deleteRemove groups from the project
grant-privilegesChange permission levels of project groups

Subject: identity

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView project identitiesidentityId
createAdd new identities to projectidentityId
editModify project identitiesidentityId
deleteRemove identities from projectidentityId
grant-privilegesChange permission levels of project identitiesidentityId

Subject: settings

ActionDescription
readView project settings
createAdd new project configuration settings
editModify project settings
deleteRemove project settings

Subject: environments

ActionDescription
readView project environments
createAdd new environments to the project
editModify existing environments
deleteRemove environments from the project

Subject: tags

ActionDescription
readView project tags
createCreate new tags for organizing resources
editModify existing tags
deleteRemove tags from the project

Subject: project

ActionDescription
editModify workspace settings
deleteDelete the workspace

Subject: ip-allowlist

ActionDescription
readView IP allowlists
createAdd new IP addresses or ranges to allowlists
editModify existing IP allowlist entries
deleteRemove IP addresses from allowlists

Subject: audit-logs

ActionDescription
readView audit logs of actions performed within the project

Subject: integrations

ActionDescription
readView configured integrations
createAdd new third-party integrations
editModify integration settings
deleteRemove integrations

Subject: webhooks

ActionDescription
readView webhook configurations
createAdd new webhooks
editModify webhook endpoints or triggers
deleteRemove webhooks

Subject: service-tokens

ActionDescription
readView service tokens
createCreate new service tokens for API access
editModify token properties
deleteRevoke or remove service tokens

Subject: app-connections

Supports conditions and permission inversion.
ActionDescriptionCondition keys
read-app-connectionsView app connection configurationsconnectionId
create-app-connectionsCreate new app connectionsconnectionId
edit-app-connectionsModify existing app connectionsconnectionId
delete-app-connectionsRemove app connectionsconnectionId
connect-app-connectionsUse app connectionsconnectionId

Secrets Management

Subject: secrets

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView secrets and their values. This action is the equivalent of granting both describeSecret and readValue. The read action is considered legacy. You should use the describeSecret and/or readValue actions instead.environment, secretPath, secretName, secretTags
describeSecretView secret details such as key, path, metadata, tags, and more. If you are using the API, you can pass viewSecretValue: false to the API call to retrieve secrets without their values.environment, secretPath, secretName, secretTags
readValueView the value of a secret. In order to read secret values, the describeSecret action must also be granted.environment, secretPath, secretName, secretTags
createAdd new secrets to the projectenvironment, secretPath, secretName, secretTags
editModify existing secret valuesenvironment, secretPath, secretName, secretTags
deleteRemove secrets from the projectenvironment, secretPath, secretName, secretTags
importSecretImport secretsenvironment
duplicateSecretDuplicate secretsenvironment, secretPath, secretName

Subject: secret-folders

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView secret foldersenvironment, secretPath
createCreate new foldersenvironment, secretPath
editModify folder propertiesenvironment, secretPath
deleteRemove secret foldersenvironment, secretPath

Subject: secret-imports

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView secret importsenvironment, secretPath
createCreate secret importsenvironment, secretPath
editModify secret importsenvironment, secretPath
deleteRemove secret importsenvironment, secretPath

Subject: secret-event-subscriptions

ActionDescription
subscribe-to-creation-eventsSubscribe to events when secrets are created
subscribe-to-update-eventsSubscribe to events when secrets are updated
subscribe-to-deletion-eventsSubscribe to events when secrets are deleted
subscribe-to-import-mutation-eventsSubscribe to events when secrets are modified through imports

Subject: secret-rollback

ActionDescription
readView secret versions and snapshots
createRoll back secrets to snapshots

Subject: commits

ActionDescription
readView commits and changes across folders
perform-rollbackRoll back commits changes and restore folders to previous state

Subject: secret-approval

ActionDescription
readView approval policies and requests
createCreate new approval policies
editModify approval policies
deleteRemove approval policies
allow-change-bypassAllow request creators to merge changes without approval in break-glass situations
allow-access-bypassAllow request creators to access secrets without approval in break-glass situations

Subject: secret-approval-request

ActionDescription
readList and view all secret approval requests in the project
Project admins and users with Secret Approval Requests (secret-approval-request) Read can view all approval requests; others only see requests where they are committer or approver. Secret values in requests follow secrets.readValue for the secret’s environment/path, or reviewer access.

Subject: secret-rotation

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView secret rotation configurationsenvironment, secretPath, connectionId
read-generated-credentialsView the generated credentials of a rotationenvironment, secretPath, connectionId
createSet up secret rotation configurationsenvironment, secretPath, connectionId
editModify secret rotation configurationsenvironment, secretPath, connectionId
rotate-secretsRotate the generated credentials of a rotationenvironment, secretPath, connectionId
deleteRemove secret rotation configurationsenvironment, secretPath, connectionId

Subject: secret-syncs

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView secret synchronization configurationsenvironment, secretPath, connectionId
createCreate new sync configurationsenvironment, secretPath, connectionId
editModify existing sync settingsenvironment, secretPath, connectionId
deleteRemove sync configurationsenvironment, secretPath, connectionId
sync-secretsExecute synchronization of secrets between systemsenvironment, secretPath, connectionId
import-secretsImport secrets from sync sourcesenvironment, secretPath, connectionId
remove-secretsRemove secrets from sync destinationsenvironment, secretPath, connectionId

Subject: dynamic-secrets

Supports conditions and permission inversion.
ActionDescriptionCondition keys
read-root-credentialView dynamic secret configurationsenvironment, secretPath, metadata
create-root-credentialCreate dynamic secretsenvironment, secretPath, metadata
edit-root-credentialEdit dynamic secretsenvironment, secretPath, metadata
delete-root-credentialRemove dynamic secretsenvironment, secretPath, metadata
leaseCreate dynamic secret leasesenvironment, secretPath, metadata

Key Management Service (KMS)

Subject: kms

ActionDescription
editModify project KMS settings

Subject: cmek

ActionDescription
readView Customer-Managed Encryption Keys
createAdd new encryption keys
editModify key properties
deleteRemove encryption keys
encryptUse keys for encryption operations
decryptUse keys for decryption operations
signUse keys for signing operations
verifyUse keys for signature verification operations
export-private-keyExport key material (private key for asymmetric, secret key for symmetric)

Public Key Infrastructure (PKI)

Subject: certificate-authorities

ActionDescription
readView certificate authorities
createCreate new certificate authorities
editModify CA configurations
deleteRemove certificate authorities

Subject: certificates

ActionDescription
readView certificates
read-private-keyRead certificate private key
createIssue new certificates
deleteRevoke or remove certificates

Subject: certificate-profiles

ActionDescription
readView certificate profiles
createCreate new certificate profiles
editModify profile configurations
deleteRemove certificate profiles
issue-certIssue new certificates

Subject: certificate-policies

ActionDescription
readView certificate policies
createCreate new certificate policies
editModify policy configurations
deleteRemove certificate policies

Subject: pki-alerts

ActionDescription
readView PKI alert configurations
createCreate new alerts for certificate expiry or other PKI events
editModify alert settings
deleteRemove PKI alerts

Subject: pki-collections

ActionDescription
readView PKI resource collections
createCreate new collections for organizing PKI resources
editModify collection properties
deleteRemove PKI collections

Subject: pki-discovery

ActionDescription
readView PKI discovery configurations
createCreate new discovery jobs
editModify discovery job configurations
deleteRemove discovery jobs
run-scanTrigger discovery scans

Subject: pki-certificate-installations

ActionDescription
readView certificate installations
editModify certificate installations
deleteRemove certificate installations

Secret Scanning

Subject: secret-scanning-data-sources

ActionDescription
read-data-sourcesView Data Sources
create-data-sourcesCreate new Data Sources
edit-data-sourcesModify Data Sources
delete-data-sourcesRemove Data Sources
read-data-source-resourcesView Data Source Resources
read-data-source-scansView Data Source Scans
trigger-data-source-scansTrigger Data Source Secret Scans

Subject: secret-scanning-findings

ActionDescription
read-findingsView Secret Scanning Findings
update-findingsUpdate Secret Scanning Findings

Subject: secret-scanning-configs

ActionDescription
read-configsView Secret Scanning Project Configuration
update-configsUpdate Secret Scanning Project Configuration

Agent Sentinel

Subject: mcp-endpoints

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView MCP endpointsname
createCreate new MCP endpointsname
editModify MCP endpoint configurationsname
deleteRemove MCP endpointsname
connectConnect AI clients to MCP endpointsname

Privileged Access Management (PAM)

Subject: pam-accounts

Supports conditions and permission inversion.
ActionDescriptionCondition keys
readView PAM accounts the identity is allowed to useresourceName, accountName
accessRequest or use access to PAM accountsresourceName, accountName

Condition Operators

When defining conditions for permissions, you can use the following operators to match values:
OperatorDescriptionType
$eqEquals (exact string match)string
$neNot equalsstring
$inIn array (matches any value in list)string[]
$globGlob pattern matching (supports * and ? wildcards)string
$elemMatchElement match for nested objects/arraysobject

Condition Keys Reference

The following condition keys can be used to restrict permissions. Each key is available only for specific subjects as indicated in the tables above.
Condition keyDescriptionType
environmentThe environment slug (e.g., dev, staging, prod)string
secretPathThe path within an environment (e.g., /app/config)string
secretNameThe name of a specific secretstring
secretTagsTags associated with secretsstring[]
metadataKey-value metadata pairs (use with $elemMatch)object
connectionIdConnection identifier for rotations/syncsstring
identityIdMachine identity identifierstring
nameResource namestring
resourceNamePAM resource namestring
accountNamePAM account namestring

Usage Examples

These permission objects are used when creating or updating custom project roles via the API. Each permission in the permissions array defines what actions a role can perform on which resources.

Creating a role with production-only secret access

Create a custom role that can only read secrets in the production environment:
curl --request POST \
  --url https://app.infisical.com/api/v1/projects/{projectId}/roles \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "slug": "production-reader",
    "name": "Production Reader",
    "permissions": [
      {
        "subject": "secrets",
        "action": ["describeSecret", "readValue"],
        "conditions": {
          "environment": { "$eq": "production" }
        }
      }
    ]
  }'

Creating a role with path-scoped access

Create a role that can only manage secrets under /app/config/:
curl --request POST \
  --url https://app.infisical.com/api/v1/projects/{projectId}/roles \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "slug": "config-manager",
    "name": "Config Manager",
    "permissions": [
      {
        "subject": "secrets",
        "action": ["describeSecret", "readValue", "edit"],
        "conditions": {
          "secretPath": { "$glob": "/app/config/**" }
        }
      }
    ]
  }'

Creating a role for PAM access to specific resources

Create a role that grants PAM access only to specific database resources:
curl --request POST \
  --url https://app.infisical.com/api/v1/projects/{projectId}/roles \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "slug": "db-readonly-access",
    "name": "Database Read-Only Access",
    "permissions": [
      {
        "subject": "pam-accounts",
        "action": ["read", "access"],
        "conditions": {
          "resourceName": { "$in": ["prod-db-1", "prod-db-2"] },
          "accountName": { "$glob": "readonly-*" }
        }
      }
    ]
  }'