Skip to main content
Version: v1.7.3-14 ๐Ÿšง

Permissions and roles matrix

This page is the complete reference for the RBAC system in Enterprise h2oGPTe. It covers built-in roles, the full permissions catalog, user groups, per-role configuration overrides, and programmatic management through the REST API and Python SDK.

For step-by-step instructions on creating roles, assigning them to users, and mapping IdP roles through the System Dashboard UI, see Roles and Permissions.

note

The System Dashboard is the administration area in Enterprise h2oGPTe where administrators manage system-wide settings, roles, collections, and monitoring. It is also referred to as the Admin Center in some contexts.

Choosing a management surfaceโ€‹

Enterprise h2oGPTe provides role and permission management through three interfaces. Use the following table to choose the right one for your task:

InterfaceBest for
System Dashboard UIAd-hoc role assignment, exploration, and IdP role mapping.
REST APIScripting, Terraform/IaC pipelines, and bulk role provisioning.
Python SDKEmbedding role management in Python applications and tooling.

Built-in rolesโ€‹

Enterprise h2oGPTe includes five built-in roles. Each role is preconfigured with a set of permissions appropriate for its intended audience. You can use these as-is or create custom roles based on your organization's access requirements.

RoleDescriptionIntended audience
adminFull system access with all permissions enabled.System administrators
defaultDeveloper-level access. Can create, share, and manage own resources.Power users and developers
userBusiness user access. Can use features but has limited sharing and administrative capabilities.End users
viewerRead-only access to shared resources.Stakeholders and auditors
guestMinimal access for unauthenticated users. Disabled by default.Public or anonymous visitors
note

The guest role is disabled by default. Guest access must be explicitly enabled during deployment through infrastructure configuration.

Permissionsโ€‹

Permissions are organized into 16 categories. Each permission can be assigned to any role through the System Dashboard UI or the REST API. The following tables show the default permission assignments for each built-in role.

Column key: Yes = granted by default ยท No = not granted by default

Admin permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Show admin centerh2ogpte/display/admin_centerYesNoNoNoNo
Manage rolesh2ogpte/roles/manageYesNoNoNoNo
Impersonate usersh2ogpte/display/impersonate_usersYesYesNoNoNo
Manage collectionsh2ogpte/admin_center/manage_collectionsYesNoNoNoNo
Manage autosync jobsh2ogpte/admin_center/manage_autosync_connector_jobsYesNoNoNoNo
Worker statush2ogpte/admin_center/worker_statusYesNoNoNoNo
Live logsh2ogpte/admin_center/live_logsYesNoNoNoNo
System notificationsh2ogpte/admin_center/system_notificationsYesNoNoNoNo
Manage secretsh2ogpte/secrets/manageYesNoNoNoNo
Read secretsh2ogpte/secrets/readYesYesYesNoNo
Allow device pairingh2ogpte/display/device_pairingYesYesYesYesNo
Manage Slack integrationsh2ogpte/integration/slack/manageYesNoNoNoNo
Link connectorsh2ogpte/display/link_connectorsYesYesYesNoNo

Display permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Show private buttonh2ogpte/display/private_buttonYesNoNoNoNo
Show extractorsh2ogpte/display/extractorsYesYesNoNoNo
Show models pageh2ogpte/display/models_pageYesYesNoNoYes
Display notificationsh2ogpte/display/notificationsYesYesNoNoNo
Run self-testsh2ogpte/display/run_self_testsYesYesNoNoNo
Developer settingsh2ogpte/display/developer_settingsYesYesNoNoYes
Recent collectionsh2ogpte/display/recent_collectionsYesYesYesNoYes
Configure agentsh2ogpte/display/configure_agentsYesYesNoNoYes
Show eval pageh2ogpte/display/evalYesYesNoNoNo
Chat insightsh2ogpte/display/chat_insightsYesYesYesNoNo

