Skip to content

Roles & Permissions

Understand the two-level RBAC system in Tholos — organization roles and vault roles.

Tholos uses a two-level role-based access control (RBAC) system. Users have both an organization role and a vault role for each vault they belong to.

Organization roles determine what a user can do at the organization level:

RoleMembersInvitationsSettingsVault access
AdminManage allCreate/revokeFull controlAll vaults (Manager-equivalent)
UserViewOnly vaults they’re added to
AuditorViewRead-only view of all vaults
Admin > User > Auditor

Each role inherits the permissions of roles below it. Admins can do everything Users can do, Users can do everything Auditors can do.

  • Every organization must have at least one Admin
  • Admins cannot demote themselves if they are the last Admin
  • Auditors automatically get Viewer access to all vaults in the organization

Vault roles determine what a user can do within a specific vault:

RoleViewInitiateApprove/RejectManage vault
ManagerYesYesYesYes
SignerYesYesYes
InitiatorYesYes
ViewerYes
Manager > Signer > Initiator > Viewer

Viewer

  • View vault details, wallets, balances, transaction history
  • View policies and their status
  • Export audit logs

Initiator

  • Everything a Viewer can do
  • Create new transactions (transfers, swaps, contract interactions)
  • Propose new policies
  • Submit policy edits, deactivation, and reactivation requests

Signer

  • Everything an Initiator can do
  • Approve or reject transactions
  • Approve or reject policies and policy edits
  • Participate in MPC signing ceremonies
  • Delete pending/rejected policies

Manager

  • Everything a Signer can do
  • Add and remove vault members
  • Change vault member roles
  • Update vault settings
  • Delete the vault

A user’s effective permissions in a vault are determined by the combination of their organization role and vault role:

ScenarioEffective access
Org Admin + no vault roleManager (implicit)
Org Admin + Vault ViewerManager (org role overrides)
Org User + Vault SignerSigner
Org User + no vault roleNo access to that vault
Org Auditor + no vault roleViewer (implicit)
Org Auditor + Vault SignerSigner
Terminal window
# Update a member's organization role
curl -X PUT https://api.tholos.app/organization/{orgId}/member/{memberId}/role \
-H "Authorization: Bearer $THOLOS_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"role": "ADMIN"}'
Terminal window
# Update a user's vault role
curl -X PATCH https://api.tholos.app/vault/{vaultId}/user-role \
-H "Authorization: Bearer $THOLOS_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId": 42, "role": "SIGNER"}'