Skip to main content
Role-based access control (RBAC) is the method TextQL uses to manage what users can see and do within your organization. Instead of configuring permissions for each person individually, you define roles that reflect job functions, assign permissions to those roles, and then assign users to the appropriate role.

What is Role-Based Access Control?

RBAC is an access control model built around three concepts:
  1. Roles — Named groupings that represent a job function or authority level (e.g., admin, member)
  2. Permissions — Specific actions a role is allowed to perform (e.g., create connectors, manage members, view billing)
  3. Assignments — Users are placed into a role; they inherit all of that role’s permissions automatically
When an employee joins, changes teams, or leaves, you update their role rather than hunting down individual permission settings.

Benefits of RBAC

  • Less per-user configuration — Set permissions once on a role; every user assigned to it inherits them automatically. Role changes (e.g., someone moving teams) are a single update, not a sweep across individual accounts.
  • Least-privilege by default — Access is scoped to what each role needs. Sensitive areas like billing, SCIM, and org settings stay out of reach for general members without any extra effort.
  • Consistent onboarding — New users get the right access on day one by assigning a role, with no risk of missing a permission or over-granting access.
  • Easier compliance — Access is tied to named roles rather than individuals, making it straightforward to show auditors who can do what. See Audit Log for a record of actions taken.

Limitations of RBAC

  • No record-level control — Permissions apply to a whole resource type, not individual records. You cannot restrict a member to only their team’s data within the same connector.
  • Write bundles creation and editing — Granting write on a resource lets users both create their own and edit any publicly shared version of it. These cannot currently be separated.
  • Two roles may not fit every org — The built-in admin/member split covers most cases, but organizations with many distinct access tiers may find the options limiting.
  • Roles need periodic review — Access that was appropriate when someone joined may not be correct six months later. Stale role assignments accumulate without active maintenance.

When to Use RBAC

TextQL’s role system works well for organizations that have a clear split between users who manage the platform (admins) and users who use it to run analyses (members). Most deployments follow this pattern. Where it requires more thought is when different groups of members need meaningfully different levels of access — for example, a team that should be able to publish connectors versus one that should only be able to run chats. In those cases, configure the member role to the most restrictive common baseline and use SCIM group mappings if your IdP can enforce the distinction at provisioning time.

How to Configure RBAC in TextQL

TextQL has two system roles. Each user in your organization is assigned exactly one.
RoleDescription
adminFull read and write access to all permissions across the organization
memberScoped access — can create and use core features, but cannot manage org-level settings, billing, SSO/SCIM, or other members
Roles are configured from Settings → Roles. Click Manage Permissions on any role to view or edit its permission set.

Creating a Role

  1. Navigate to Settings → Roles
  2. Click Create Role and give it a name
  3. Click Manage Permissions on the new role to configure its permission set
  4. Toggle the permissions you want this role to have across each resource category

Assigning a Role

  1. Navigate to Settings → Members
  2. Find the user and click the role dropdown next to their name
  3. Select admin or member and confirm
Changes take effect immediately.

Permission Reference

