Counter-Strike 2 Server Commands: RCON, Convars and Admin Plugins
Every verified CS2 server command and convar — RCON moderation, mp_ and sv_ settings, bots and cheats, plus CounterStrikeSharp and CS2Fixes admin frameworks.
Counter-Strike 2 has no built-in admin system — no op list, no admin menu, no SourceMod. Server control comes from RCON plus a large set of convars, and anything resembling a community admin experience is added by plugins. This guide covers RCON setup, every server command worth knowing, the convars that change how the game plays, and the plugin layer on top.
Defaults below are the engine defaults. The gamemode configs in game/csgo/cfg/ override many of them — competitive ships mp_roundtime 1.92, mp_freezetime 15 and mp_buytime 20.
1. How CS2 Admin Access Works
There is exactly one native way to prove you are the server operator: the RCON password.
| System | You authenticate with | Gives you |
|---|---|---|
| RCON | rcon_password (one shared password) |
Everything, including quit |
| Server console | Direct access to the process | The same, without a password |
| Plugins | Your SteamID64 in a config file | Per-person permissions, chat commands, a menu |
RCON is all-or-nothing — anyone with the password can shut the server down, so it is not something to hand a moderator. The moment you have more than one admin you want the plugin layer in section 10.
CS2 splits console input two ways. Commands fire once and take arguments (kick, changelevel, mp_warmup_end). Convars hold a value (mp_roundtime, sv_alltalk); typing one with no argument prints it. A few things that look like commands are convars — mp_restartgame 1 schedules a restart a second out.
CS2 convars are booleans, not just 0/1
Many CS2 convars are typed as real booleans and print as
true/falserather than1/0—mp_friendlyfire,mp_autoteambalance,sv_alltalk,mp_overtime_enable. They still accept1and0, so old CS:GO configs keep working, but do not be surprised when the console answersfalse.
2. Set Up RCON
RCON is off until you give it a password. Put it in game/csgo/cfg/server.cfg, which the server executes on map load:
hostname "My CS2 Server"
rcon_password "USE_A_LONG_RANDOM_STRING"
sv_password ""
sv_lan 0
sv_logfile 1 | Convar | Default | What it does |
|---|---|---|
rcon_password |
"" |
Admin password. Empty disables RCON entirely |
sv_password |
"" |
The join password. Empty means a public server |
rcon_address |
"" |
Target for unconnected RCON, format x.x.x.x:port |
rcon_connected_clients_allow |
true |
Whether connected players may use rcon at all |
hostname |
"" |
Server name in the browser |
sv_lan |
false |
LAN mode — no heartbeat, no Steam authentication |
sv_logfile |
false |
Write server logs to disk |
sv_hibernate_when_empty |
true |
Near-zero CPU when nobody is connected |
sv_visiblemaxplayers |
-1 |
Override the slot count reported to the browser |
To authenticate from your own client, enable the developer console in CS2's settings, then:
rcon_address 203.0.113.10:27015
rcon_password YOUR_PASSWORD
rcon status Prefix each command with rcon afterwards. If rcon returns nothing while you are playing on the server, check rcon_connected_clients_allow — it gates in-game RCON specifically.
Never reuse a password here
rcon_passwordgrants total control of the server process, and the RCON protocol is unencrypted. Use a long random string used nowhere else.sv_rcon_maxfailuresandsv_rcon_banpenaltythrottle brute force, but both are hidden convars in retail builds — firewall port 27015/tcp to your own address if you can.
Skip RCON entirely
The Console tab on your managed Counter-Strike 2 server is already attached to the server process — type commands there with no
rconprefix and no password on the wire. See Counter-Strike 2 configuration for where each config file lives.
3. Server & Player Management
Run these from the server console, your panel's Console tab, or prefixed with rcon from a game client.
| Command | What it does |
|---|---|
status |
Print connection status — userid, name, SteamID, ping, address |
kick "<name>" |
Kick a player by name |
kickid <userid|steamid> "<message>" |
Kick by userid or unique ID, with a message |
say <message> |
Broadcast a chat message to everyone |
exec <file> |
Execute a .cfg from game/csgo/cfg/ |
changelevel <map> |
Change map, keeping players connected |
map <map> |
Load a new map — drops and reloads everyone |
quit |
Shut the server down |
sv_setsteamaccount <token> |
Set the Game Server Login Token (GSLT) |
Prefer kickid over kick. Name matching breaks the moment a name contains spaces, unicode, or a substring of another name, while kickid takes the unambiguous numeric userid printed by status. A kickid also applies a temporary ban lasting sv_kick_ban_duration minutes, default 15.
Every CS2 server needs a GSLT to appear in the server browser. Generate one for app ID 730 at steamcommunity.com/dev/managegameservers and pass it as +sv_setsteamaccount <TOKEN> on the command line.
4. Bans and the Ban List
The Source ban commands survived into CS2, gated behind sv_banid_enabled (default true).
| Command | What it does |
|---|---|
banid <minutes> <userid|steamid> |
Add a user ID to the ban list. 0 is permanent |
banip <minutes> <ip> |
Add an IP address to the ban list |
removeid <steamid> |
Remove a user ID from the ban list |
removeip <ip> |
Remove an IP address from the ban list |
writeid |
Write the SteamID ban list to disk |
writeip |
Write the IP ban list to disk |
listid |
List banned user IDs |
listip |
List banned IP addresses |
Bans vanish on restart without
writeid
banidandbaniponly hold the ban in memory. Runwriteid(orwriteip) afterwards to commit it to disk — this is the most common reason a banned player walks straight back in after a map change. These eight commands are also flagged development-only in the retail build, so they do not appear in console autocomplete. They still execute; you just have to type them in full and confirm withlistidthat the ban landed.
With no per-admin accountability and no usable ban reason field, most serious communities run a plugin ban system instead — see section 10.
5. Maps and Workshop Content
| Command | What it does |
|---|---|
map <mapname> |
Load a map from disk |
changelevel <mapname> |
Change level without a full reload |
host_workshop_map <id> |
Fetch the latest version of a Workshop map and host it |
host_workshop_collection <id> |
Host a Workshop collection as a map group |
ds_workshop_changelevel <mapname> |
Change to an already-downloaded Workshop map by name |
ds_workshop_listmaps |
Dump the Workshop maps available on this server |
host_workshop_map re-downloads the map, so use it after the author publishes an update; ds_workshop_changelevel is the fast path once the file is on disk. Full setup is in How to add Steam Workshop maps for Counter-Strike 2.
6. Match & Gameplay Convars
The mp_ family is where you shape the match. Set them in server.cfg, or in a per-mode config so they survive a mode change.
| Convar | Default | What it controls |
|---|---|---|
mp_roundtime |
5 |
Round length in minutes, fractional allowed (max 60) |
mp_roundtime_defuse |
0 |
Bomb maps; 0 falls back to mp_roundtime |
mp_roundtime_hostage |
0 |
Hostage maps; 0 falls back to mp_roundtime |
mp_maxrounds |
0 |
Rounds before the map ends (competitive ships 24) |
mp_timelimit |
0 |
Minutes per map (0 = no limit) |
mp_freezetime |
6 |
Seconds players are frozen at round start |
mp_buytime |
90 |
Seconds the buy menu stays open after round start |
mp_startmoney |
800 |
Money each player gets on reset |
mp_maxmoney |
16000 |
Maximum money a player may hold |
mp_afterroundmoney |
0 |
Flat cash awarded to everyone at round end |
mp_friendlyfire |
false |
Allow team members to injure each other |
mp_autoteambalance |
true |
Force-switch players to even the teams |
mp_limitteams |
2 |
Max team size difference (0 disables, max 30) |
mp_autokick |
true |
Kick idle, team-killing and team-damaging players |
mp_warmuptime |
30 |
Warmup length in seconds (minimum 5) |
mp_warmuptime_all_players_connected |
0 |
Shorten warmup to this once everyone joins |
mp_warmup_pausetimer |
0 |
1 freezes the warmup timer indefinitely |
mp_halftime |
false |
Switch sides at halftime |
mp_overtime_enable |
false |
Play overtime instead of ending a tied match |
mp_overtime_maxrounds |
6 |
Rounds per overtime period |
mp_overtime_startmoney |
10000 |
Money at the start of each overtime half |
mp_overtime_limit |
0 |
Cap on how many overtimes can be played |
mp_teammates_are_enemies |
false |
Free-for-all — every player is a valid target |
mp_forcecamera |
0 |
1 restricts dead players to their own team |
mp_c4timer |
40 |
Seconds from arming to detonation (minimum 10) |
mp_join_grace_time |
0 |
Seconds after round start a player may join (max 30) |
mp_match_can_clinch |
true |
Allow a mercy-rule win once a team is unbeatable |
mp_spectators_max |
2 |
Spectator slots |
mp_death_drop_gun |
1 |
0 none, 1 best, 2 current or best |
mp_respawn_on_death_ct / _t |
false |
Instant respawn per team |
Commands — not convars — that act on the match immediately:
| Command | What it does |
|---|---|
mp_warmup_start / mp_warmup_end |
Start or end warmup |
mp_pause_match |
Pause at the next freeze time |
mp_unpause_match |
Resume |
mp_swapteams |
Swap sides and restart the game |
mp_backup_restore_load_file <file> |
Restore a round from a backup, written automatically while mp_backup_round_file is set (default backup) |
mp_roundtimeis minutes, and it is fractionalA mistake carried over from other Source games is
mp_roundtime 115expecting 115 seconds — CS2 clamps it to the maximum of60minutes. Competitive rounds are1.92minutes, which is 115 seconds. A two-minute round ismp_roundtime 2.
7. Server Behaviour Convars
| Convar | Default | What it controls |
|---|---|---|
sv_cheats |
false |
Master switch for every cheat command below |
sv_alltalk |
false |
Both teams hear each other's voice |
sv_deadtalk |
false |
Dead players can speak to the living |
sv_full_alltalk |
false |
Everyone, spectators included, can talk to everyone |
sv_talk_enemy_living / sv_talk_enemy_dead |
false |
Hear the enemy team, alive or dead |
sv_gravity |
800 |
World gravity |
sv_accelerate |
5.5 |
Ground acceleration |
sv_airaccelerate |
12 |
Air acceleration — raise it for surf and bhop |
sv_maxspeed |
320 |
Player speed cap |
sv_falldamage_scale |
1 |
Fall damage multiplier (0 disables) |
sv_autobunnyhopping |
false |
Auto-jump while holding space |
sv_enablebunnyhopping |
false |
Remove the speed cap on consecutive jumps |
sv_allow_votes |
true |
Allow player-initiated votes |
sv_kick_ban_duration |
15 |
Minutes a kick-ban lasts |
sv_banid_enabled |
true |
Whether the server honours banid |
sv_steamauth_enforce |
2 |
How strictly Steam authentication is required |
sv_region |
-1 |
Region reported to the server browser |
sv_pure_kick_clients |
true |
Kick clients whose files do not match, instead of only warning them |
sv_puresurvived into CS2 — most of its helper convars did not
sv_pure,sv_pure_kick_clientsandsv_pure_traceare all present in the retail CS2 build, sosv_pure 1in aserver.cfgis valid and still enforces file consistency. What Source 2 dropped is the rest of the CS:GO family —sv_pure_allow_loose_file_loads,sv_pure_allow_missing_files,sv_pure_consensus,sv_pure_retiretimeandsv_consistencyall error as unknown. A ported config keeps executing past an unknown command, so the failure is silent unless you read the log.
8. Bots
Bot management is native and needs no cheats.
| Command / convar | Type | What it does |
|---|---|---|
bot_add <t|ct> <type> <difficulty> <name> |
Command | Add a bot matching the criteria |
bot_add_ct / bot_add_t |
Command | Add a bot to a specific side |
bot_kick <all|t|ct|name> |
Command | Kick matching bots |
bot_knives_only |
Command | Restrict bots to knives |
bot_quota |
Convar (10) |
Total number of bots the server maintains |
bot_quota_mode |
Convar (normal) |
normal, fill, match or competitive |
bot_difficulty |
Convar (1) |
0 easy, 1 normal, 2 hard, 3 expert |
custom_bot_difficulty |
Convar (2) |
Bot difficulty used for offline play |
bot_chatter |
Convar (normal) |
Bot radio chatter; off silences them |
bot_dont_shoot |
Convar (false) |
Bots hold fire |
With sv_cheats 1 you also get bot_kill, bot_place (spawn a bot where you are aiming), bot_stop 1, bot_freeze, bot_crouch and bot_mimic.
9. Cheat & Practice Commands
sv_cheats 1 must be set on the server, not your client, before any of these work. Cheats are visible to every connected player, so keep them in their own config and change the map to clear them rather than unsetting convars by hand.
| Command | What it does |
|---|---|
noclip |
Toggle fly / no-collision. Optional 0 or 1 to force it |
god |
Toggle invulnerability |
hurtme <n> |
Damage yourself by N |
setpos <x> <y> <z> |
Teleport to coordinates |
setang <pitch> <yaw> |
Snap your view angles |
give <item> |
Give yourself a weapon, e.g. give weapon_ak47 |
endround |
End the current round immediately |
ent_create <name> |
Create an entity where you are looking |
ent_fire <target> <input> |
Fire an input at a map entity |
sv_rethrow_last_grenade |
Re-throw the last grenade thrown on the server |
host_timescale <n> |
Speed up or slow down the server clock |
Cheat-gated convars worth knowing: sv_infinite_ammo (1 = no reloads, 2 = infinite reserve), sv_regeneration_force_on, bot_stop and mp_ignore_round_win_conditions. The rest of a practice setup is ordinary convars:
sv_cheats 1
sv_infinite_ammo 2
ammo_grenade_limit_total 5
mp_warmup_pausetimer 1
mp_buytime 60000
mp_buy_anywhere 1
mp_maxmoney 60000
mp_startmoney 60000
mp_limitteams 0
mp_autoteambalance 0
mp_freezetime 0
mp_roundtime 60
mp_roundtime_defuse 60
mp_ignore_round_win_conditions 1
sv_grenade_trajectory_prac_pipreview 1
sv_grenade_trajectory_prac_trailtime 8
sv_showimpacts 1
sv_showimpacts_time 10
mp_restartgame 1 Save that as game/csgo/cfg/practice.cfg and load it with exec practice. sv_grenade_trajectory_prac_pipreview is the picture-in-picture lineup preview and sv_grenade_trajectory_prac_trailtime (max 8) is how long the trail lingers.
10. The Plugin Layer
Everything above works on a stock server. For chat commands, an admin menu, per-person permissions and persistent bans with reasons, you need a three-layer plugin stack.
Metamod:Source is the loader. CS2 requires the 2.x development branch — the 1.12 stable release is Source 1 only and will not load. Copy addons/ into game/csgo/, then add one line to game/csgo/gameinfo.gi:
Game csgo/addons/metamod Restart and run meta list to confirm it loaded — worth repeating after every CS2 update, since game updates break Metamod regularly and a broken plugin usually means a server that will not boot.
CounterStrikeSharp is the framework almost everything is written against now. It runs on Metamod and lets plugins be written in C#. First-time installs need the with-runtime build, which bundles .NET; Linux hosts may also need libicu. Admins go in configs/admins.json:
{
"YourName": {
"identity": "76561197960287930",
"flags": ["@css/generic", "@css/kick", "@css/ban", "@css/changemap"]
}
} | Flag | Grants |
|---|---|
@css/generic |
Generic admin — required by most commands |
@css/kick |
Kick players |
@css/ban / @css/unban |
Ban and unban |
@css/slay |
Slay, slap and similar |
@css/changemap |
Change map |
@css/cvar |
Change convars |
@css/config |
Execute config files |
@css/chat |
Chat commands (gag, mute) |
@css/vote |
Start votes |
@css/password |
Set the server password |
@css/rcon |
Run RCON commands |
@css/cheats |
Toggle sv_cheats and use cheat commands |
@css/reservation / @css/vip |
Reserved slot and VIP marker for other plugins |
@css/root |
Everything, and bypasses immunity |
CounterStrikeSharp is a framework, not an admin mod
Installing it does not give you
!kick,!banor!slay. Its own documentation is explicit that traditional admin commands are left to individual plugins — CounterStrikeSharp supplies the permission model and the API, and you add an admin plugin on top. This trips up everyone arriving from SourceMod, where the two were one package.
CS2Fixes is the other half of the ecosystem — a Metamod plugin independent of CounterStrikeSharp, originally built for zombie escape but widely used for its admin system. It ships the commands people expect: kick, ban, unban, mute, gag, slay, slap, noclip, give, health, money, revive, map, setnextmap, extend, who, status, getpos, setpos, spec, beacon, glow and the RTV set. Run them from chat with ! or /, or from console with a c_ prefix (c_noclip); admins go in addons/cs2fixes/configs/admins.cfg. Its targeting syntax is the fastest thing in this article: @all, @ct and @t for groups, $ for a SteamID64, & for an exact name, # for a userid from status.
11. FAQ
How do I become admin on my own CS2 server?
Set rcon_password in game/csgo/cfg/server.cfg, then run rcon_password YOUR_PASSWORD in your in-game console while connected. Every command in this guide then works prefixed with rcon. There is no native per-person admin list — for that you need Metamod:Source plus CounterStrikeSharp or CS2Fixes.
Why do my bans disappear after a restart?
banid and banip only write to memory. Run writeid and writeip afterwards to commit them to disk. Those commands are also hidden from autocomplete in the retail build, so a typo fails quietly — check with listid that the ban actually landed.
Why does sv_pure say unknown command?
It should not — sv_pure is still in the retail CS2 build, alongside sv_pure_kick_clients and sv_pure_trace. If you are seeing that error, check which line actually produced it. The CS:GO helper convars sv_pure_allow_loose_file_loads, sv_pure_allow_missing_files, sv_pure_consensus, sv_pure_retiretime and sv_consistency did not survive Source 2 and do error as unknown. When a config hits an unknown command the server prints an error and carries on with the rest of the file, so a ported server.cfg can look like it worked while quietly skipping lines.
Do CS2 admin commands need a slash?
Not in the server console or over RCON — type status, not /status. The ! and / prefixes belong to plugin chat commands. CS2Fixes accepts both in chat and uses c_ from console; CounterStrikeSharp plugins conventionally use css_.
How do I set up a practice server?
Put the practice convars in game/csgo/cfg/practice.cfg and run exec practice. You need sv_cheats 1 for noclip, sv_infinite_ammo and sv_rethrow_last_grenade, but the buy-anywhere, long-round and grenade-trail settings are ordinary convars — section 9 has a config to copy.
Why is my server not showing in the browser?
Almost always a missing or invalid Game Server Login Token — generate one for app ID 730 and pass it as +sv_setsteamaccount <TOKEN>. Also confirm sv_lan is 0, since a LAN server sends no heartbeat at all.
Can I run admin commands without any plugins?
Yes — sections 3 through 9 are entirely native. Plugins add per-person permissions, an in-game menu, gagging and muting, ban reasons and immunity. That is real quality-of-life, but none of it is required to run and moderate a server.
12. What to Read Next
- Getting started with your Counter-Strike 2 server — first boot, ports and connecting
- Counter-Strike 2 configuration — where each config file lives and what executes when
- How to add Steam Workshop maps for Counter-Strike 2 — Workshop IDs, collections and map groups
Made with 💜 by GameServerKings

Need a Counter-Strike 2 server?
Deploy an instantly-provisioned Counter-Strike 2 server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $11.50 /month