Collection permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Add collectionsh2ogpte/collection/addYesYesNoNoYes
Edit collectionsh2ogpte/collection/editYesYesNoNoYes
Delete collectionsh2ogpte/collection/deleteYesYesNoNoYes
Evaluate collectionsh2ogpte/collection/evalYesYesNoNoNo
Share collectionsh2ogpte/collection/shareYesYesNoNoNo
Make collection publich2ogpte/collection/publicYesYesNoNoNo
Import collectionh2ogpte/collection/importYesYesYesNoYes

Chat permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Add chatsh2ogpte/chat/addYesYesYesNoYes
Delete chatsh2ogpte/chat/deleteYesYesYesNoYes
Create general chath2ogpte/chat/create_generalYesYesYesNoYes
Add documents to chath2ogpte/chat/add_documentsYesYesYesNoYes
Evaluate chatsh2ogpte/chat/evalYesYesNoNoNo
Share chat session publiclyh2ogpte/chat/share_publicYesNoNoNoNo
Share chat session privatelyh2ogpte/chat/share_privateYesYesYesNoNo
Include artifacts in public sharesh2ogpte/chat/share_artifacts_publicYesNoNoNoNo
Include artifacts in private sharesh2ogpte/chat/share_artifacts_privateYesYesYesNoNo
Submit chat feedbackh2ogpte/chat/submit_feedbackYesYesYesNoNo
Manage agent filesh2ogpte/chat/manage_agent_filesYesYesNoNoYes

Document permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Add documentsh2ogpte/document/addYesYesYesNoYes
Delete documentsh2ogpte/document/deleteYesYesYesNoYes
Download documentsh2ogpte/document/downloadYesYesYesNoYes

Prompt template permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Edit prompt templatesh2ogpte/prompt_templates/editYesYesNoNoNo
Delete prompt templatesh2ogpte/prompt_templates/deleteYesYesNoNoNo
Share prompt templatesh2ogpte/prompt_templates/shareYesYesNoNoNo
Make templates publich2ogpte/prompt_templates/publicYesYesNoNoNo
Manage prompt templatesh2ogpte/prompt_templates/manageYesNoNoNoNo

Agent permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Manage agent keysh2ogpte/agent/manage_agent_keysYesYesNoNoYes
Manage tool-key associationh2ogpte/agent/manage_agent_tool_key_associationYesYesNoNoYes
Add agent keysh2ogpte/agent/add_agent_keysYesYesNoNoYes

Custom agent permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Manage custom agentsh2ogpte/agent/manage_custom_agentYesYesYesNoNo
Delete custom agentsh2ogpte/agent/delete_custom_agentYesYesYesNoNo

Custom agent tool permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Manage custom toolsh2ogpte/agent/manage_custom_toolYesYesYesNoNo
Delete custom toolsh2ogpte/agent/delete_custom_toolYesYesYesNoNo
Use built-in MCPsh2ogpte/agent/use_builtin_mcpsYesYesYesNoNo

API key permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Create collection-scoped keysh2ogpte/api_key/createYesYesYesNoNo
Create global keysh2ogpte/api_key/create_globalYesYesYesNoNo
note

api_key/create_global depends on api_key/create. Revoking api_key/create from a role also prevents global key creation.

Configure API key permissions to match your organization's least-privilege requirements. By default, both permissions are enabled for the default and user roles. Restrict these permissions for roles that should not generate API keys.

Data connector permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
File systemh2ogpte/connectors/file_systemYesYesNoNoNo
Web crawlh2ogpte/connectors/web_crawlYesYesNoNoYes
Amazon S3h2ogpte/connectors/s3YesYesNoNoYes
Azure Blob Storageh2ogpte/connectors/azure_blob_storeYesYesNoNoYes
Google Cloud Storageh2ogpte/connectors/google_cloud_storageYesYesNoNoYes
SharePoint Onlineh2ogpte/connectors/sharepoint_onlineYesYesNoNoYes
SharePoint On-Premiseh2ogpte/connectors/sharepoint_on_premiseYesYesNoNoYes
Confluenceh2ogpte/connectors/confluenceYesYesNoNoYes