Each role is composed of granular permissions grouped by resource. Permissions follow a consistent pattern: read (public), read_private (private/org-wide), write (create/edit public), and write_private (create/edit private). Below is a full reference of every configurable permission and what it controls.
Controls access to API keys used to authenticate programmatic requests to TextQL.
PermissionWhat it does
readView and use public API access keys
read_privateView and use private API access keys
writeCreate and edit public API access keys
write_privateCreate and edit private API access keys
Default member permissions: read only
Controls visibility into your organization’s usage and billing data.
PermissionWhat it does
readView billing usage data
Default member permissions: none — billing is admin-only
Controls access to conversation threads with Ana.
PermissionWhat it does
readView public chat conversations
read_privateView private chat conversations
writeCreate and edit public chats
write_privateCreate and edit private chats
Default member permissions: read, write
Controls access to data source connections. See Connectors for setup details.
PermissionWhat it does
readView public connectors
read_privateView private connectors
writeCreate and edit public connectors
write_privateCreate and edit private connectors
Default member permissions: write (public connectors only)
Controls access to organization-level context prompts that Ana uses to give business-specific answers. See What is Context.
PermissionWhat it does
readView organization context prompts
writeCreate, update, and delete organization context prompts
Default member permissions: none
Controls access to persistent dashboards built from Ana’s outputs. See Dashboards.
PermissionWhat it does
readView public dashboards and chat with them
read_privateView dashboards marked as restricted access, even if not shared with you
writeCreate your own dashboards and edit any public dashboard
write_privateEdit any dashboard in the org, including restricted-access dashboards not shared with you
Default member permissions: write (public dashboards)
Controls access to datasets — structured data files that can be uploaded or generated by Ana.
PermissionWhat it does
readView public datasets
read_privateView private datasets
writeCreate and edit public datasets
write_privateCreate and edit private datasets
Default member permissions: write (public datasets only)
Controls access to the feed — posts, comments, and agent activity visible across the organization.
PermissionWhat it does
readView feed posts and comments
writeCreate posts, comments, and manage agents
Default member permissions: write
Controls access to MCP (Model Context Protocol) server configurations used to extend Ana with external tools and data sources.
PermissionWhat it does
readRead MCP server configurations
writeWrite/modify MCP server configurations
Default member permissions: read
Controls visibility and management of users in your organization.
PermissionWhat it does
readView organization members
writeManage organization members (invite, remove)
Default member permissions: read
Controls access to notification preferences and in-app alerts.
PermissionWhat it does
readView own notifications and preferences
writeMark notifications read, update preferences
Default member permissions: write
Controls access to the ontology — the structured map of your business data. See What is Ontology.
PermissionWhat it does
readView ontology schema, objects, attributes, metrics, and relations
read_privateView private ontologies
writeCreate, update, and delete ontology schema, objects, attributes, metrics, and relations
write_privateCreate and edit private ontologies
Default member permissions: read
Controls access to top-level organization settings such as name, appearance, and global configuration.
PermissionWhat it does
readView organization settings
writeManage organization settings
Default member permissions: none — org settings are admin-only
Controls access to installable packages that extend TextQL’s functionality.
PermissionWhat it does
readView org packages
writeInstall/remove org packages
Default member permissions: read
Controls access to automated analysis workflows. See Playbooks.
PermissionWhat it does
readView public playbooks
read_privateView private playbooks
writeCreate and edit public playbooks
write_privateCreate and edit private playbooks
Default member permissions: write (public playbooks only)
Controls whether a user can view or modify role configurations themselves.
PermissionWhat it does
readView role settings
writeManage role settings
Default member permissions: read
Controls access to SCIM provisioning tokens and OAuth clients used for automated user lifecycle management. See SCIM.
PermissionWhat it does
readView SCIM tokens and OAuth clients
writeCreate and revoke SCIM tokens and OAuth clients
Default member permissions: none — SCIM is admin-only
Controls access to secrets — credentials and API keys stored securely for use in code and connectors.
PermissionWhat it does
readView and use secrets in code (own secrets)
read_privateView all secrets in the organization
writeCreate, update, and delete own secrets
write_privateEdit and delete any secret in the organization
Default member permissions: write (own secrets only)
Controls visibility into organization-level usage metrics and ACU consumption data.
PermissionWhat it does
readView organization usage metrics and ACU data
Default member permissions: none — usage data is admin-only
Controls which AI models members can use and whether they can override the org default. See Model Management for full model management options.
PermissionWhat it does
allow_model_switchingUsers can override the default model in chat
Default ModelThe model used when this role starts a new chat (defaults to Org Default)
Allowed ModelsWhich models this role can select from
Default member permissions: model switching disabled; allowed models and default set by admin

Permission levels for Chat, Playbook, and Dashboard

PermissionWhat it means
readView public chats / playbooks and download all artifacts and outputs (CSVs, charts, PDFs). For Dashboard, also includes the ability to chat with the dashboard.
read_privateView restricted-access resources that are not shared with you
writeCreate your own chat/playbook/dashboard and edit any publicly shared ones
write_privateCreate, edit, or delete any resource in the org regardless of its access settings or whether it was shared with you

Provisioning Roles at Scale with SCIM

If your organization uses an identity provider like Okta or Azure AD, you can provision and deprovision users automatically and map IdP groups to TextQL roles using SCIM. This is the recommended approach for organizations with more than ~20 users, as it keeps roles in sync with your IdP without manual intervention.

RBAC Best Practices

Default new users to member When unsure which role to assign, start with member and escalate to admin only when explicitly needed. Admin access should be limited to people who manage the organization’s settings and security configuration. Base roles on job function, not individuals If you find yourself needing highly customized permissions for a single person, it is usually a sign that the permission boundary is better handled at the connector or context level rather than a new role. Review role assignments periodically Run a quarterly review of your member list and their assigned roles. Look for users who have moved teams or changed responsibilities. The Audit Log can help surface accounts that have not been active recently. Pair with SSO and SCIM for lifecycle management Manual role assignment works for small teams, but human error accumulates. Connecting TextQL to your IdP via SSO and SCIM ensures that when someone leaves the company or changes teams, their TextQL access updates automatically. Restrict private resource access carefully read_private and write_private permissions grant org-wide visibility into resources that individual users have intentionally kept private. Grant these sparingly and only to roles that genuinely need cross-user visibility.