Understanding

How Discord Role Permission Overrides Work in a Channel

Which permission wins depends on the order Discord applies allows and denies, not on which role seems more important.

Is this your situation?

You set a deny on one role and an allow on another, and the channel result does not match either one alone. You want to know which one wins here.

What it is

A member's server-wide permissions come from adding up the allows for all of their roles together with the allows for @everyone. Channel permissions start from those server permissions as a base. From there, Discord applies denies of @everyone on the channel first. It then applies allows of @everyone on the channel. Denies for the specific member are applied next, after the role-level allows.

How Discord handles this

  • Individual command permissions act as overrides to application-wide permissions.
  • A user can accidentally lock themselves out of a command through these overrides.
  • Server owners cannot lock themselves out of a command because they can access all commands in the server.
  • A member can be denied a command by turning it off for @everyone.
  • To avoid locking themselves out, grant yourself access to a command before denying it from @everyone.

Side by side

StageWhat happensApplies to
1. Everyone deny
Denies of @everyone on the channel are applied first.@everyone
2. Everyone allow
Allows of @everyone on the channel are applied after the denies.@everyone
3. Role denies
All denies from a member's roles are summed and applied at once.Member's roles
4. Role allows
All allows from a member's roles are summed and applied at once.Member's roles
5. Member deny
A deny set for the specific member is applied if it exists.Individual member
6. Member allow
An allow set for the specific member is applied last if it exists.Individual member

Common mistakes

  • Assuming role order in the list decides it You expect the higher role in the list to win.Why it happens: Readers expect the higher role to win.Already happened: You notice a role has less access than expected. Recover a Nuked Discord Server
  • Denying @everyone on a command without granting first You turn off a command for @everyone before granting it to a role.Why it happens: Granting then denying in order prevents a user with the granted role from being locked out.
  • Expecting owners or admins to be affected Owners cannot lock themselves out of a command because they access all commands.Why it happens: Readers assume the same rules apply to every role.

If this changes who is in control

You notice a channel's result does not match what a role was meant to have. Review how roles and channel overrides interact before changing one, using the owner vs admin breakdown.

Quick reference

TermMeaning
Server permissionSum of allows from all of a member's roles plus @everyone.
Channel permission baseStarts from the member's server permissions.
Everyone deny stageApplied first in the channel.
Everyone allow stageApplied after everyone denies.
Role deny stageAll role denies summed and applied together.
Role allow stageAll role allows summed and applied together.
Member deny stageApplied after role allows, if it exists.
Member allow stageApplied last, if it exists.

Frequently asked questions

Why does a role-level deny lose to another role's allow?

All the allows of a member's roles are summed up and applied at once after the role denies.

Can a specific member override have the final say?

Allows for a specific member are applied last if they exist.

Does the @everyone role ever matter if I have other roles?

An individual's server-wide permissions add up the allows for roles assigned to them plus the allows for @everyone.

Keeping track of who has access

Confusion over who can access a channel builds as roles, channel overrides and member-level changes pile up over time. Delvia keeps a clear picture of which stage is granting or denying access, so the result is never a mystery.