Permissions
Show people what they can do, explain what they can't, and give them a way forward instead of a dead end.
7 states5 edge casesDesktop + Mobile
01The problem
Every multi-user product has roles, and every role hits walls. Products usually handle this by greying out buttons with no explanation, hiding features so users don't know they exist, or showing a generic 403 page. Users can't tell whether something is broken, restricted, or on a different plan — and they don't know who to ask.
02When to use
Use when
- Products with multiple roles: owner, admin, member, viewer, guest
- Sharing models: workspace, project and record-level access
- Features gated by role as well as by plan
Avoid when
- Single-user products.
- Restrictions that are about plan limits, not roles — use the usage & limits pattern.
03Recommended UX
Statecraft recommendation
Hide what a user can never do in their role, disable with an explanation what they could do with different access, and always name who can grant it with a one-click request.
04Desktop behaviour
On desktop, show restrictions where the user meets them: next to the control, and on pages they can't open.
Desktop rules
- Disabled controls show their reason on hover and focus — and keep it in the DOM for screen readers.
- Restricted pages show what the page is, who can grant access, and a Request access button.
- Role management lists capabilities in plain language, not permission keys.
- Show the user's own role somewhere visible (e.g. the workspace menu).
05Mobile behaviour
On mobile, tooltips don't exist. Restrictions need to be visible as text or one tap away.
Mobile rules
3 mobile rules are included in Pro.
Statecraft Pro
Unlock the full pattern
Get the complete interaction flow, states, edge cases, mobile rules and implementation prompt.
- Interaction flow · 5 steps
- 3 mobile rules
- 7 states
- 5 edge cases with recommendations
- 5 microcopy comparisons
- Accessibility notes
- Developer notes
- Claude Code / Codex implementation prompt
Edge cases covered in this pattern
- Access revoked mid-session
- Link shared with someone without access
- No admin available
- Permission and plan both block
- Role changes in bulk