Permission catalog
A permission is a key (chat.reply, chat.assign, …) that gates a specific action.
Each user has a granted set; the default set is determined by role + can be overridden
per-user.
Chat permissions
| Key | Gates | SUPER_ADMIN | AGENCY_ADMIN | AGENCY_USER | CLIENT_USER |
|---|---|---|---|---|---|
chat.view_inbox | See the inbox | ✓ | ✓ | ✓ | ✓ |
chat.reply | Send replies | ✓ | ✓ | ✓ | ✓ |
chat.assign | Claim / assign conversations | ✓ | ✓ | ✓ | ✓ |
chat.transfer | Transfer to specific agent | ✓ | ✓ | ✗ | ✓ |
chat.close | Close conversations | ✓ | ✓ | ✓ | ✓ |
chat.view_internal_notes | Read internal notes | ✓ | ✓ | ✓ | ✓ |
chat.write_internal_notes | Write internal notes | ✓ | ✓ | ✓ | ✓ |
chat.manage_channels | Connect / disconnect channels | ✓ | ✓ | ✗ | ✗ |
chat.manage_templates | Submit / edit templates | ✓ | ✓ | ✓ | ✗ |
chat.manage_saved_replies | Add / edit saved replies | ✓ | ✓ | ✓ | ✓ |
chat.manage_tags | Add / remove tag definitions | ✓ | ✓ | ✓ | ✓ |
chat.manage_custom_fields | Create / edit custom fields | ✓ | ✓ | ✗ | ✗ |
chat.manage_contacts | Edit contact attributes / delete | ✓ | ✓ | ✓ | ✓ |
chat.manage_flows | Build / publish flows | ✓ | ✓ | ✓ | ✗ |
chat.send_broadcasts | Schedule broadcasts | ✓ | ✓ | ✓ | ✗ |
chat.manage_drips | Build drips | ✓ | ✓ | ✓ | ✗ |
chat.manage_automations | Build automations | ✓ | ✓ | ✓ | ✗ |
chat.manage_keywords | Build keyword rules | ✓ | ✓ | ✓ | ✗ |
chat.manage_settings | Edit chat policies + business hours | ✓ | ✓ | ✓ | ✓ |
chat.view_reports | View reports panel | ✓ | ✓ | ✓ | ✗ |
chat.export_data | CSV export | ✓ | ✓ | ✓ | ✗ |
chat.manage_groups | Create / edit groups | ✓ | ✓ | ✓ | ✗ |
chat.make_calls | Voice call from inbox | ✓ | ✓ | ✓ | ✓ |
Per-user overrides
/dashboard/team → user row → Edit permissions → toggle individual keys. The
override layer is fail-closed: when in doubt the role default wins, BUT an explicit
deny override always overrides the role default.
How fast do overrides take effect?
Permission overrides take effect for the affected user within ~5 seconds — the platform caches the merged permission map briefly for performance, then refreshes on the next request.
Last updated on