Access Control

12 min read

Archestra uses a role-based access control (RBAC) system to manage user permissions. This system provides both predefined roles for common use cases and the flexibility to create custom roles with specific permission combinations.

Permissions in Archestra are defined using a resource:action format, where:

  • Resource: The type of object or feature being accessed (e.g., agent, mcpGateway, llmProxy)
  • Action: The operation being performed (create, read, update, delete, admin)

For example, the permission agent:create allows creating new agents, mcpGateway:update allows updating MCP gateways, whereas llmProxy:read would allow reading LLM proxies.

Predefined Roles

The following roles are built into Archestra and cannot be modified or deleted:

Admin

Full access to all resources including user management, roles, and platform settings

The admin role has all permissions on every resource.

Editor

Full access to core resources and settings, but cannot manage users, roles, or identity providers

ResourceActions
Agentsread, create, update, delete, team-admin
Agent Triggersread, create, update, delete
Scheduled Tasksread, create, update, delete
LLM Proxiesread, create, update, delete, team-admin
LLM Provider API Keysread, create, update, delete
LLM Virtual Keysread, create, update, delete
LLM Modelsread, update
LLM Limitsread, create, update, delete
Optimization Rulesread, create, update, delete
LLM Costsread
MCP Gatewaysread, create, update, delete, team-admin
Tools & Policiesread, create, update, delete
MCP Registryread, create, update, delete
MCP Server Installationsread, create, update, delete
MCP Server Installation Requestsread, create, update, delete
Knowledge Sourcesread, create, update, delete, query
Chatsread, create, update, delete
Logsread
API Keysread, create, delete
LLM Settingsread, update
Knowledge Settingsread, update
Usersread
Invitationsread
Rolesread
Teamsread
Identity Providersread
Secretsread
Organization Settingsread, update
Chat Agent Pickerenable
Chat Provider Settingsenable
Chat Expand Tool Callsenable

Member

Can manage agents, tools, and chat, with read-only access to most other resources

ResourceActions
Agentsread, create, update, delete
Scheduled Tasksread, create, update, delete
LLM Proxiesread, create, update, delete
LLM Provider API Keysread
LLM Virtual Keysread
LLM Modelsread
MCP Gatewaysread, create, update, delete
Tools & Policiesread
MCP Registryread
MCP Server Installationsread, create, delete
MCP Server Installation Requestsread, create, update
Knowledge Sourcesread, query
Chatsread, create, update, delete
API Keysread, create, delete
Teamsread
Simple Viewenable
Chat Expand Tool Callsenable

Custom Roles

Users with ac:create permission can create custom roles by selecting specific permission combinations. Custom roles allow fine-grained access control tailored to your needs. Note that you can only grant permissions that you already possess — this prevents privilege escalation.

Available Permissions

The following table lists all available permissions that can be assigned to custom roles:

PermissionDescription
ac:readView custom roles and their permissions
ac:createCreate new custom roles
ac:updateModify custom role permissions
ac:deleteDelete custom roles
agent:readView and list agents
agent:createCreate new agents
agent:updateModify agent configuration and settings
agent:deleteDelete agents
agent:team-adminManage team assignments for agents
agent:adminFull administrative control over all agents, bypassing team restrictions
agentSettings:readView agent settings (default model, default agent, security engine, file uploads)
agentSettings:updateModify agent settings (default model, default agent, security engine, file uploads)
agentTrigger:readView agent trigger configurations (Slack, MS Teams, email)
agentTrigger:createSet up new agent triggers
agentTrigger:updateModify agent trigger configurations
agentTrigger:deleteRemove agent triggers
apiKey:readView API keys
apiKey:createCreate API keys
apiKey:deleteDelete API keys
chat:readView and access chat conversations
chat:createStart new chat conversations
chat:updateEdit chat messages and conversation settings
chat:deleteDelete chat conversations
chatAgentPicker:enableShow agent picker in chat
chatExpandToolCalls:enableAllow expanding tool call details in chat
chatProviderSettings:enableShow model and API key selectors in chat
identityProvider:readView identity provider configurations (SSO)
identityProvider:createSet up new identity providers
identityProvider:updateModify identity provider settings
identityProvider:deleteRemove identity providers
invitation:createSend invitations to new users
invitation:cancelCancel pending invitations
knowledgeSettings:readView knowledge settings (embedding and reranking models)
knowledgeSettings:updateModify knowledge settings (embedding and reranking models)
knowledgeSource:readView knowledge bases and connectors
knowledgeSource:createCreate knowledge bases and connectors
knowledgeSource:updateModify knowledge bases and connectors
knowledgeSource:deleteDelete knowledge bases and connectors
knowledgeSource:queryQuery knowledge sources for information retrieval
knowledgeSource:adminView all knowledge bases and connectors, bypassing visibility restrictions
llmCost:readView LLM usage cost statistics and analytics
llmLimit:readView token usage limits
llmLimit:createCreate new usage limits
llmLimit:updateModify existing usage limits
llmLimit:deleteRemove usage limits
llmModel:readView synced LLM models and capabilities
llmModel:updateModify LLM model pricing and modality settings
llmProviderApiKey:readView LLM provider API keys
llmProviderApiKey:createAdd new LLM provider API keys
llmProviderApiKey:updateModify LLM provider API key configuration and visibility
llmProviderApiKey:deleteRemove LLM provider API keys
llmProviderApiKey:adminManage all LLM provider API keys, including org-wide keys
llmProxy:readView and list LLM proxies
llmProxy:createCreate new LLM proxies
llmProxy:updateModify LLM proxy configuration
llmProxy:deleteDelete LLM proxies
llmProxy:team-adminManage team assignments for LLM proxies
llmProxy:adminFull administrative control over all LLM proxies, bypassing team restrictions
llmSettings:readView LLM settings (compression, cleanup interval)
llmSettings:updateModify LLM settings
llmVirtualKey:readView LLM virtual keys
llmVirtualKey:createCreate LLM virtual keys
llmVirtualKey:updateModify LLM virtual keys and their visibility
llmVirtualKey:deleteDelete LLM virtual keys
llmVirtualKey:adminManage all LLM virtual keys and view every scope
log:readView LLM proxy and MCP tool call logs
mcpGateway:readView and list MCP gateways
mcpGateway:createCreate new MCP gateways
mcpGateway:updateModify MCP gateway configuration
mcpGateway:deleteDelete MCP gateways
mcpGateway:team-adminManage team assignments for MCP gateways
mcpGateway:adminFull administrative control over all MCP gateways, bypassing team restrictions
mcpRegistry:readBrowse the MCP server registry
mcpRegistry:createAdd servers to the MCP registry
mcpRegistry:updateModify MCP registry entries
mcpRegistry:deleteRemove servers from the MCP registry
mcpServerInstallation:readView installed MCP servers and their status
mcpServerInstallation:createInstall MCP servers from the registry
mcpServerInstallation:updateModify installed MCP server configuration
mcpServerInstallation:deleteUninstall MCP servers
mcpServerInstallation:adminApprove or manage all MCP server installations
mcpServerInstallationRequest:readView MCP server installation requests
mcpServerInstallationRequest:createSubmit requests to install MCP servers
mcpServerInstallationRequest:updateAdd notes to installation requests
mcpServerInstallationRequest:deleteDelete installation requests
mcpServerInstallationRequest:adminApprove or decline installation requests
member:readView organization members and their roles
member:createAdd new members to the organization
member:updateChange member roles and settings
member:deleteRemove members from the organization
optimizationRule:readView optimization rules
optimizationRule:createCreate new optimization rules
optimizationRule:updateModify optimization rules
optimizationRule:deleteRemove optimization rules
organizationSettings:readView organization settings (appearance, authentication, etc)
organizationSettings:updateCustomize organization appearance, authentication, etc
scheduledTask:readView scheduled tasks and their run history
scheduledTask:createCreate new scheduled tasks and trigger runs
scheduledTask:updateModify scheduled task configuration
scheduledTask:deleteDelete scheduled tasks
scheduledTask:adminView and manage all scheduled tasks, not just your own
secret:readView secrets manager configuration
secret:updateModify secrets manager settings and test connectivity
simpleView:enableSidebar is collapsed by default on page load
team:readView teams and their members
team:createCreate new teams
team:updateModify team settings
team:deleteDelete teams
team:adminManage team membership (add/remove members)
toolPolicy:readView tools, tool invocation policies, and trusted data policies
toolPolicy:createRegister tools and create security policies
toolPolicy:updateModify tools, tool configuration, and security policies
toolPolicy:deleteRemove tools and security policies

