Roles and Permissions Reference
Sol Helps evaluates access in two layers:
- The role template must contain the requested permission key.
- When an assistant ID is involved, the user's assistant scope must include it.
An empty assistant scope means all assistants allowed by the role. It does not mean no access.
Role templates and permission keys
This matrix is generated from the application's canonical role and permission definitions:
| Role template | Permission keys |
|---|---|
OwnerOWNER | assistants.read assistants.create assistants.update assistants.delete knowledge.read knowledge.upload knowledge.delete conversations.read conversations.review conversations.export insights.read insights.export team.read team.invite team.remove_member team.update_role billing.read billing.manage_plan billing.manage_payment_method company.delete security.read_audit security.manage_retention security.manage_sso api_keys.create api_keys.rotate api_keys.revoke |
AdminADMIN | assistants.read assistants.create assistants.update assistants.delete knowledge.read knowledge.upload knowledge.delete conversations.read conversations.review conversations.export insights.read insights.export team.read team.invite team.remove_member team.update_role billing.read billing.manage_plan billing.manage_payment_method security.read_audit security.manage_retention security.manage_sso api_keys.create api_keys.rotate api_keys.revoke |
MemberMEMBER | assistants.read knowledge.read conversations.read insights.read team.read billing.read |
ViewerVIEWER | assistants.read knowledge.read conversations.read insights.read team.read billing.read |
Support AnalystSUPPORT_ANALYST | conversations.read conversations.review conversations.export insights.read |
Content ManagerCONTENT_MANAGER | assistants.read assistants.update knowledge.read knowledge.upload knowledge.delete insights.read |
Billing AdminBILLING_ADMIN | billing.read billing.manage_plan billing.manage_payment_method |
Security AdminSECURITY_ADMIN | security.read_audit security.manage_retention security.manage_sso |
Owner has every permission. Admin has every permission except
company.delete. Member and Viewer currently resolve to the same read-only
template; keep the distinct product labels because future policy may differ.
Effective-access examples
- A Support Analyst scoped to one assistant can read, review, and export that assistant's Captured Questions and read its Insights.
- A Member can read Insights but cannot send a webhook because that requires
insights.export. - A Content Manager can update an assistant and manage its knowledge, but does not receive conversation access from that role.
- Removing an assistant from a non-empty scope immediately makes assistant-specific permission checks fail for that assistant.
- Selecting “all assistants” can be rejected for a scoped user even when their role contains the underlying permission.
Company-level actions without an assistant ID are controlled by the role
permission alone. API routes also validate workspace ownership and can return
403 even when a UI control was previously visible.
For the administrative workflow, see Invite People and Manage Access. For access failures, see Troubleshooting.