Document AI permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Add extractorsh2ogpte/extractors/addYesYesNoNoNo
Edit extractorsh2ogpte/extractors/editYesYesNoNoNo
Delete extractorsh2ogpte/extractors/deleteYesYesNoNoNo
Share extractorsh2ogpte/extractors/shareYesYesNoNoNo
Make extractors publich2ogpte/extractors/publicYesYesNoNoNo

Memory block permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Display memory blocksh2ogpte/display/memory_blocksYesYesYesNoYes
Create memory blocksh2ogpte/memory_block/createYesYesYesNoYes
Edit memory blocksh2ogpte/memory_block/editYesYesYesNoYes
Delete memory blocksh2ogpte/memory_block/deleteYesYesYesNoYes
Share memory blocksh2ogpte/memory_block/shareYesYesYesNoNo
Make memory blocks publich2ogpte/memory_block/publicYesYesYesNoNo

Scheduled task permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Display scheduled tasksh2ogpte/display/scheduled_tasksYesYesYesNoNo
Create scheduled tasksh2ogpte/scheduled_task/createYesYesYesNoNo
Edit scheduled tasksh2ogpte/scheduled_task/editYesYesYesNoNo
Delete scheduled tasksh2ogpte/scheduled_task/deleteYesYesYesNoNo
Manage scheduled tasksh2ogpte/scheduled_task/manageYesNoNoNoNo

AI assistant permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Display AI assistantsh2ogpte/display/ai_assistantsYesYesYesNoNo
Create AI assistantsh2ogpte/ai_assistant/createYesYesYesNoNo
Edit AI assistantsh2ogpte/ai_assistant/editYesYesYesNoNo
Delete AI assistantsh2ogpte/ai_assistant/deleteYesYesYesNoNo
Share AI assistantsh2ogpte/ai_assistant/shareYesYesYesNoNo
Make AI assistants publich2ogpte/ai_assistant/publicYesYesYesNoNo

Forum permissionsโ€‹

PermissionIdentifieradmindefaultuserviewerguest
Display forumsh2ogpte/display/forumsYesYesYesNoNo
Create forumsh2ogpte/forum/createYesYesYesNoNo
Edit forumsh2ogpte/forum/editYesYesYesNoNo
Delete forumsh2ogpte/forum/deleteYesYesYesNoNo
Share forumsh2ogpte/forum/shareYesYesYesNoNo
Make forums publich2ogpte/forum/publicYesYesYesNoNo

Permission dependenciesโ€‹

Permission dependencies enforce least-privilege boundaries. For example, a user must be able to add chats before they can create general (non-collection) chats. Without these dependencies, the system would accept inconsistent permission grants.

Some permissions have declared dependencies. When you assign a dependent permission, the base permission is also required:

PermissionDepends on
h2ogpte/chat/create_generalh2ogpte/chat/add
h2ogpte/api_key/create_globalh2ogpte/api_key/create

Permission dependencies

Groupsโ€‹

Groups let you organize users into teams and assign roles at the group level. Every user in a group automatically inherits the roles assigned to that group, which simplifies access management for large teams without requiring individual role assignments.

Create a groupโ€‹

Create a named group to organize users for bulk role assignment:

curl -X POST "https://<YOUR_DOMAIN>/api/v1/groups" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name": "data-science-team"}'

Assign a role to a groupโ€‹

Assign a role to all users in a group by group ID and role name:

curl -X PUT "https://<YOUR_DOMAIN>/api/v1/groups/{group_id}/roles/analyst" \
-H "Authorization: Bearer <API_KEY>"

Per-role configuration overridesโ€‹

Settings marked as Overridable in System Settings can be set at the role level. This lets you give specific roles different resource limits or experience settings compared to the system-wide default. The effective value a user receives follows this hierarchy: user override > role override > system default.

If the user has a per-user override for the setting, that value applies. Otherwise, if the user's role has an override, the role override value applies. If neither exists, the system default value applies.

The following settings support per-role overrides:

