Oxide Commands List: Console Commands for Plugins, Permissions and Groups
Oxide console commands all start with `oxide.` (or the shorter `o.` alias on many builds) and run from the server console, RCON or an admin's F1 console. They load, unload and reload plugins, grant and revoke permissions, manage groups and show the current state. This reference lists each command with syntax, an example and what it does.
4 min readUpdated Oct 26, 2026
Oxide console commands all begin with oxide. and are typed into the server console, RCON or the in-game F1 console as an admin. They cover three jobs: managing plugins (oxide.plugins, oxide.load, oxide.unload, oxide.reload), managing permissions (oxide.grant, oxide.revoke, oxide.group, oxide.usergroup) and inspecting state (oxide.show, oxide.version). Carbon accepts the same oxide.* commands.
Arguments in <angle brackets> are required, [square brackets] are optional. Player arguments accept a name or a 17-digit Steam ID. Use the ID when names contain spaces or could match several players.
Plugin management commands
| Command | Purpose |
|---|---|
oxide.plugins | List every loaded plugin with title, version, author, hook time and filename |
oxide.load <Name> | Load a plugin from oxide/plugins |
oxide.unload <Name> | Unload a running plugin |
oxide.reload <Name> | Unload and load a plugin again |
oxide.load * | Load all plugins found in the plugins folder |
oxide.unload * | Unload every plugin |
oxide.reload * | Reload every plugin |
<Name> is the plugin name, which matches the file name and class name (for example StarterKit), not the readable title. The * wildcard applies the action to everything.
Example:
oxide.reload StarterKitOn success the console prints lines such as Unloaded plugin Starter Kit v1.0.0 by RustPluginGenerator followed by Loaded plugin Starter Kit v1.0.0 by RustPluginGenerator. There is no separate "compiled successfully" message. If the file fails to compile, the console prints Error while compiling StarterKit: and numbered messages in the form [1] <message> at <line>:<column>. The broken plugin is skipped and the others keep running. See CS0103 or CS1002 for typical causes, and could not load plugin, no plugin found when the name does not match a file.
Saving a .cs file in oxide/plugins already triggers a reload on its own, so you rarely need oxide.reload for code changes. It is useful after editing a config in oxide/config or a data file in oxide/data by hand. A reload runs Unload, then Init and Loaded. On a running server, OnServerInitialized is called right away with false.
oxide.plugins is also the quickest performance check. Slow hooks are logged as Calling 'OnEntityTakeDamage' on 'Name v1.0.0' took 120ms; see took ms hook performance warning and the performance guide.
Permission commands
| Command | Purpose |
|---|---|
oxide.grant user <name|id> <perm> | Give a permission to one player |
oxide.grant group <group> <perm> | Give a permission to a group |
oxide.revoke user <name|id> <perm> | Remove a permission from a player |
oxide.revoke group <group> <perm> | Remove a permission from a group |
Examples:
oxide.grant user 76561198000000000 starterkit.use
oxide.grant group default starterkit.use
oxide.revoke user Steve starterkit.usePermission names follow <pluginname>.<action>, in lowercase. A permission can only be granted once its plugin has registered it, so load the plugin first. If you get "permission doesn't exist", read permission doesn't exist. A permission granted to default applies to every player. Lookups are case-insensitive. Oxide may also call OnUserPermissionGranted when a user receives a permission.
Group commands
| Command | Purpose |
|---|---|
oxide.group add <group> [title] [rank] | Create a group |
oxide.group remove <group> | Delete a group |
oxide.group set <group> <title> [rank] | Change a group's title and rank |
oxide.group parent <group> [parent] | Make a group inherit from a parent group |
Oxide ships with the groups default and admin. Players join default automatically.
oxide.group add vip "VIP" 1
oxide.group parent vip default
oxide.grant group vip starterkit.vipA child group inherits everything its parent has. Giving vip the parent default means VIPs keep all default permissions and add their own. Referencing a group that was never created produces group doesn't exist. The full model is explained in Oxide permissions and groups.
Usergroup commands
| Command | Purpose |
|---|---|
oxide.usergroup add <player> <group> | Put a player into a group |
oxide.usergroup remove <player> <group> | Remove a player from a group |
oxide.usergroup add 76561198000000000 vip
oxide.usergroup remove 76561198000000000 vipGroup membership is the right tool for tiers such as VIP, because you grant a permission once to the group and change only membership per player. A plugin can do the same automatically, as in Playtime group promotion.
Inspection commands
| Command | Purpose |
|---|---|
oxide.show perms | List all registered permissions |
oxide.show perm <perm> | Show which users and groups hold a permission |
oxide.show user <name|id> | Show a player's groups and permissions |
oxide.show group <group> | Show a group's members and permissions |
oxide.show groups | List all groups |
oxide.show perm starterkit.use
oxide.show user 76561198000000000Use oxide.show user first when a player reports they cannot use a command. It shows direct permissions and the groups they inherit from, which settles most access questions.
Language and version commands
| Command | Purpose |
|---|---|
oxide.lang <code> | Set the server's default language for plugin messages |
oxide.version | Print the Oxide version, plus the game and protocol it targets |
oxide.lang dePlugins that register translations with lang.RegisterMessages read the language chosen here, falling back to English if a key is missing. Message files are stored in oxide/lang/<lang>/<Name>.json. See plugin localization.
Run oxide.version first when asking for help or after a game update. Version mismatches are the usual reason plugins stop working, as covered in fix Rust plugins after an update.
Where the files live
| Content | Oxide | Carbon |
|---|---|---|
| Plugins | oxide/plugins | carbon/plugins |
| Configs | oxide/config/<Name>.json | carbon/configs |
| Data | oxide/data | carbon/data |
| Language files | oxide/lang/<lang>/<Name>.json | carbon/lang |
| Logs | oxide/logs | carbon/logs |
Carbon equivalents
Carbon loads Oxide plugins and accepts the oxide.* commands listed above, so existing scripts, RCON tools and documentation keep working. Carbon also has its own command set under the c. prefix (for example c.reload and c.grant) with the same purpose. Check the Carbon documentation for exact syntax on your build. For the differences between the two frameworks see Oxide vs Carbon.
Running commands safely
- Test
oxide.unload *andoxide.reload *off-peak. Reloading everything resets plugin state held in memory and can cause lag while many plugins recompile. - Prefer targeted reloads:
oxide.reload <Name>. - Put repeated setup in a startup script or use Scheduled commands for timed actions.
- Plugin-defined console commands such as
myplugin.giveare separate from theoxide.*set. The difference from chat commands is covered in chat commands vs console commands.
If a command prints nothing useful, check oxide/logs and read debugging Rust plugins.
FAQ
Do I need to run oxide.reload after editing a plugin file?
No. Saving a .cs file in oxide/plugins makes Oxide recompile and reload that plugin automatically. Use oxide.reload <Name> when you changed a config or data file by hand, or when you want to restart a plugin without touching its source. Reloading calls Unload, then Init and Loaded again.
Can players run Oxide console commands?
No. The oxide.* commands are restricted to the server console, RCON and admins with the required auth level. Regular players cannot run them from F1. Plugin permissions are separate: they control access to a plugin's own chat and console commands, not to the Oxide management commands.
Why does oxide.grant say a permission does not exist?
The permission was never registered, usually because the plugin that owns it is not loaded or the name is misspelled. Permissions exist only after a plugin calls permission.RegisterPermission. Run oxide.plugins to confirm the plugin loaded, then oxide.show perms to list registered names.
Does oxide.unload * delete my plugin files?
No. Unloading only removes plugins from memory for the current session. The .cs files stay in oxide/plugins. Be aware that a plugin left in the folder is loaded again on the next server start, and that saving the file triggers a fresh load.
Are permissions kept when I reload a plugin?
Yes. Granted permissions and group memberships are stored by Oxide in its own data files, not inside the plugin. Reloading or unloading a plugin does not remove them, so players keep their access when the plugin returns.
More guides
- CovalencePlugin vs RustPlugin: Differences and Which to Use4 min read
- How to Debug a Rust Oxide Plugin: Compile Errors, Exceptions and Slow Hooks10 min read
- How to Give Items to Players in a Rust Plugin (Oxide/Carbon)5 min read
- How to Install Oxide on a Rust Dedicated Server (Windows and Linux)7 min read
Skip the C#: describe your plugin
Open generator