Role-Based Access Control (RBAC)
Overview
The Infosys Agent Foundry (IAF) implements a comprehensive Role-Based Access Control (RBAC) system that governs access to all platform resources. The system is organized around departments, where each department has its own set of roles and permissions, providing fine-grained control over who can view, create, update, delete, and execute tools, agents, workflows, and other resources.
Key Principles
Department-scoped access: Users see and interact only with resources in their department (plus shared/public resources).Role-based permissions: Each role within a department has a configurable permission matrix.Hierarchical authority: SuperAdmin > Admin > Developer > User.Cross-department sharing: Resources can be made public or shared with specific departments.Cascade sharing: Sharing an agent or workflow automatically shares its dependent resources.Audit trail: Every action is logged for security and compliance.Notification-driven approvals: New user registrations trigger notification emails to department admins and SuperAdmin for approval.
Architecture
1. Departments
Departments are the top-level organizational unit. Every resource (tools, agents, MCP servers, workflows, knowledge bases, etc.) belongs to a department, and users operate within the context of a department.
- A
default "General" departmentis automatically created on first server startup. - Only the
SuperAdmincan create or delete departments. - Each department maintains its own allowed roles and corresponding permissions.
- When a new department is created, three
default rolesare automatically added:Admin,Developer, andUser— each with pre-configured default permissions. - The
Adminrolecannot be deletedfrom any department.
2. Roles
Roles define the level of access a user has within a department.
| Role | Description |
|---|---|
SuperAdmin |
Platform-wide access. Not tied to any single department. Centralized control over all departments. |
Admin |
Highest authority within a department. Manages users, roles, permissions, groups, and resources within their own department. Cannot be deleted from any department. |
Developer |
Full CRUD and execute access on tools, agents, and workflows within their department. |
User |
Read and execute access on agents and workflows only (by default). |
Note
A member can have only one role per department but may have accounts in multiple departments.
3. Role Hierarchy
SuperAdmin (Level 3) ──── Platform-wide, all permissions
│
├── Admin (Level 2) ──── Department-wide, manages users/roles/permissions
│ │
│ ├── Developer (Level 1) ──── Full CRUD + Execute on tools, agents, workflows
│ │
│ └── User (Level 0) ──── Read + Execute agents/workflows only
│
└── (Can manage any department)
Authentication
1. Registration
- Users register with
email,username, andpassword, anddepartment(or a list of departments). - Upon registration, a
notificationin Admin/SuperAdmin tab and anemailis automatically sent to theAdmin(s)of the selected department(s) and theSuperAdmin. - The user remains in a
pendingstate until an Admin or SuperAdmin approves them. - Admin or SuperAdmin approves the user by
assigning a rolein that department via theNotifications tab. An email will be sent to the user upon approval. Multiple approvalscan be processed at a time — admins can approve several pending users in bulk.- Once approved with a role, the user can log in.
2. Notifications Tab
A dedicated Notifications tab is available for Admin and SuperAdmin users.
- When a new user registers and selects a department, a notification appears in the Notifications tab for the department's Admin(s) and the SuperAdmin.
- From this tab, Admin/SuperAdmin can
approvethe user by assigning them a role in the department. - Multiple pending user approvals can be handled at once.
- SuperAdmin receives notifications for registrations across
all departments. - Admin receives notifications only for their
own department.
3. Login
- Users log in with
email,password, anddepartment. - Department selection is
requiredfor all users except SuperAdmin. - SuperAdmin can log in
with or withoutspecifying a department (department is optional for SuperAdmin). - Users must have
active statusto log in (both globally and within the department).
4. Request Department Access
After logging in, users can request access to additional departments from the Requests tab.
- Any authenticated user can submit a request to join another department.
- The request is sent to the
Admin(s)of the target department and theSuperAdminfor review. - Admins review and approve or reject requests via the
Notifications tab. - Upon approval, the user is assigned a role in the requested department.
5. SuperAdmin Bootstrap (First-Time Setup)
When the platform has no SuperAdmin or no users exist in the database:
- The registration page automatically becomes a
SuperAdmin registration. - The user provides
email,username, andpasswordonly (no department selection). - This user is registered as the
SuperAdminwith platform-wide access. - The default
"General"department is created automatically with default roles: Admin— Full permissions within department + Admin TabDeveloper— Full permissions within departmentUser— Agent read + execute only
6. Password Management
| Feature | Description |
|---|---|
Reset Password |
SuperAdmin can set a temporary password for any user across all departments. Admin can set a temporary password for users within their own department. The temporary password must then be shared with the user so they can log in. |
Forced Password Change |
On the next login with the temporary password, the user is required to set a new password before they can proceed. |
Self-Service Change |
Any authenticated user can change their own password at any time. |
Department Management
1. Default Department
Name:GeneralAuto-createdon server startup.Default roles: Admin, Developer, User (with pre-configured default permissions for each).- The
Adminrole cannot be deleted from any department.
2. Department Operations
| Operation | Who Can Do It | Description |
|---|---|---|
Create Department |
SuperAdmin only | Creates a new department. |
Delete Department |
SuperAdmin only | Deletes a department and its associations. |
List Departments |
Any authenticated user | View all available departments. |
Get Department Details |
Any authenticated user | View specific department information. |
3. Role Management Within Departments
| Operation | Who Can Do It | Description |
|---|---|---|
Add Role to Department |
Admin (own dept) / SuperAdmin | Adds an allowed role (Admin/Developer/User) to a department. Default permissions are auto-assigned. |
Remove Role from Department |
Admin (own dept) / SuperAdmin | Removes a role from a department. Admin role cannot be removed. |
List Department Roles |
Admin (own dept) / SuperAdmin | View all roles configured for a department. |
Warning
The Admin role is a protected default role and cannot be deleted from any department.
4. Default Roles on Department Creation
When a new department is created, the following roles are automatically provisioned with default permissions:
| Role | Auto-Created | Can Be Deleted |
|---|---|---|
Admin |
✅ | ❌ (Protected) |
Developer |
✅ | ✅ |
User |
✅ | ✅ |
5. User Management Within Departments
Admins have three categories of user management (accessible from the Admin Tab):
User Update:
- Update a user's role within the department.
- Reset/set temporary password for users.
- SuperAdmin can operate across all departments.
User Access Management:
Enable/disablelogin access for users.- Admin can disable users
within their own department only. - Users
cannot disable themselves. - Admin
cannot disable SuperAdminusers. - SuperAdmin can disable users
globally(across all departments).
Permissions
1. Permission Matrix
Each role within a department has a configurable permission matrix:
CRUD & Execute Permissions (Resource-Level)
Each of the following permissions can be toggled independently for Tools, Agents, MCP Servers and workflows:
| Permission | Controls |
|---|---|
Read Access |
View resource details |
Add Access |
Create new resources |
Update Access |
Modify existing resources |
Delete Access |
Delete resources |
Execute Access |
Execute/run resources |
Note
MCP Servers and Workflows each have their own separate permission set — they no longer inherit permissions from Tools or Agents. Export Agents access is a standalone toggle permission.
Chat/Execution Toggle Permissions
These control features within the agent chat/execution interface:
| Permission | Description | Dependency |
|---|---|---|
Execution Steps |
View detailed execution steps | Requires Execute Access (Agents) |
Tool Verifier |
Tool verifier toggle in chat | Requires Execute Access (Agents) |
Plan Verifier |
Plan verifier toggle in chat | Requires Execute Access (Agents) |
Online Evaluation |
Online evaluation toggle | Requires Execute Access (Agents) |
Validator |
Validator tools access | Requires Execute Access (Agents) |
File Context |
File context management | Requires Execute Access (Agents) |
Canvas View |
Canvas view in UI | Requires Execute Access (Agents) |
Context |
Context management | Requires Execute Access (Agents) |
Independent Permissions
These permissions are standalone and do not depend on other permissions:
| Permission | Description |
|---|---|
Evaluation Access |
Access to evaluation features |
Vault Access |
Access to secrets/vault management |
Data Connector Access |
Access to data connector features |
Knowledge Base Access |
Access to knowledge base management |
Export Agents Access |
Access to export agent features |
Special Permissions (Implied)
| Permission | Dependent On |
|---|---|
Resource Dashboard |
Requires Add Access (Tools) or Update Access (Tools) |
2. Permission Dependencies
Read Access (Tools) ◄── Add Access (Tools)
◄── Update Access (Tools)
◄── Delete Access (Tools)
◄── Execute Access (Tools)
Read Access (Agents) ◄── Add Access (Agents)
◄── Update Access (Agents)
◄── Delete Access (Agents)
◄── Execute Access (Agents) ◄── Execution Steps
◄── Tool Verifier
◄── Plan Verifier
◄── Online Evaluation
◄── Validator
◄── File Context
◄── Canvas View
◄── Context
Read Access (MCP Servers) ◄── Add Access (MCP Servers)
◄── Update Access (MCP Servers)
◄── Delete Access (MCP Servers)
◄── Execute Access (MCP Servers)
Read Access (Workflows) ◄── Add Access (Workflows)
◄── Update Access (Workflows)
◄── Delete Access (Workflows)
◄── Execute Access (Workflows)
Validation Rule: Read Access is a prerequisite — you cannot grant Add, Update, Delete, or Execute access for a resource type unless Read Access is enabled for that same resource type.
3. Default Permissions by Role
When a role is added to a department, default permissions are auto-assigned:
| Permission | Admin | Developer | User |
|---|---|---|---|
| Read Access | ✅ | ✅ | ❌ |
| Add Access | ✅ | ✅ | ❌ |
| Update Access | ✅ | ✅ | ❌ |
| Delete Access | ✅ | ✅ | ❌ |
| Execute Access | ✅ | ✅ | ❌ |
| Permission | Admin | Developer | User |
|---|---|---|---|
| Read Access | ✅ | ✅ | ✅ |
| Add Access | ✅ | ✅ | ❌ |
| Update Access | ✅ | ✅ | ❌ |
| Delete Access | ✅ | ✅ | ❌ |
| Execute Access | ✅ | ✅ | ✅ |
| Permission | Admin | Developer | User |
|---|---|---|---|
| Read Access | ✅ | ✅ | ❌ |
| Add Access | ✅ | ✅ | ❌ |
| Update Access | ✅ | ✅ | ❌ |
| Delete Access | ✅ | ✅ | ❌ |
| Execute Access | ✅ | ✅ | ❌ |
| Permission | Admin | Developer | User |
|---|---|---|---|
| Read Access | ✅ | ✅ | ✅ |
| Add Access | ✅ | ✅ | ❌ |
| Update Access | ✅ | ✅ | ❌ |
| Delete Access | ✅ | ✅ | ❌ |
| Execute Access | ✅ | ✅ | ✅ |
| Permission | Admin | Developer | User |
|---|---|---|---|
| Execution Steps | ✅ | ✅ | ❌ |
| Tool Verifier | ✅ | ✅ | ❌ |
| Plan Verifier | ✅ | ✅ | ❌ |
| Online Evaluation | ✅ | ✅ | ❌ |
| Validator | ✅ | ✅ | ❌ |
| File Context | ✅ | ✅ | ❌ |
| Canvas View | ✅ | ✅ | ❌ |
| Context | ✅ | ✅ | ❌ |
| Permission | Admin | Developer | User |
|---|---|---|---|
| Evaluation Access | ✅ | ✅ | ❌ |
| Vault Access | ✅ | ✅ | ❌ |
| Data Connector Access | ✅ | ✅ | ❌ |
| Knowledge Base Access | ✅ | ✅ | ❌ |
| Export Agents Access | ✅ | ✅ | ❌ |
4 Managing Permissions
| Operation | Who Can Do It | Restriction |
|---|---|---|
Set permissions |
Admin (own dept) / SuperAdmin | Admin cannot modify Admin role permissions |
View permissions |
Admin (own dept) / SuperAdmin | Admin sees own dept only; SuperAdmin sees all |
Critical Rule
Only SuperAdmin can set or update permissions for the Admin role. Department Admins cannot modify their own role's permissions.
Sharing Across Departments
Resources can be shared with other departments using the Share button available on resource cards (Tools, MCP Servers, Agents, Workflows, Knowledge Bases).
1. Public Access
Marking a resource as Public makes it visible and read-accessible to all departments.
- Available for:
Tools,MCP Servers,Agents,Workflows,Knowledge Bases. - Use the
Share buttonon any resource card and selectMake Public.
2. Department-Specific Sharing
Using the Share button, a resource can be shared with specific departments only.
- Available for:
Tools,MCP Servers,Agents,Workflows,Knowledge Bases. - Use the
Share buttonon any resource card and select the target department(s). PublicandShared with Departmentsaremutually exclusive— a public resource is already accessible to all, so specifying departments is redundant.
3. Sharing Operations
Agent Sharing
| Operation | Description |
|---|---|
Share Agent |
Share an agent with specific departments via the Share button. |
Unshare Agent |
Remove sharing of an agent from a specific department. |
View Sharing Info |
View the current sharing configuration for an agent. |
View Shared Agents |
View agents that have been shared with the current user's department. |
Workflow Sharing
| Operation | Description |
|---|---|
Share Workflow |
Share a workflow with specific departments via the Share button. |
Unshare Workflow |
Remove sharing of a workflow from a specific department. |
View Sharing Info |
View the current sharing configuration for a workflow. |
View Shared Workflows |
View workflows that have been shared with the current user's department. |
Tool & MCP Server Sharing
Sharing is managed via the Share button on Tool and MCP Server cards, allowing you to make them public or share with specific departments.
Knowledge Base Sharing
| Operation | Description |
|---|---|
Share Knowledge Base |
Share a knowledge base with specific departments via the Share button. |
Update KB Sharing |
Update the sharing settings for a knowledge base. |
Upload KB with Sharing |
Upload a knowledge base with sharing options configured. |
Group Management
1. Groups Overview
Groups provide a way to organize users and agents within a department for collaborative access — particularly for shared secrets in the vault.
- Groups are
department-scoped: all members and agents must belong to thesame department. - Only
Adminscan create and manage groups within their own department.
2. Group Operations
Admincan create a group within their department, adding users and agents to it.Admincan update group members, agents, and description, or delete the group entirely.Admincan look up which groups a specific user or agent belongs to.
3. Group Secrets (Vault)
Groups can have their own secrets stored in the vault, accessible only by group members. This is available in the Vault page under the Group Keys tab.
Anyonecan create, update, and delete group secrets (requiresVault Accesspermission).Group memberscan view the secrets of their group (requiresVault Accesspermission).- Users who are not members of the group cannot see or manage its secrets.
Note
All group secret operations require the Vault Access permission to be enabled for the user's role.
Resource Dashboard
The Resource Dashboard provides tool-level data access control — allowing tool creators to define access keys that control which data a user can access when running a tool.
1. Access Key Management (Self-Service)
Available to users with tool create/update permission:
| Operation | Description |
|---|---|
List Access Keys |
View all access keys in the department |
Create Access Key |
Create a new access key |
Get Access Key Details |
View details of a specific access key |
Delete Access Key |
Delete an access key (creator only) |
View Tools Using Key |
View which tools are using a specific access key |
Update Own Access |
Update own allowed/excluded values for an access key |
Key Rules:
- Only the
creatorof an access key can delete it. - Cannot delete an access key if tools are still using it.
- Supports
wildcardaccess:allowed_values: ["*"]with optionalexclusions: ["CEO001"]. - Wildcard (
*) and specific values aremutually exclusive.
2. Resource Allocation (Admin)
Admins can manage access key assignments for users in their department:
| Operation | Description |
|---|---|
List Access Keys |
View all access keys in the admin's department |
View Key Users |
View which users have access to a specific key |
View User's Values |
View a specific user's allowed values for a key |
Update User's Access |
Update a user's access values for a key |
Bulk Manage Users |
Bulk add or remove users from a key |
3. Tool-Level Access Decorators
Tool creators can embed access control directly in tool code using three decorators:
@resource_access(access_key, param_name) — Data-Level Access Control
Checks if the executing user has permission to access specific data values based on their access key assignments.
@resource_access("employee_access", "employee_id")
def get_employee_salary(employee_id: str):
# Only runs if user has access to this employee_id
...
@require_role(*roles) — Role-Based Access Control
Restricts tool execution to users with specific roles.
@require_role("Admin", "Developer")
def admin_only_tool():
# Only runs for Admin or Developer users
...
@authorized_tool — Combined Access Control
Combines both resource access and role-based checks.
@authorized_tool
def combined_access_tool():
# Both role and resource access checks applied
...
These decorators use a ToolUserContext that is automatically injected at runtime, containing:
- user_id, email, role, department, token
- resource_access: Dictionary of access key → allowed values
- resource_exclusions: Dictionary of access key → excluded values
Dynamic UI Visibility
The UI dynamically shows or hides tabs and features based on the logged-in user's permissions.
Resource Cards Visibility
All resource cards (Tools, Agents, MCP Servers, Workflows, Knowledge Bases) are visible to all users on the UI regardless of their permissions. However, users can only view the data inside a resource card when they have Read Access for that resource type. Without Read Access, the card is visible but the detailed content within is restricted.
Tab & Feature Visibility
| UI Element | Required Permission |
|---|---|
Tools tab |
Read Access (Tools) |
Agents tab |
Read Access (Agents) |
Servers tab |
Read Access (MCP Servers) |
Workflows tab |
Read Access (Workflows) |
Export Agents tab |
Export Agents Access |
Evaluation tab |
Evaluation Access |
Vault tab |
Vault Access |
Data Connectors tab |
Data Connector Access |
Knowledge Base tab |
Knowledge Base Access |
Resource Dashboard |
Add Access (Tools) or Update Access (Tools) |
Admin tab |
Admin or SuperAdmin role |
Notifications tab |
Admin or SuperAdmin role |
Requests tab |
Any authenticated user |
Execution Steps (chat) |
Execution Steps |
Tool Verifier (chat) |
Tool Verifier |
Plan Verifier (chat) |
Plan Verifier |
Online Evaluation (chat) |
Online Evaluation |
Validator (chat) |
Validator |
File Context (chat) |
File Context |
Canvas View (chat) |
Canvas View |
Context (chat) |
Context |
Permissions page |
Available in Profile tab for all authenticated users |
Users will only see the tabs and features they have permission for. The permissions page in the Profile tab allows any logged-in user to view their own permission set.
SuperAdmin TTL Cleanup
SuperAdmin has access to a dedicated endpoint for manual data cleanup (TTL) across the platform.
| Feature | Description |
|---|---|
Manual TTL Cleanup |
SuperAdmin can trigger a manual cleanup of old chat histories across all departments. |
Scope |
Cleans up expired/old chat history data for every department in the platform. |
Access |
Available to SuperAdmin only. |
This provides SuperAdmin with direct control over data retention and storage management without waiting for automated TTL expiration processes.
Files & File Context
The platform supports two levels of file storage:
| Level | Scope | Access |
|---|---|---|
Root-level files |
Global | Accessible by all departments |
Department-level files |
Department-scoped | Accessible by department members only |
File context access is controlled by the File Context permission.
Business Rules Summary
SuperAdmin Rules
- When no SuperAdmin exists or no users are in the database, the registration page becomes a SuperAdmin registration (email, username, password only).
- Has platform-wide access — all permission checks return
true. - Can log in without specifying a department.
- Can create/delete departments.
- Can assign any role in any department.
- Can disable users globally.
- Is the only role that can modify Admin role permissions.
- Can manually trigger TTL cleanup of old chat histories across all departments.
- Cannot create or update groups (not tied to any department).
Admin Rules
- Highest authority within their own department.
- Can manage users, roles, and permissions in their department only.
- Cannot modify Admin role permissions — only SuperAdmin can.
- Cannot delete the Admin role from any department.
- Cannot disable SuperAdmin users.
- Cannot disable themselves.
- Receives notifications when new users register for their department.
Registration & Approval Rules
- Users register with email, username, password, and department(s).
- Registration sends a notification to the selected department's Admin(s) and SuperAdmin.
- Admin/SuperAdmin approves users by assigning a role in the department via the Notifications tab.
- Multiple user approvals can be processed at a time.
- Users remain in a pending state until approved.
Department Rules
- When a new department is created, default roles (
Admin,Developer,User) are automatically added. - The
Adminrole is protected and cannot be deleted from any department.
Sharing Rules
- A
Share buttonis available on resource cards (Tools, MCP Servers, Agents, Workflows, Knowledge Bases) for sharing to specific departments or making public. PublicandShared with Departmentsare mutually exclusive.- Shared resources provide read-only access to target departments.
Permission Rules
Readpermission is a prerequisite forCreate,Update,Delete, andExecutepermissions.- Chat toggle permissions (Execution Steps, Tool Verifier, etc.) require
Execute Agentspermission. MCP ServersandWorkflowseach have their own separate permission sets.Export Agentsaccess is a standalone toggle.- Resource Dashboard requires tool create/update permission.
- Vault operations require
Vault Accesspermission. - Resource cards are visible to all users; Read Access controls whether users can view the data inside.
Tool/Agent Update Rules
- Tools and MCP servers bound to an agent cannot be updated — must remove from agent first.
- Agents bound to a workflow cannot be updated independently.