Installing a plugin on your Rust server is only half the job. Most Oxide and Carbon plugins do nothing until you explicitly grant the right people permission to use them. If you have ever dropped a plugin into oxide/plugins/, reloaded it, and then watched it do absolutely nothing in-game, the missing piece is almost always permissions. This guide walks through the entire permission system from the ground up: the two built-in groups, the exact oxide.grant and oxide.revoke syntax, how groups and inheritance work, the pluginname.permission node format, and why every one of these commands works identically whether you run Oxide/uMod or Carbon.
How the Oxide permission system works
Oxide (also known as uMod) is the long-established Rust modding framework, with the largest plugin library available — over 1,400 plugins on uMod alone. Its permission system is built on two simple concepts: permissions and groups. A permission is a single string that unlocks one capability of a plugin. A group is a named bucket of users that can hold a bundle of permissions. You can assign permissions directly to an individual player, or to a group that the player belongs to — and in practice, granting to a group is almost always the cleaner approach.
When you install Oxide, it automatically creates two default groups: admin and default. Every player who connects is a member of default, and any player with an auth level (an owner or moderator) is automatically placed in admin. This is why so many plugins “just work” for admins out of the box but appear broken for regular players — the plugin author granted its core permissions to the admin group, and the default group has nothing. Your job as a server owner is to decide which capabilities the default group (everyone) gets, and which you reserve for special groups like VIPs, supporters, or moderators.
The pluginname.permission node format
Every permission in Oxide follows the same format: pluginname.permission. The first part is the plugin’s registered name (lowercased), and the second part is the specific capability that the plugin’s author defined. So a plugin called CoolPlugin might register coolplugin.use for general access, while the Vanish plugin registers vanish.allow for the players allowed to go invisible. There is no universal list — each plugin documents its own permission nodes, usually in its description page or config. The pattern, however, never changes:
coolplugin.use # general access to CoolPlugin
vanish.allow # allowed to use the Vanish plugin
removertool.normal # example node: standard remove access
serverrewards.use # example node: access the rewards store
To find a plugin’s exact nodes, read its documentation first, then verify in-game with the inspection commands covered later in this guide (oxide.show perms and oxide.show perm ). Never assume a node name — a typo in a permission string fails silently, and that is the single most common reason a “broken” plugin is really just a misspelled grant.
Granting and revoking permissions to a user
The most direct way to give a single player access to a plugin is to grant the permission to that user. Oxide accepts either the player’s name or their SteamID64 (the 17-digit number, for example 76561197854018763). The SteamID64 is always the safer choice because names change and can contain spaces or special characters that confuse the parser. You can read a connected player’s SteamID64 from the ID column of the status command.
# Grant a permission to a single user (by name OR SteamID64)
oxide.grant user 76561197854018763 coolplugin.use
oxide.grant user "PlayerName" coolplugin.use
# Revoke that permission from the user
oxide.revoke user 76561197854018763 coolplugin.use
oxide.revoke user "PlayerName" coolplugin.use
Direct user grants are perfect for one-off cases — handing a single content creator access to a special command, or testing a permission before you roll it out. But they get unmanageable fast. If you grant ten permissions to twenty VIPs individually, you now have two hundred grants to track, and revoking VIP status from one player means hunting down ten separate commands. That is exactly the problem groups solve.
Working with groups
Groups let you define a permission set once and then move players in and out of it. The workflow is: create a group, grant the group its permissions, then add users to the group. When a player joins the group they inherit every permission the group holds; remove them and the access is gone instantly — no need to revoke each node one by one.
Creating and deleting groups
# Create a new group
oxide.group add supporters
# Remove a group entirely
oxide.group remove supporters
# Set a display title and a rank number for the group
oxide.group set supporters "[Server Supporters]" 1
The oxide.group set command assigns a human-readable title (often used by chat plugins to show a tag next to a player’s name) and a numeric rank that some plugins use to order groups. The admin and default groups already exist and should not be deleted — they are part of the framework’s core behavior.
Granting permissions to a group
Granting and revoking for a group uses the same oxide.grant / oxide.revoke verbs you saw for users — you just swap user for group:
# Grant a permission to a whole group
oxide.grant group supporters coolplugin.use
oxide.grant group admin coolplugin.use
# Revoke a permission from a group
oxide.revoke group admin coolplugin.use
A very common pattern is granting a capability to the default group so that every player on your server can use it — for example, letting everyone use a teleport-to-home plugin or a player-side remove tool. Reserve more powerful nodes for purpose-built groups, and keep truly destructive admin tools on the admin group only.
Adding and removing users from groups
Once a group holds the permissions you want, you move players in and out with oxide.usergroup. As with grants, you can reference a player by name or SteamID64.
# Add a user to a group
oxide.usergroup add 76561197854018763 supporters
oxide.usergroup add "PlayerName" supporters
# Remove a user from a group
oxide.usergroup remove 76561197854018763 supporters
oxide.usergroup remove "PlayerName" supporters
This is where the group model pays off. Selling a VIP rank? One oxide.usergroup add command grants the buyer everything the VIP group offers. Refund or expiry? One oxide.usergroup remove and they lose it all. Most donation and store plugins automate exactly these two commands behind the scenes.
Group inheritance (parents)
Oxide supports group inheritance through parents. A child group inherits every permission its parent holds, on top of its own. This lets you build tiered ranks without re-granting shared permissions at every level.
# Make tier_2 inherit everything tier_1 has
oxide.group parent tier_2 tier_1
Picture a three-tier donor system. You grant baseline perks to tier_1, then set tier_2‘s parent to tier_1 and add only the extra perks; tier_2 members automatically get the baseline plus their own. Set tier_3‘s parent to tier_2 and it stacks again. When you later add a new perk for everyone, you grant it once at tier_1 and it cascades upward through the chain.
Inspecting permissions and groups
You cannot manage what you cannot see. Oxide’s oxide.show family of commands lets you audit exactly who has what. Use these constantly — they are how you confirm a grant actually landed and how you debug a “permission isn’t working” report.
oxide.show groups # list every group
oxide.show group admin # show the members of a group
oxide.show user # show a user's groups + permissions
oxide.show perms # show all permissions held by a group
oxide.show perm coolplugin.use # show who/what has a specific permission
A reliable troubleshooting routine: run oxide.show user "PlayerName" to see the player’s groups and direct permissions, then oxide.show perms on each of their groups to confirm the node is actually present and spelled correctly. Nine times out of ten the issue is a misspelled node, a player who isn’t in the group they should be, or a plugin that didn’t reload after a config change.
Command reference table
| Command | What it does |
|---|---|
oxide.grant user | Grant a permission to one player |
oxide.revoke user | Revoke a permission from one player |
oxide.grant group | Grant a permission to a whole group |
oxide.revoke group | Revoke a permission from a group |
oxide.group add | Create a new group |
oxide.group remove | Delete a group |
oxide.group set | Set a group’s display title and rank |
oxide.group parent | Make a group inherit from another |
oxide.usergroup add | Add a player to a group |
oxide.usergroup remove | Remove a player from a group |
oxide.show ... | Inspect groups, users and permissions |
Carbon uses the exact same commands
Carbon is the modern alternative modding framework for Rust. The official Rust wiki describes it as “a modern modding framework for the game Rust responsible for handling background operations and running custom plugins and extensions with maximum performance.” Crucially for this guide, Carbon was designed for seamless migration from Oxide: it offers an identical folder structure and automatic data migration tools, uses Harmony, and requires no additional patches to run existing Oxide plugins (community sources report roughly 99% Oxide-plugin compatibility).
What that means in practice is that every permission command above works unchanged on Carbon. Carbon accepts the full oxide.* command surface — the same admin and default groups, the same pluginname.permission node format, the same grant/revoke/group/usergroup verbs. On top of that, Carbon exposes a shorter o. alias (which also works on Oxide):
# These are equivalent on Carbon (and the o. alias works on Oxide too)
oxide.grant group vips coolplugin.use
o.grant group vips coolplugin.use
# Reloading: o.reload works on both; Carbon also has a native command
o.reload CoolPlugin
carbon.reload CoolPlugin
So if you migrate a server from Oxide to Carbon, your permission knowledge transfers one-to-one. The grants, groups and inheritance you already configured carry over via Carbon’s data migration, and you keep typing the same commands. The only practical difference you’ll notice is performance: Carbon uses dynamic hook loading (only the hooks a plugin actually calls are loaded), which the community reports yields higher FPS, lower RAM use and faster boot times. Carbon-specific aliases beyond o. and carbon.reload may exist — check the current Carbon docs before relying on them.
A note on wildcards
You will often see people suggest wildcard permissions — * to grant everything, or pluginname.* to grant all of one plugin’s nodes at once. These patterns are commonly used in the community, but support and exact behavior can vary by plugin, so treat them as something to verify rather than assume. The safe, predictable approach is to grant the specific nodes a plugin documents. If you do experiment with a wildcard, confirm the result immediately with oxide.show perms so you know exactly what you handed out — accidentally granting * to the default group would give every player on your server full plugin access.
Putting it together: a real VIP setup
Here is a complete, copy-pasteable example that creates a VIP rank, gives it a couple of plugin capabilities, tags it for chat, and enrolls a player. Run these from your WebRCON console or the in-game F1 console (with an auth level):
# 1) create the group
oxide.group add vips
oxide.group set vips "[VIP]" 5
# 2) grant the perks the VIP rank should include
oxide.grant group vips coolplugin.use
oxide.grant group vips vanish.allow
# 3) enroll a player by SteamID64
oxide.usergroup add 76561197854018763 vips
# 4) verify it landed
oxide.show perms vips
oxide.show user 76561197854018763
That’s the entire lifecycle. To sell a second tier later, create vips_plus, set its parent to vips, grant only the extra perks, and the higher tier automatically includes everything the base VIP rank offers. When you’re ready to scale this kind of configured, plugin-ready setup without managing the underlying machine, our managed Rust server plans ship with Oxide/Carbon support and one-click control so you can spend your time on permissions and gameplay instead of system administration. For framework installation and panel-specific steps, see the Rust documentation.
Important: reinstall your framework after every update
One operational gotcha catches every Rust admin eventually. When Facepunch ships a server update — including the monthly force wipe, such as the June 4, 2026 “Built Different” update — the update overwrites Oxide and Carbon files. After any update or wipe you must reinstall the framework before your plugins (and therefore your permissions) will load again. Your permission data itself survives in the data files, but the framework binary needs replacing. On force-wipe day, Carbon is typically patched fastest (often within hours), which matters if you’re racing to be online for the first-player rush. See our Built Different update breakdown for the full wipe-day checklist.
Frequently asked questions
What is the difference between oxide.grant user and oxide.grant group?
oxide.grant user attaches a permission directly to one specific player. oxide.grant group attaches it to a group, and every member of that group inherits it. Use user grants for one-off or testing cases; use group grants for anything you’ll repeat (VIPs, moderators, server-wide perks) because you can then manage access by simply moving players in and out of the group with oxide.usergroup.
What are the default and admin groups in Oxide?
Oxide automatically creates two built-in groups when it installs. default contains every player who connects — grant a permission here and the whole server gets it. admin contains players with an auth level (owners and moderators), and they’re placed in it automatically. Many plugins ship their admin-only nodes pre-granted to the admin group, which is why those plugins work for you but appear to do nothing for regular players until you grant the relevant node to default or another group.
How do I find a plugin’s permission node?
Permission nodes always follow the pluginname.permission format, but the exact string is defined by each plugin’s author. Check the plugin’s documentation page first, then confirm in-game with oxide.show perm or by inspecting a group with oxide.show perms . Never guess — a misspelled node fails silently, with no error, which is the most common reason admins think a plugin is broken when the grant simply never matched a real permission.
Do Oxide permission commands work on Carbon?
Yes. Carbon supports the same command surface as Oxide, including the full oxide.* permission commands, the same admin/default groups, and the same pluginname.permission format. Carbon also adds a shorter o. alias (for example o.grant), which works on Oxide as well. Because Carbon offers identical folder structure and automatic data migration, your existing permission setup transfers when you switch frameworks.
Can I grant a permission to every player at once?
Yes — grant it to the default group with oxide.grant group default . Since every connected player is a member of default, this is the standard way to enable a plugin capability server-wide. Just be deliberate about it: only put low-risk, player-friendly nodes on default, and keep administrative or destructive capabilities on the admin group or a dedicated moderator group.
Why did my permissions stop working after a Rust update?
A Facepunch update overwrites the Oxide and Carbon framework files, so after any update or monthly force wipe you must reinstall the framework before plugins will load. Your permission and group data is stored separately and generally survives, but with no framework running, no plugin checks permissions, so everything appears to be gone. Reinstall Oxide or Carbon, reload your plugins, and your existing grants take effect again. Carbon is usually patched first on wipe day.
Related Rust admin guides
- Rust RCON & server console commands — where to run these permission commands remotely.
- Top 10 admin plugins for your Rust server — plugins whose permissions you’ll be granting.
- How to see who is on your Rust server — read SteamID64s for user grants.
- How to modify the gather rate — a permission-gated plugin in action.
Free Rust Tools
Speed up your server with our free Rust tools:
Ready to play?
Run your own Rust server with XGamingServer
Spin up an always-on Rust server your friends can join in minutes — no port-forwarding, no tech headaches.





