Create custom permission groups
Build groups with specific permissions:Custom permission groups are only available on the Enterprise plan.
- Go to Settings > Permissions.
- Under Permission groups, click Create permission group.
- Enter a name and description.
- Set the group’s permissions. Select organization-level permissions in the Organization, All projects, and AI providers columns. To add project-specific and object-level permissions, click Add project under Projects or Add project group under Project groups.
- Click Create.
Edit or delete a permission group
Edit a permission group’s name, description, permissions, and members in one sheet:Editing a permission group's name, description, and permissions is only available on the Enterprise plan.
- Go to Settings > Permissions.
- Click the group’s row, or click the edit icon () on its row.
- Edit the Name or Description (optional). You can change a built-in group’s description but not its name.
- To change what the group grants, select the Permissions tab. See Set organization permissions. To add or remove members, select the Members tab. See Manage group membership.
- Click Save. Saving applies every change in the sheet at once, including changes to the name, description, permissions, and members.
Manage access to a permission group
Control who can administer a permission group itself: who can view it, edit its permissions, rename it, or grant others access to it. This is separate from the permissions the group grants its members. For the distinction, see Permissions vs. Manage access.Manage access is only available on the Enterprise plan.
- Go to Settings > Permissions.
- Hover over the group’s row, then click the manage access icon ().
- In the dialog that opens, select the tab for who you want to grant access to: Permission groups, Members, or Service accounts.
- Search for the user, group, or service account, then click the edit icon next to it.
- Select the permissions to grant on the group:
- Read: View the group and its permissions.
- Update: Edit the group’s name, description, and permissions.
- Delete: Delete the group.
- Manage access: Grant and revoke access to the group (super-user ability).
- Click Save.
Set organization permissions
Grant organization-level permissions to custom groups:- Go to Settings > Permissions.
- Click the group’s row, or click the edit icon () on its row, then select the Permissions tab.
-
Select organization-level permissions:
- Manage settings: Change organization configuration.
- Invite members: Invite users.
- Remove members: Remove users (organizations must have at least one member).
- Manage access: Grant and revoke permissions (super-user ability).
- Read audit logs: Read organization audit log entries.
-
Select permissions for all projects:
- Read: View all projects and their resources.
- Create: Create projects, and create experiments, logs, and datasets in all projects.
- Update: Modify existing resources in all projects.
- Delete: Remove resources from all projects.
- Manage access: Grant permissions on all projects.
- (Optional) To set project-specific and object-level permissions, click Add project under Projects, select a project, choose its permissions, then click Continue. This lets you set project-specific and object-level permissions directly from the permission group, without opening the Project tab of each project’s Permissions settings.
- Click Save.
Set project permissions
Specify a group’s permissions for a particular project and its objects:- Create a custom permission group.
- In your project, go to Settings > Permissions > Project.
- Search for your group.
- Click the pencil icon next to the group.
- Select project permissions:
- Read: View project and its resources.
- Create: Create experiments, logs, datasets.
- Update: Modify existing resources.
- Delete: Remove resources.
- Manage access: Grant permissions on this project.
- Select object-level permissions for experiments, datasets, logs, prompts, playgrounds, functions, scorers, and classifiers:
- Create: Create the object.
- Read: View the object.
- Update: Modify the object.
- Delete: Remove the object.
- Manage access: Grant permissions on this object.
- Click Save.
Manage project groups
A project group is a named collection of projects. Grant a permission group access to the project group once, and every project in the group inherits that access. Without project groups, giving a team the same access across 100 projects means creating and maintaining 100 separate project-level grants. For how project-group access works, see How permissions work.Project groups are only available on the Enterprise plan.
- Go to Settings > Permissions.
- Under Project groups, click Create project group.
- Enter a Name and an optional Description.
- In the Projects section, select the projects to include. A project can belong to more than one project group.
- Click Create project group.
A project group can contain up to 10,000 projects. A single save can change up to 1,000 project assignments, counting additions and removals together. To assign more projects than that, save in batches.
Set project group permissions
Grant a permission group access to every project in a project group. To give a member or service account project-group access directly, edit their direct permissions.- Go to Settings > Permissions.
- Click the group’s row, or click the edit icon () on its row, then select the Permissions tab.
- Under Project groups, click Add project group.
- Select a project group, then set its permissions:
- Read: View the projects in the group and their resources.
- Create: Create experiments, logs, and datasets in those projects.
- Update: Modify existing resources in those projects.
- Delete: Remove resources from those projects.
- Manage access: Grant permissions on those projects.
- (Optional) Set object-level permissions for experiments, datasets, logs, prompts, playgrounds, functions, scorers, and classifiers. These work the same as they do at the project level, and apply to those objects in every project in the group. See Set project permissions.
- Click Continue, then click Save.
Project group owners
A permission group, member, or service account with every permission on every row of the project group’s permissions is an Owner of that project group. The rows are Project group definition, Member projects, Experiments, Datasets, Logs, Prompts, and Playgrounds. The permissions can come from direct grants or a role, on the project group or inherited from the organization. For example, every permission in the All projects column makes a permission group an Owner of every project group in the organization. The creator of a project group gets every permission on the Project group definition row, so they also need the other rows to be an Owner. Project-group Owners can create service accounts and service tokens without being organization owners. See Use service accounts.Manage group membership
Users can belong to multiple permission groups, either directly or through a group that is itself a member of another group. Their effective permissions are the union of all group permissions. To change the groups a specific user belongs to:- Go to Settings > Members.
- Find the member, then click Manage permissions on their row.
- Select Edit permission groups.
- The dialog lists the groups you can manage under Member of, Member of via inheritance (groups the user joins through another group’s membership), and Not a member of.
- To add: Click + next to a group under Not a member of.
- To remove: Click the x next to a group under Member of.
- Go to Settings > Permissions.
- Click the group’s row, or click the edit icon () on its row, then select the Members tab.
- To add: Search for a user, then click + next to their name under Non-members.
- To remove: Click the x next to a user under Group members.
- Click Save. Membership changes apply only when you save.
Both paths are disabled for permission groups managed by SCIM provisioning. To change membership, edit the mapped group in your identity provider instead. Groups without a SCIM mapping are unaffected.
Set direct permissions
A direct permission is granted to one member or service account instead of through a permission group, so changing a permission group’s permissions or membership doesn’t affect it. To find where a member’s access to a project comes from, see Inheritance labels on the project permissions page. To set a service account’s direct permissions, see Use service accounts.Editing a member's direct permissions is only available on the Enterprise plan.
- Go to Settings > Members.
- Find the member, then click Manage permissions on their row.
- Select Edit direct permissions.
- Select the permissions to grant or remove. The dialog has the same columns and Projects and Project groups sections as a permission group’s Permissions tab. See Set organization permissions. Permissions the member inherits from a permission group are shown but can’t be edited here.
- Click Save.
Use service accounts
A service account is an identity for system integrations, authenticated with a service token that you use like an API key. Unlike a personal API key, which inherits the full permissions of the user who created it, a service account is a separate identity whose permissions come from its own permission group memberships and isn’t tied to any individual. Service tokens also support user impersonation. The service account must have theOwner role in every organization the target user belongs to, and the target user must belong to at least one organization. Braintrust checks the service account’s permissions, not those of the token’s creator.
Use service accounts to:
- Authenticate integrations and automations that shouldn’t depend on one person’s account. A service account keeps working even after team members leave.
- Grant least-privilege, project-scoped access. Because its permissions come from its own groups, you can scope a service account more restrictively than your own access, for example to a single project or a subset of projects. A personal API key can’t be scoped below your own permissions.
- Separate environments. Create distinct tokens for development, staging, and production, each assigned to a permission group scoped to the right projects.
- Go to Settings > Service tokens.
- Click + Service token.
- Enter a service account name.
- Assign permission groups or grant specific permissions. To scope the account to specific projects, assign it to a permission group limited to those projects.
- Click Create.
- Copy and save the auto-generated service token somewhere safe and accessible. For security reasons, you will not be able to view it again. If you lose the service token, you must create a new one.
- Use the token like an API key in SDK or API calls.
- Go to Settings > Service tokens.
- Find the service account, then click the more options menu () on its card.
- Select Edit permission groups.
- The dialog lists the groups you can manage under Member of, Member of via inheritance, and Not a member of.
- To add: Click + next to a group under Not a member of.
- To remove: Click the x next to a group under Member of.
- Go to Settings > Service tokens.
- Find the service account, then click the more options menu () on its card.
- Select Edit direct permissions.
- Select the permissions to grant or remove. Permissions the service account inherits from its permission groups are shown but can’t be edited here. To change them, update the service account’s group membership instead.
- Click Save.
Organization owners and Owners of an active project group in the organization can create service tokens, at Settings > Service tokens in the Braintrust UI or by calling
POST /v1/service_token with a service token whose account has organization-owner permissions or owns an active project group in the organization. Project-group Owners can list or revoke tokens for an account with a permission grant on a project group they own. Creating a token requires all of the account’s permissions in the organization. If you are missing any permissions, the request returns a 403 error. Existing tokens continue to use the account’s permissions after permission changes. User API keys cannot be used to create service tokens. If the calling service token has an expiration, the new token’s expires_in_seconds must be set and can’t exceed the caller’s remaining lifetime. Otherwise, the request returns a 403 error that states the maximum allowed value.Organization owners and Owners of an active project group in the organization can create service accounts by calling PATCH /v1/organization/members. Project-group Owners must provide invite_users.project_group_id for a group they own and cannot assign permission groups. Providing invite_users.project_group_id grants the account read access to that project group. Additional direct permissions can be granted through the existing permissions controls. To also create an initial service token, include token_name (this requires authenticating with a service token whose account has organization-owner permissions or owns an active project group in the organization). If that service token has an expiration, the same limit applies to token_expires_in_seconds. If the initial token is rejected, the request fails and no service accounts are created.For self-hosted deployments, you must configure a service token for the data plane to enable features like data retention. See Data plane manager for more details.
Programmatic access control
To automate the creation of permission groups and their access control rules, use the Braintrust API. See the API reference for groups and permissions.Next steps
- Review the permissions reference to understand what each permission grants.
- Set up automations with service accounts.
- API reference for programmatic access control.