Governance
How to Offboard a Discord Moderator Without Leaving Access Behind
Removing a moderator's role is not the same as removing what that role could still reach.
Is this your situation?
You are removing or replacing a moderator and want to be sure nothing of their access remains, including leftover webhook ownership or role permission overrides. You want to check role changes and permission cleanup separately.
Where teams go wrong
- Denying @everyone before the replacement role is granted A user can accidentally lock themselves out of a command due to command permission overrides.Why it happens: The deny is applied before a role is explicitly granted access to the command.
- Assuming a removed role revokes command access Individual command permissions act as overrides to application-wide permissions.Why it happens: You expect the role removal to end access and do not check command overrides.
- Not checking old webhooks The webhook page shows who added each webhook and when it was added.Why it happens: You assume webhook ownership ended with the moderator's removal.
What good practice looks like
| Area | Risky pattern | Good practice |
|---|---|---|
| Command permissions | Denying @everyone the ability to use the command. | Explicitly allow the new role first to use the command. |
| Webhooks | Not checking who added each webhook and when. | Delete the webhook if it is no longer in use. |
| Server apps | Apps added to a server that all members can access, removable only with Manage Server permission. | Kick the app's bot to remove it. |
| Role access | Individual command permissions act as overrides to application-wide permissions. | Individual command permissions act as overrides to application-wide permissions. |
How Discord handles this
- Server owners cannot lock themselves out of a command because they can access all commands in the server.
- Administrators cannot lock themselves out of a command because they can access all commands in the server.
- A member can be denied access to a command by turning off the command for @everyone.
- Following the correct order of granting then denying permissions prevents a user with the granted role from being locked out.
- Server apps are apps added to a server that all members can access, but only users with the Manage Server permission can remove them.
Before you start
- The replacement role needs command access first The first step is to explicitly allow a specific role to use the command.Verify: Check the role's command list before denying @everyone.
- The webhook page shows who added each webhook The webhook page shows who added each webhook.Verify: Check the webhook list for their name.
- A bot or app shows its requested permissions A user can click into a bot or app and see its requested permissions.Verify: Look through the Bots and Apps page for their entries.
- Command permissions act as overrides to role permissions Individual command permissions act as overrides to application-wide permissions.Verify: Review command permissions separately from role permissions.
Which scenario is yours?
- Are you handling the order of granting and denying a command for the replacement role? The second step to safely restrict a command is to deny @everyone the ability to use the command.
- Did the moderator add webhooks you cannot account for? A user can delete a webhook if they are done using it.
- Did the moderator add an app to the server? Kicking the bot from the server removes the app.
- Are you or an admin handling the removal yourself? Server owners cannot lock themselves out of a command because they can access all commands in the server.
Keeping this working over time
- Appropriate permission levels should be used for each team member.
- Review webhook ownership whenever a moderator's role changes.
- A support request can be submitted through the Developer Support Portal for assistance with developer team issues.
Keeping track of who has access
You remove a role, and want to be sure everything it reached is also cleared. Keeping access current across people and over time means checking commands, webhooks, and apps together. Delvia is where you keep a view of who holds access when a moderator leaves. That view makes the next offboarding faster to check.
Was this helpful?