Roles & Key Distribution
Team vault access is governed by your role, and because the vault is end-to-end encrypted, every member also needs the team key wrapped just for them. This page explains who can do what, and how that key reaches each person.
Role matrix
Each team member holds one of four roles. Higher roles inherit everything the lower roles can do.
| Capability | viewer | editor | admin | owner |
|---|---|---|---|---|
| Read vault entries | ✓ | ✓ | ✓ | ✓ |
| Read your own wrapped key | ✓ | ✓ | ✓ | ✓ |
| Create, update, and delete entries | – | ✓ | ✓ | ✓ |
| Distribute and revoke keys | – | – | ✓ | ✓ |
| Rotate the key | – | – | ✓ | ✓ |
How the team key reaches each member
Because the vault is end-to-end encrypted, each member — and each of their devices — needs the team key wrapped specifically for them before they can decrypt anything.
GET /api/team/vault/keysreturns your wrapped keys. You only ever receive your own wrapped key; you never see another member's wrapped key.POST /api/team/vault/keys(admin/owner only) grants a wrapped key to a recipient. The request body takesrecipient_user_id,wrapped_key, andkey_version.DELETE /api/team/vault/keys/{id}(admin/owner only) revokes a recipient's key.
Two limits apply when distributing:
- The recipient must already be a member of the same team. Distributing a key to a non-member is rejected with
422. wrapped_keyis capped at 64 KiB.
Rotating the key
When you need to move the whole team to a new key — for example after a member leaves — an admin or owner rotates it.
POST /api/team/vault/rotate(admin/owner only) bumps thekey_versionand accepts freshly re-wrapped keys for members, and optionally re-encrypted entries.- Rotation runs atomically: keys and entries move to the new version together, so no member is ever left holding a key that can't decrypt the current entries.
Error responses
| Situation | Status |
|---|---|
| Your role isn't allowed to perform the action | 403 |
| No license on the team | 422 |
| Invalid license | 403 |
| Recipient is not a member of the team | 422 |
If a call fails, check your role first, then confirm the team's license is present and valid.