Rust has around 2,000 console commands. You will use about twenty of them. This page is sorted by how often you actually reach for one, with config recipes at the bottom.
New to running a server? Start with the setup guide first, and if you prefer video, SRTBull's Rust Admin Academy walks through most of the admin basics.
How to run commands
Press F1 in game for the console. Admins and moderators can run admin
commands there. You can also send them through RCON (BattleMetrics, RustAdmin)
or put convars in server.cfg so they persist through restarts.
The difference matters: a command does something once. A convar sets a
value, and if you want it to survive a restart it belongs in server.cfg.
Setting up admins
The first commands you run on a new server. Both take a Steam64 ID, and both accept an optional name and reason for your own records.
| Command | What it does |
|---|---|
ownerid <steamid> <name> <reason> |
Full admin (auth level 2). Everything, including granting other admins |
moderatorid <steamid> <name> <reason> |
Moderator (auth level 1). Moderation commands, not server config |
removeowner <steamid> |
Revoke admin |
removemoderator <steamid> |
Revoke moderator |
server.writecfg |
Save current convars and the admin/ban list to disk |
Run server.writecfg after granting access. It saves the user list, so
without it your new admin is gone on restart.
writecfg writes convars to cfg/serverauto.cfg, not the server.cfg you
hand-edit. The server loads serverauto.cfg first and server.cfg second, so
server.cfg wins any conflict.
That order causes a specific trap. Set a convar live, writecfg it, and it
lands in serverauto.cfg. If the same convar is also sitting in your
server.cfg with the old value, the next restart silently reverts your
change. If a setting keeps reappearing after you thought you changed it, that
is why. Keep the convars you care about in one file.
The ones you'll use constantly
These are worth memorizing.
| Command | What it does |
|---|---|
kick <player> <reason> |
Remove a player from the server |
ban <player> <reason> [duration] |
Ban someone who is connected. Accepts a name, SteamID, or IP |
banid <steamid> <username> <reason> [duration] |
Ban by SteamID whether they are online or not |
unban <steamid> |
Lift a ban |
mute <player> / unmute <player>
|
Silence or restore voice and chat |
say <message> |
Broadcast a server message |
spectate <name or steamid> |
Watch a player. Strip your gear first, it kills your character |
respawn |
Leave spectate and respawn |
teleport2marker |
Teleport to your map marker. The one you'll run most |
teleport2me <player> |
Bring a player to you |
teleport <player> <target> |
Send a player to another player |
teleportlos |
Teleport to whatever you're looking at |
ent kill |
Delete the entity you're looking at. The workhorse for cleaning up junk |
combatlog |
Your recent damage events. Admins can add a player name to read theirs |
save |
Force a world save before you do anything risky |
ban and banid are not interchangeable. ban resolves a name, SteamID,
or IP, but only against connected players: if the target has disconnected you
get "Player not found" and nothing happens. banid takes a raw SteamID and
works whether or not they are online, which is what you want for a cheater who
already left. Use ban while they're on, banid after.
Both ban the family-share owner too. If the account is family-shared, the owning account gets banned in the same action. That closes the obvious re-entry route, and explains appeals from someone insisting they were banned for nothing.
Both take an optional duration as a final argument, so you can issue a temporary ban instead of a permanent one. An expiry in the past is rejected.
spectate kills your character on execution, so drop your gear and clear your
craft queue first. Full workflow in the
cheater guide.
ent works on whatever you're looking at, and kill is only one of its
subcommands. The full set is kill, lock, unlock, open, close,
who, auth, upgrade, downgrade, setgrade, repair, maxhp,
debug, undebug. ent who and ent auth are the two worth remembering
after kill: who built this, and who is authed on it. If you already have a
network ID, entid <subcommand> <id> does the same thing without needing to
look at it.
combatlog on its own prints your damage log. As an admin you can pass a
player to read theirs, and it works on sleepers, so a disconnected target is
still readable. Add --json if you want it machine-readable, and
combatlog_outgoing filters to damage they dealt.
There are also console commands for listing players (players, status,
playerlist). In practice you won't use them much: if you run
BattleMetrics its player list and session
history are faster and searchable, which is one more reason it's the first
thing to set up.
Occasional but useful
Not daily, but you will want them eventually.
| Command | What it does |
|---|---|
inventory.give <item> <amount> |
Give yourself items |
inventory.giveto <player> <item> <amount> |
Give items to someone else |
inventory.giveall <item> <amount> |
Give an item to everyone online |
inventory.clearinventory <player> |
Empty a player's inventory |
entity.spawn <prefab> |
Spawn an entity where you are looking |
env.time <0-24> |
Set the time of day |
env.progresstime <true/false> |
Stop or start time advancing. Freeze it at day for a build server |
env.addtime <hours> |
Advance the clock |
server.backup |
Back up the server folder |
server.readcfg |
Reload config files without restarting |
inventory.givebp <item> |
Give a blueprint |
teaminfo <player> |
See a player's team, useful for group-ban decisions |
queue |
Current join queue |
skipqueueid <steamid> |
Let a SteamID skip the queue |
killplayer <player> |
Kill a specific player |
global.restart |
Restart the server with the standard countdown |
kickall <reason> |
Disconnect everyone, useful right before a restart |
server.fps |
Server frame rate. First thing to check when players report lag |
banlistex |
Ban list with reasons and usernames |
mutelist |
Who is currently muted |
The give and spawn commands take shortnames, not display names, so it is
rifle.ak rather than "Assault Rifle". uMod publishes the full
item shortname list,
which is the page to keep open the first few times you use these.
Rare, but good to know they exist
You may go a whole wipe without touching these.
| Command | What it does |
|---|---|
entity.deleteby <steamid> |
Destroy every entity a player built. Read the warning below before using |
debug.puzzlereset |
Reset monument puzzles, optionally within a radius |
global.clearallsprays |
Remove all player spray tags |
cleardroppeditems |
Clear dropped loot from the ground |
global.teleportpos <x y z> |
Teleport to exact coordinates |
global.teleport2death <player> |
Jump to where a player died |
growableentity.growall |
Instantly mature all plants |
sleepingusers |
List sleepers on the server |
debug.foodspoilingspoilall |
Spoil all food on the server |
injure <player> / recover <player>
|
Put a player into the wounded state, or pick them back up |
sleep / wakeup <player>
|
Force a player to sleep or wake |
quit |
Shut the server down without restarting it |
global.serverinfo |
Server info dump including uptime and entity count |
Use entity.deleteby with extreme caution. It destroys everything that
SteamID placed, and you have no easy way to tell what that includes. A base
they built weeks ago may have been raided, taken over, and lived in by someone
else since. Deleting a griefer's work can quietly delete an innocent player's
home. Prefer ent kill on the specific offending entities, and save first.
Creating events on demand
Handy for running something for your players, testing, or restarting an event that failed to fire.
| Command | What it does |
|---|---|
heli.call |
Send a patrol helicopter to a grid coordinate |
heli.calltome |
Order the active helicopter to fly to you |
supply.drop |
Spawn a supply drop at your position |
supply.call <grid> |
Call a supply drop to a grid coordinate |
bradleyapc.spawnroadbradley |
Spawn a Bradley on the road. Note the parent is bradleyapc, not bradley
|
bradley.quickrespawn |
Force an immediate Bradley respawn |
spawn.cargoshipevent |
Start the cargo ship event immediately |
spawn.ch47event |
Trigger a CH47 Chinook scientist event |
cargoship.egress |
Send the current cargo ship away early |
travellingvendor.spawn |
Spawn a Travelling Vendor at your position |
eventschedule.triggerevent <name> |
Trigger any scheduled event by partial name |
eventschedule.killallevents |
Cancel every running event |
events.print_server_events |
List every registered event and its schedule |
events.set_event_enabled <name> <true/false> |
Turn a specific event on or off |
Weather
Weather convars take a 0 to 1 value and override the natural cycle until you reset them.
| Command | What it does |
|---|---|
weather.rain 1 |
Force rain. 0 stops it |
weather.fog 1 |
Force fog |
weather.wind 1 |
Force wind |
weather.thunder 1 |
Force thunder |
weather.load <preset> |
Apply a named weather preset |
weather.report |
Print current weather state |
weather.reset |
Clear every override and return to the natural cycle |
Run weather.reset when you're done, otherwise your server is stuck in
whatever you set until someone notices.
Config recipes
Common jobs, with the exact commands. Set them live to test, then either add
them to server.cfg or run server.writecfg.
Boost animal spawns
Population is set per species, as a value per square kilometre. Defaults in brackets:
bear.population 4 # (2)
boar.population 8 # (5)
chicken.population 4 # (3)
stag.population 6 # (3)
polarbear.population 2 # (1)
wolf2.population 4 # note the 2
It is wolf2.population, not wolf.population. Wolves were reworked and
the convar name carries the version. Setting wolf.population fails silently.
The same per-square-km convar exists for crocodile, panther, tiger,
zombie, snakehazard, and ridablehorse.
Vehicles use the same pattern but are counted server-wide rather than per
km²: minicopter.population, modularcar.population, traincar.population,
motorrowboat.population, hotairballoon.population.
After changing any of them, repopulate without waiting for a wipe:
spawn.fill_populations
There are also two global scalars that multiply every population at once, useful if you want more of everything rather than more of one thing:
spawn.max_density 2 # density ceiling at high player count, default 1
spawn.min_density 1 # density floor at low player count, default 0.5
Disable or throttle AI
ai.move false # AI stops moving, other logic still runs
ai.think false # disables AI decision-making entirely, supersedes the rest
ai.npc_enable false # stop NPCs spawning at all
ai.think false is the big hammer. Useful for a test or build server, and for
clawing back performance on a struggling box. Dropping chicken.population also helps,
chickens are a surprising share of AI load.
Turn decay off or slow it down
decay.scale 0 # no decay at all
decay.scale 0.5 # half speed
decay.upkeep_period_minutes controls how long a base survives without
upkeep, default 1440 (24 hours).
Improve server performance
server.saveinterval 600 # save less often, default 300
fps.limit 60 # cap server FPS on weak hardware
Then check server.fps under load. The numbers that matter:
- 60 is ideal. That's what you want a healthy server sitting at.
- 20 is the floor. Below 20, vehicle handling becomes noticeably bad.
If you're sitting under 20 with players on, you are CPU-bound. Rust is single-thread heavy, so more cores will not save you, you need faster ones. See the hosting section of the setup guide.
Anti-cheat enforcement
Rust's built-in AntiHack has convars worth knowing before you start blaming plugins for false kicks.
antihack.flyhack_protection 3 # default 3
antihack.speedhack_protection 3 # default 3
antihack.noclip_protection 3 # default 3
antihack.enforcementlevel 1 # 0 none, 1 kick, 2 ban. Default 1
antihack.userlevel 2 # auth level exempt from checks. Default 2
antihack.reporting false # log violations to console
Turn antihack.reporting true on temporarily when players report being kicked
for nothing: it prints the violations so you can see which check is firing.
antihack.userlevel 2 is why admins do not trip these; drop it to 0 if you
want your own account checked too.
This is Facepunch's own protection, and it is not a substitute for catching cheaters properly.
Switch the server to PVE
server.pve true # default false
Server-wide PVE, no plugin needed. Most PVE servers still run a plugin for finer control (raid rules, event PVP zones), but the vanilla toggle exists.
What you cannot do without plugins
Gather rates and day/night length are not vanilla server settings in current Rust, and neither are kits, teleport requests, or homes. They need plugins, covered in the admin plugin list.
Crafting is the exception people get wrong in both directions. craft.instant true is a real vanilla convar and makes all crafting finish immediately.
What vanilla cannot do is a partial speedup, so a 2x craft server still
needs a plugin.
Commands vs plugins
Vanilla commands handle moderation and world state. They do not triage your report queue, screen connecting accounts, or give you a graduated response for a caught cheater. That is where ReportMe and Payback fit, and both are covered in the cheater guide.
Questions: discord.fragmod.com.