Fix "Permission '<perm>' doesn't exist" in Oxide/Rust servers
The permission you passed to oxide.grant or oxide.revoke is not registered by any loaded plugin. Almost always the plugin that owns the permission is not loaded (often because it failed to compile) or the permission name is misspelled or missing the plugin name prefix.
Permission 'killrewards.use' doesn't exist
Why it happens
Oxide only knows about permissions that plugins register at runtime, usually in Init() through permission.RegisterPermission. If the plugin never reached that point, its permissions do not exist and any oxide.grant user <name> <perm> for them is rejected with this message.
The common concrete triggers:
- You ran
oxide.grantbefore the plugin finished loading. Permissions are registered during plugin load, so granting during startup or right after anoxide.reload <Name>can hit the gap. - The plugin failed to compile (
Error while compiling <Name>:in the console), so it is not loaded and registered nothing. - A typo in the permission string, e.g.
killrewards.Usevskillrewards.use(case is ignored, but spelling and dots are not) or the wrong plugin prefix. - You granted a permission from a plugin you unloaded. Unloading removes its registered permissions.
- The permission is registered under a different name than the one you used, for example
KillRewards.usewhile the grant useskillrewards.use. - The plugin was never installed or
oxide.pluginsshows it unloaded.
How to fix it
- Check the plugin is loaded: run
oxide.pluginsand look forKillRewards. A successful load printsLoaded plugin <Title> v<Version> by <Author>in the console; fix any compile error first. - Check which permissions the plugin actually registered:
oxide.show perms <PluginName>lists them when the plugin name is known. Compare the exact string with the one you grant. - Re-run the grant after the plugin is loaded:
oxide.grant user <player> killrewards.use. Oxide accepts the same command with group scope:oxide.grant group <group> killrewards.use. - Verify:
oxide.show user <player>should listkillrewards.use, and the plugin's permission check (permission.UserHasPermission) now returns true. - If the plugin is reloaded, permissions are back because Init runs again; you only need to redo grants if you changed the permission string in the source.
Before and after
# Oxide says the permission does not exist because KillRewards never loaded.
oxide.grant user SteamID64 killrewards.use
# restart while the plugin was failing to compile
oxide.reload KillRewards
oxide.grant user SteamID64 killrewards.use
# typo in the permission what the plugin registers is killrewards.use
oxide.grant group vip killrewards.kill# verify the plugin loaded without compile errors
oxide.plugins
# list the permissions the plugin actually registered
oxide.show perms KillRewards
# grant the exact registered permission to the user and a group
oxide.grant user SteamID64 killrewards.use
oxide.grant group vip killrewards.use
# confirm the grant appears
oxide.show user SteamID64FAQ
Does Oxide care about uppercase in permission names?
Permission, group and user lookups are case-insensitive, so killrewards.use and KillRewards.Use resolve the same. The message usually comes from a different string (e.g. killrewards.perm where the plugin registers killrewards.use), not from casing.
Why does the grant work after I reload the plugin?
Reloading re-runs Init, which registers the permission again. If the grant failed during startup, it is usually because the plugin had not loaded yet or had failed to compile. Fix the compile error, then grant.
Do I need to grant permissions after every restart?
No. Grants are stored by Oxide and persist. If a permission disappears after a restart, the plugin that registers it did not load, so check oxide.plugins and the compile log before re-granting.
How do I list a plugin's permissions?
Use oxide.show perms <PluginName>. The prefix must match the plugin's lowercase class name; permissions registered without that prefix still work but log Missing plugin name prefix warnings.
Different error?
Paste the full console output and get the cause and a fix in plain English.
Open the error explainerSkip the debugging
Generated plugins are compiled before you get them, and compiler errors are fixed automatically.
Generate a plugin2 free plugins a month, no card.
Last updated Oct 26, 2026.
Get plugins that compile first time
Generate