Skip to content
RustPluginGenerator
Runtime errorOxide + Carbon

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.

Server console
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.grant before the plugin finished loading. Permissions are registered during plugin load, so granting during startup or right after an oxide.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.Use vs killrewards.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.use while the grant uses killrewards.use.
  • The plugin was never installed or oxide.plugins shows it unloaded.

How to fix it

  1. Check the plugin is loaded: run oxide.plugins and look for KillRewards. A successful load prints Loaded plugin <Title> v<Version> by <Author> in the console; fix any compile error first.
  2. 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.
  3. 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.
  4. Verify: oxide.show user <player> should list killrewards.use, and the plugin's permission check (permission.UserHasPermission) now returns true.
  5. 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

BeforeFails
# 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
AfterFixed
# 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 SteamID64

FAQ

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 explainer

Skip the debugging

Generated plugins are compiled before you get them, and compiler errors are fixed automatically.

Generate a plugin

2 free plugins a month, no card.

Last updated Oct 26, 2026.

Get plugins that compile first time

Generate