Scoped Resources

Some resources use a two-step authorization model:

  1. RBAC grants a base action such as read, create, update, or delete
  2. Runtime scope rules further restrict which records a user can see or modify

The most common scopes are:

  • personal: owned by one user
  • team: shared with one or more teams
  • org: shared across the organization

The elevated actions :admin and :team-admin are not global shortcuts with identical meaning on every resource. Their effect depends on the resource's runtime authorization rules.

Agents, MCP Gateways, and LLM Proxies

agent, mcpGateway, and llmProxy share the same scope model:

  • personal: the author can manage their own records
  • team: requires <resource>:team-admin and membership in at least one assigned team
  • org: requires <resource>:admin

Examples:

  • agent:delete alone does not allow deleting every agent
  • agent:team-admin allows managing team-scoped agents only in teams the user belongs to
  • agent:admin bypasses those scope restrictions

Visibility-Scoped Credentials

llmProviderApiKey and llmVirtualKey also support personal, team, and org scope, but they use different elevated permissions:

  • Personal records are limited to their owner
  • Team records require membership in the selected team, with some routes also allowing team:admin
  • Organization-wide records require the resource-specific admin permission such as llmProviderApiKey:admin or llmVirtualKey:admin

These resources do not use :team-admin.

MCP Registry And Installation Records

Some MCP-related resources also apply runtime scope checks in addition to RBAC, but their rules differ from agents, MCP gateways, and LLM proxies:

  • Internal MCP catalog items can be personal, team, or org
  • Organization-wide catalog items require mcpServerInstallation:admin
  • Team MCP server installations depend on team membership, with broader control for users who have team:admin

When designing custom roles, treat the permission matrix as the first gate and the resource's scope rules as the second gate.

Best Practices

Principle of Least Privilege

Grant users only the minimum permissions necessary for their role. Start with the "Member" role and add specific permissions as needed.

Team-Based Organization

Combine roles with team-based access control for fine-grained resource access:

  1. Create teams for different groups (e.g., "Data Scientists", "Developers")
  2. Assign Agents, MCP Gateways, LLM Proxies, and MCP Servers to specific teams
  3. Add users to teams based on their role and responsibilities

Default Team

New users are automatically added to the "Default Team" when they accept an invitation. This ensures all users have immediate access to Archestra resources assigned to this team.

Team Access Control Rules

For MCP Gateways, LLM Proxies, and Agents:

  • Users can only see agents assigned to teams they belong to
  • Exception: Users with agent:admin permission can see all agents
  • Exception: Agents with no team assignment are visible to all users

For MCP Servers:

  • Users can only access MCP servers assigned to teams they belong to
  • Exception: Users with mcpServer:admin permission can access all MCP servers
  • Exception: MCP servers with no team assignment are accessible to all users

Associated Artifacts:

Team-based access extends to related resources like interaction logs, policies, and tool assignments. Members can only view these artifacts for agents and MCP servers they have access to.

Regular Review

Periodically review custom roles and team membership assignments to ensure they align with current needs and security requirements.

Role Naming

Use clear, descriptive names for custom roles that indicate their purpose (e.g., "Agent-Manager", "Read-Only-Analyst", "Tool-Developer").