You want to allow only one specific role in your Discord server to use a particular slash command, but the default permission system applies to everyone or requires complex workarounds. Discord’s role-based permission system lets you control command access at the server level, but granting access to a single role requires disabling the command for everyone else and then enabling it only for that role. This article explains how to configure slash command permissions using the Server Settings interface so that a single role can use the command while all other roles are blocked.
Key Takeaways: Granting Slash Command Access to One Role
- Server Settings > Integrations > Commands: The central location to manage which roles can use each slash command.
- Permission override per command: Disable the command for @everyone and then enable it only for the target role.
- Order of role permissions: Role permissions are additive — you must block the command at the @everyone level before granting it to a specific role.
How Discord Command Permissions Work for Slash Commands
Slash commands in Discord are built into bots or native Discord features and can be used by any member who can see the channel and has the required permissions. By default, all members in a server can use a slash command unless the bot or command creator sets specific permission requirements.
Discord uses a permission model where the @everyone role serves as the baseline. If @everyone has access to a command, then every member can use it. To restrict a command to a single role, you must first remove access from @everyone and then grant access only to the target role. This is done through the Integrations menu in Server Settings, which lists all bots and their commands.
The permission system applies to the entire server, not per channel. If you want a command available only in specific channels, you can also configure channel-specific overrides, but that is a separate step. This article focuses on role-level access only.
Steps to Grant Slash Command Access to a Single Role
Follow these steps to configure a slash command so that only one role can use it. You need the Manage Server permission to change these settings.
- Open Server Settings
Click the server name at the top-left of your Discord client. From the dropdown menu, select Server Settings. - Go to Integrations
In the left sidebar of Server Settings, click Integrations. This page lists all bots and webhooks added to your server. - Select the bot that owns the command
Find the bot that provides the slash command you want to restrict. Click the bot’s name or the Manage button next to it. - Locate the specific command
Scroll down to the Commands section. You will see a list of all slash commands the bot offers. Find the command you want to restrict and click the gear icon or the command name to open its permissions. - Disable the command for @everyone
In the command permission settings, you will see a list of roles with a toggle switch. Find @everyone and set its toggle to the off position (gray). This removes the command from all members by default. - Enable the command for the target role
Scroll to the Roles/Members section. Click the Add Role or Add Member button. Start typing the name of the role you want to grant access to. Select the role from the dropdown list. Set its toggle to the on position (green). - Save your changes
Click the Save Changes button at the bottom of the permission panel. The command is now accessible only to members who have the selected role.
Repeat steps 4 through 7 for any other slash commands you want to restrict to the same role. Each command must be configured individually.
Common Mistakes and Limitations When Restricting Slash Commands
Members with Administrator permission can still use the command
The Administrator permission overrides all command permission settings. Any member with the Administrator permission — even if they do not have the target role — can still use the restricted slash command. To prevent this, remove the Administrator permission from members who should not use the command.
The command still appears in the command list for everyone
Disabling a command for @everyone does not hide the command from the slash command autocomplete list. Members without the role will see the command but receive a permission error when they try to use it. To hide the command entirely, you need to use a bot that supports command hiding, which is not a native Discord feature.
Role hierarchy affects permission inheritance
If a member has multiple roles, and one of those roles has the command disabled while another has it enabled, the member can still use the command. The permission system grants access if any role the member has is allowed. To ensure only one role can use the command, make sure no other roles have the command enabled.
Bot commands may have built-in permission requirements
Some bots require specific permissions — such as Manage Messages or Kick Members — to execute certain slash commands. Even if you grant role access, the command will fail if the bot lacks the required permissions in the channel. Check the bot’s documentation for any additional permission needs.
Slash Command Permission Scenarios: Role-Based vs Default Access
| Item | Default Access (@everyone enabled) | Single Role Access (@everyone disabled) |
|---|---|---|
| Who can use the command | All members | Only members with the specified role |
| Command visibility in chat | Visible to all who can see the channel | Visible to all but errors for unauthorized users |
| Permission override required | None | Disable @everyone, enable target role |
| Administrator bypass | Administrators can always use it | Administrators can still use it |
You can now restrict any slash command to a single role in your Discord server. Use the Integrations menu to disable the command for @everyone and enable it only for the target role. For advanced control, consider using a bot that supports command hiding or channel-specific permissions to further refine access.