SettingDescriptionRecommended range
collection_limit_per_userMaximum collections per user.10โ€“1,000
document_limit_per_userMaximum documents per user.100โ€“10,000
agents_document_limit_per_userMaximum agent-created documents per user.1,000โ€“100,000
max_llm_cost_per_user_per_24hRolling 24-hour LLM cost cap (in cost units).1โ€“100
max_llm_cost_per_userLifetime LLM cost cap (in cost units).10โ€“1,000
max_llm_cost_per_guestLLM cost cap for guest users (in cost units).1โ€“10
runtime_max_new_tokensMaximum output tokens per LLM response.256โ€“4,096
api_rate_limit_per_hourMaximum API requests per user per hour. Set to 0 to disable.100โ€“10,000
ws_rate_limit_per_hourMaximum WebSocket messages per user per hour. Set to 0 to disable.100โ€“10,000
default_long_job_timeout_secTimeout in seconds for long-running jobs.300โ€“7,200
default_short_job_timeout_secTimeout in seconds for short-running jobs.60โ€“600
company_logo_urlURL for the company logo displayed in the header.Organization logo URL
chat_logo_urlURL for the logo displayed in the chat interface.Organization chat logo URL
runtime_llmsAvailable LLM configurations (controls which models a role can use). REST API only.Organization-approved LLMs
runtime_product_nameProduct name displayed in the UI.Organization product name
runtime_company_nameCompany name displayed in the UI.Organization name
scheduled_task_user_gmail_enabledAllow users to configure Gmail SMTP for notifications.true or false
user_notification_gmail_emailUser's Gmail address for email notifications.Valid Gmail address
user_notification_gmail_app_passwordUser's Gmail app password for email notifications.Valid app password

Set a per-role overrideโ€‹

Override a setting for a specific role by role ID and setting key:

curl -X PUT "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/configurations/{key_name}" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"string_value": "<NEW_VALUE>"}'

List overrides for a roleโ€‹

Retrieve all configuration overrides currently set for a role:

curl -X GET "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/configurations" \
-H "Authorization: Bearer <API_KEY>"

Reset an override to system defaultโ€‹

Remove a per-role override and restore the system-wide default value for that setting:

curl -X DELETE "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/configurations/{key_name}" \
-H "Authorization: Bearer <API_KEY>"

Manage roles with the REST APIโ€‹

Create a custom roleโ€‹

Create a role with a name and optional description:

curl -X POST "https://<YOUR_DOMAIN>/api/v1/roles" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name": "analyst", "description": "Data analyst with limited access"}'

Assign permissions to a roleโ€‹

Assign a list of permission identifiers to a role in a single request:

curl -X POST "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/permissions" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"permissions": ["h2ogpte/collection/add", "h2ogpte/chat/add", "h2ogpte/document/add"]}'

Add a single permissionโ€‹

Add one permission identifier to a role without replacing existing permissions:

curl -X PUT "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/permissions/h2ogpte/collection/share" \
-H "Authorization: Bearer <API_KEY>"

Remove a single permissionโ€‹

Remove one permission identifier from a role without affecting other assigned permissions:

curl -X DELETE "https://<YOUR_DOMAIN>/api/v1/roles/{role_id}/permissions/h2ogpte/collection/share" \
-H "Authorization: Bearer <API_KEY>"

Assign a role to a userโ€‹

Assign a named role to a specific user by their user ID:

curl -X PUT "https://<YOUR_DOMAIN>/api/v1/users/{user_id}/roles/analyst" \
-H "Authorization: Bearer <API_KEY>"

Remove a role from a userโ€‹

Remove a named role from a specific user by their user ID:

curl -X DELETE "https://<YOUR_DOMAIN>/api/v1/users/{user_id}/roles/analyst" \
-H "Authorization: Bearer <API_KEY>"

Manage roles with the Python SDKโ€‹

from h2ogpte import H2OGPTE

admin = H2OGPTE(address="https://<YOUR_DOMAIN>", api_key="<API_KEY>")

# List all roles
roles = admin.list_user_roles()

# Create a custom role
role = admin.create_user_role(name="analyst", description="Data analyst")

# Assign permissions
admin.assign_permissions_to_role(
role_name=role.name,
permission_names=["h2ogpte/collection/add", "h2ogpte/chat/add", "h2ogpte/document/add"]
)

Feedback