Skip to main content

Role Actions

Convex represents every permission you can grant on a team, project, or deployment as a named role action. Both the built-in team roles (Admin and Developer) and custom roles are defined in terms of the same set of role actions, so this page works as a reference for both:

  • If you're using built-in roles, scan the columns below to see which permissions each role gets.
  • If you're writing a custom role, pick the action names you want to allow or deny.

Conventions

Each table lists role actions for one kind of resource, with a column per built-in role:

  • Team Admin is granted to any team member with the built-in Admin role.
  • Team Developer is granted to any team member with the built-in Developer role. Members assigned custom roles do not receive Developer-level access.
  • Project Admin is granted to any team member who additionally holds the Project Admin role on the specific project that owns the resource. Project Admin sits alongside the member's built-in or custom role; Team Admins implicitly have Project Admin on every project.

Cells use these markers:

  • ✓ - the role grants this action.
  • ✗ - the role does not grant this action.
  • non-prod - the role grants this action only on non-production deployments. Granting the action on a production deployment requires Team Admin or Project Admin on that project.
  • N/A - the action does not apply to that role (e.g. Project Admin on team-scoped actions).

Team

Resource leaf: team:*.

ActionDescriptionTeam AdminTeam Developer
team:updateChange the team name and slug.
team:deleteDelete the team.
team:auditLog:viewView the team's audit log.
team:usage:viewView the team's usage page.

Billing

Resource leaf: billing:*.

ActionDescriptionTeam AdminTeam Developer
billing:paymentMethod:update, billing:contact:update, billing:address:updateChange billing details.
billing:subscription:changePlanCreate, resume, cancel, or change the team's subscription plan.
billing:spendingLimit:updateSet warning and disable spending limits.
billing:viewRead billing details.
billing:invoices:viewRead invoices.

OAuth applications

Resource leaf: oauthApplication:*.

ActionDescriptionTeam AdminTeam Developer
oauthApplication:create, oauthApplication:update, oauthApplication:deleteManage OAuth applications.
oauthApplication:generateClientSecretGenerate a client secret for an app.
oauthApplication:viewView OAuth applications.

SSO

Resource leaf: sso:*.

ActionDescriptionTeam AdminTeam Developer
sso:enable, sso:disable, sso:updateManage the SSO configuration.
sso:viewView the SSO configuration.

Team integrations

Resource leaf: integration:*.

ActionDescriptionTeam AdminTeam Developer
integration:create, integration:update, integration:deleteManage team-level integrations.
integration:viewView team-level integrations.

Members

Resource leaf: member:*.

ActionDescriptionTeam AdminTeam Developer
member:viewView the team's members.
member:invite, member:cancelInvitation, member:removeManage team membership.
member:updateRoleChange a team member's team role.

Custom roles

Resource leaf: customRole:*.

ActionDescriptionTeam AdminTeam Developer
customRole:viewView the team's custom role definitions.

customRole:create, customRole:update, and customRole:delete are reserved for Team Admins and cannot be granted through a custom role.

Projects

Resource leaf: project:* (or project:slug=…, project:id=…). Project Admin applies on the specific project the action targets.

ActionDescriptionTeam AdminTeam DeveloperProject Admin
project:createCreate new projects.N/A
project:viewView projects in the team.
project:update, project:deleteUpdate or delete a project.
project:updateMemberRoleAssign or remove the Project Admin role on a project.
project:transfer, project:receiveTransfer projects between teams.

Default project environment variables

Resource leaf: project:…:defaultEnvironmentVariable:*.

ActionDescriptionTeam AdminTeam DeveloperProject Admin
defaultEnvironmentVariable:viewView default project environment variables.
defaultEnvironmentVariable:create, defaultEnvironmentVariable:update, defaultEnvironmentVariable:deleteManage default project environment variables.

Deployments

Resource leaf: project:…:deployment:* (optionally filtered with selectors like :type=prod).

Most deployment-modifying actions are gated by whether the deployment is production. Team Developers can perform them on dev, preview, and custom deployments via team membership, but production deployments additionally require Team Admin or Project Admin on the owning project. The same split applies to data-plane actions: on a production deployment, a Team Developer gets a read-only deployment identity unless they're also Project Admin on that project.

Lifecycle and configuration

ActionDescriptionTeam AdminTeam DeveloperProject Admin
deployment:viewView deployments.
deployment:createCreate deployments.non-prod
deployment:deleteDelete a deployment.non-prod
deployment:transfer, deployment:receiveTransfer a deployment between projects.non-prod
deployment:updateReference, deployment:updateDashboardEditConfirmation, deployment:updateExpiresAt, deployment:updateSendLogsToClient, deployment:updateClass, deployment:updateIsDefault, deployment:updateTypeUpdate individual deployment settings. Each gates a single field on the deployment update API.non-prod
deployment:customDomain:viewView custom domains.
deployment:customDomain:create, deployment:customDomain:deleteManage custom domains.non-prod
deployment:insights:viewView deployment insights.
deployment:integrations:viewView deployment-scoped integrations.
deployment:integrations:writeModify deployment-scoped integrations.non-prod

Data plane and runtime

These actions run against the deployment itself. On production deployments, a Team Developer who isn't also Project Admin gets a read-only deployment identity.

ActionDescriptionTeam AdminTeam DeveloperProject Admin
deployment:deployPush code to a deployment.non-prod
deployment:pause, deployment:unpausePause or resume function execution.non-prod
deployment:logs:view, deployment:metrics:view, deployment:auditLog:viewRead deployment logs, metrics, and audit log.
deployment:env:viewRead the deployment's environment variables.
deployment:env:writeModify the deployment's environment variables.non-prod
deployment:data:viewRead the deployment's database tables.
deployment:data:writeModify the deployment's database tables.non-prod
deployment:functions:runInternalQueries, deployment:functions:runTestQueryRun internal queries or test queries against the deployment.
deployment:functions:runInternalMutations, deployment:functions:runInternalActionsRun internal mutations or actions against the deployment.non-prod
deployment:functions:actAsUserRun functions as another authenticated user.non-prod

Backups

ActionDescriptionTeam AdminTeam DeveloperProject Admin
deployment:backups:view, deployment:backups:downloadView and download deployment backups.
deployment:backups:create, deployment:backups:import, deployment:backups:deleteCreate, restore, or delete backups.non-prod
deployment:backups:configurePeriodic, deployment:backups:disablePeriodicConfigure or disable periodic backups.non-prod

Access tokens

Access tokens nest under their owning resource. The actions follow the same prefix as the owner; team:token:* for team-scoped tokens, project:token:* for project-scoped, and deployment:token:* for deployment-scoped.

Team-scoped tokens (resource leaf: team:*:token:*)

ActionDescriptionTeam AdminTeam Developer
team:token:create, team:token:update, team:token:delete, team:token:viewManage team-scoped access tokens.

Members can always update or delete tokens they personally created, regardless of their team role.

Project-scoped tokens (resource leaf: project:…:token:*)

ActionDescriptionTeam AdminTeam DeveloperProject Admin
project:token:create, project:token:update, project:token:delete, project:token:viewManage project-scoped access tokens.

Deployment-scoped tokens (resource leaf: project:…:deployment:…:token:*)

ActionDescriptionTeam AdminTeam DeveloperProject Admin
deployment:token:create, deployment:token:update, deployment:token:delete, deployment:token:viewManage deployment-scoped access tokens.non-prod