Counter-Strike 2 server administration has three separate control layers: the developer or server console, authenticated RCON, and plugin permissions. Use the console for a local game or a server you can access directly, RCON for broad remote control, and a permission plugin when staff need only selected actions such as kicking, banning, or changing maps. The right command can still appear to do nothing if it is entered in the wrong channel, requires a cheat flag, or is unavailable in the server’s build.
This guide explains how to enable and use each interface, shows the commands administrators use most often, and provides a safe workflow for granting access without handing every moderator the server’s RCON password.
What are the three ways to administer a CS2 server?
Choose the interface by where you are connected and how much authority the operator should have. A local console and the dedicated-server console execute commands directly; external RCON reaches the server over the network; plugin chat commands expose only the actions assigned to a player’s identity.
| Method | Where you type | Control scope | Dependency | Best use |
|---|---|---|---|---|
| Developer console | In-game console opened with ~ |
Client settings and commands for a locally hosted or accessible session | Built into the game; console must be enabled | Testing, local practice, and direct administration |
| Dedicated-server console | The host process, terminal, or hosting panel console | Server-side commands and ConVars | Dedicated server access or a provider panel | Live server maintenance without joining the game |
| External RCON | An RCON client or hosting panel | Broad server control authenticated by the RCON password | -usercon, a non-empty rcon_password, and the provider’s connection details |
Remote operation by trusted owners and administrators |
| Plugin permissions | Usually a chat prefix such as !, /, or ., plus plugin or server console |
Only the flags assigned to each SteamID64 | CounterStrikeSharp and an admin plugin with a valid admins.json |
Delegating moderation without exposing full RCON |
Valve describes the console as a text-based interface for executing commands and changing global settings. That distinction matters: a plugin command typed in chat is not the same thing as a console command, and an external RCON client normally sends the command itself rather than adding an in-game rcon prefix.
How do I enable and use the CS2 developer console?
Enable the console before trying local commands. This interface is useful for a listen server, a practice session, or a server where you already have console access.
- Open Settings > Game.
- Set Enable Developer Console (~) to Yes.
- Press the
~key to open the console. On keyboards with a different layout, use the key assigned to the console in your controls. - Enter one command per line and press Enter. Watch the console response, then confirm the effect in the next round, map, or player list.
Local commands may affect your client rather than the dedicated server. If another player cannot see the change, repeat the command in the server console or through RCON. A command that changes a server ConVar may also be blocked unless the host permits it or sv_cheats 1 is enabled.
How do I use RCON in Counter-Strike 2?
RCON is the remote, server-side interface for operators who are not sitting at the server console. CS2’s external Source RCON workflow requires the server to start with -usercon and to have a non-empty rcon_password. A hosting panel may provide its own connection form, so follow that provider’s documented address, port, and authentication method.
Prepare the server
- Add
-userconto the server’s launch options if the host requires it. - Set a strong, non-empty
rcon_passwordin the server configuration or startup environment. - Restart the server when the host requires a restart for launch-option changes.
- Keep the password out of public chat, screenshots, scripts shared with moderators, and source-control repositories.
Connect from an RCON client or panel
- Enter the server address and the RCON port supplied by the host. The game port and RCON port are not necessarily the same.
- Authenticate with the configured RCON password.
- Send a bare command such as
status; do not prepend the in-game textrconunless the particular client explicitly documents that syntax. - Read the returned output. A successful connection should return the server’s status rather than only a local-client response.
For example, a hosting panel may show an input labelled “Command.” Entering rcon status in that panel is valid only if the panel specifically asks for the in-game prefix; many external clients expect just status. This small difference is a common source of failed or apparently ignored commands.
When should RCON be restricted?
RCON has server-wide authority. Use it only for trusted operators, rotate the password after staff changes, and prefer a permission plugin for routine moderator work. If a host offers IP restrictions, encrypted transport, or separate operator accounts, enable those controls rather than distributing one shared password.
How do I give someone admin access without giving them RCON?
Use CounterStrikeSharp permissions. Its admins.json maps a SteamID64 to named flags, allowing a moderator to run only the commands needed for the job. Keep the root flag for the server owner and assign immunity values so lower-ranked staff cannot act on protected administrators.
Assign an identity and flags
Find the person’s SteamID64, then add an entry in the plugin’s admins.json. The exact JSON nesting can vary with the installed admin plugin, so preserve the structure generated by that plugin. A representative entry looks like this:
{
"76561198000000000": {
"identity": "Moderator",
"flags": ["@css/generic", "@css/kick", "@css/ban", "@css/slay"],
"immunity": 20
}
}
The numeric identity above is an example format; replace it with the administrator’s real SteamID64. Common flags include @css/generic, @css/kick, @css/ban, @css/unban, @css/slay, @css/changemap, @css/cvar, @css/config, @css/chat, @css/vote, @css/password, @css/cheats, @css/rcon, and @css/root.
Choose the smallest useful permission set
| Role | Typical flags | Why |
|---|---|---|
| Chat moderator | @css/generic, @css/chat, optionally @css/slay |
Handles chat and immediate player issues without map or configuration control |
| Match moderator | Moderator flags plus @css/kick, @css/ban, and @css/changemap |
Runs a scheduled match and removes disruptive players |
| Configuration operator | @css/cvar, @css/config, and only the moderation flags required |
Changes settings without granting unrestricted RCON |
| Owner | @css/root |
Reserved for the person responsible for the server |
Immunity values run from 0 to 100. A higher-immunity administrator can be protected from actions by someone with a lower value, depending on the plugin’s enforcement rules. After editing the file, reload the plugin or restart the server as its documentation requires, then verify the account in-game.
Verify the plugin is active
From the server console or RCON, run meta list to inspect the plugin loader and css_plugins list to confirm the admin plugin is loaded. If either command does not show the expected component, changing admins.json will not create working permissions.
Which CS2 commands are used for player moderation and inspection?
Start with identity and state inspection before taking action. The output of status can include connected players and identifiers; users helps find user IDs on servers that support it.
| Command | Purpose | Example |
|---|---|---|
status |
Displays server state and connected-player information where supported | status |
users |
Lists users and their server user IDs | users |
kick |
Removes a player from the server | kick <user-or-player> |
dropclient |
Drops a client connection | dropclient <userid> |
banid |
Adds an identifier to the server’s ban list | banid <userid-or-id> |
addip |
Adds an IP address to an IP ban list where supported | addip <minutes> <ip> |
listid |
Lists stored identifier bans | listid |
listip |
Lists stored IP bans | listip |
Parameter syntax and accepted identifiers can vary by build and host implementation. Run status first, copy the identifier exactly as displayed, and check the command’s help output or the current server reference before applying a permanent ban.
What commands change the map, round, and match length?
Use maps to list valid map names before changing level. Then apply the narrowest change: a level change for a new map, a match restart for a clean restart, or a round restart when the host supports that control.
| Command | Effect | Example |
|---|---|---|
maps |
Lists maps known to the server | maps |
changelevel <map> |
Loads a different map | changelevel de_dust2 |
mp_restartgame 1 |
Restarts the match after a short delay | mp_restartgame 1 |
sv_restartround |
Restarts the round using the server’s supported setting | sv_restartround |
A map change interrupts the current match and may reload configuration files. Warn players before using it on a public server, and verify that the target name appears in maps or the host’s map list.
Which commands control teams, time, money, and friendly fire?
Match pacing is controlled by ConVars. Set them in the server console, RCON, or a plugin that has the appropriate configuration permission. Defaults and accepted ranges can change with the running build, so query the live server rather than relying on a value copied from an older Counter-Strike version.
| ConVar | Controls | Example use |
|---|---|---|
mp_autoteambalance |
Automatic balancing between teams | Enable or disable balancing for a format |
mp_limitteams |
Maximum team-size difference | Allow or restrict uneven teams |
mp_freezetime |
Freeze period at round start | Adjust buy and setup time before movement |
mp_roundtime |
Round duration | Set a shorter practice round or longer event round |
mp_timelimit |
Map time limit | Control when a map rotates by time |
mp_maxrounds |
Maximum rounds on a map | Set a finite match length |
mp_winlimit |
Rounds needed to end a map by wins | Use a win-based end condition |
mp_friendlyfire |
Damage to teammates | Enable it for a competitive ruleset |
mp_buytime |
Buy period duration | Give players more or less purchase time |
mp_startmoney |
Starting money | Set an economy baseline for a match |
mp_c4timer |
Bomb timer | Adjust the time between plant and detonation |
When changing several values, apply them through a versioned configuration file or a documented startup sequence. That makes the intended rules reproducible after a restart instead of leaving a one-off console change that silently disappears.
How do I add bots and create a practice session?
Bot and warmup commands are useful on a private server, but commands marked with the cheat flag require sv_cheats 1. Do not enable cheats on a public production server merely to test a practice command.
bot_addadds a bot according to the server’s available parameters.bot_kickremoves bots.mp_warmup_timechanges the warmup duration.mp_restartgameapplies a clean restart after practice settings are in place.
Keep a separate practice configuration and restore normal competitive values before opening the server to players. If a command is rejected, inspect its current flags and the server’s cheat state rather than repeatedly sending the same line.
What is a safe workflow for every administrative change?
A repeatable sequence prevents wrong-channel errors and makes updates easier to audit.
- Identify the running build. CS2 OpenDev’s command reference currently indexes build 25966348 (2026) and more than 1,138 commands. Confirm that the server you operate matches the reference version.
- Classify the item. Determine whether you are using a command, a ConVar, a plugin command, or a configuration-file setting. A ConVar may have replication or permission rules that a simple command does not.
- Select the channel. Use the local console for a local session, the dedicated console for direct server work, external RCON for remote server control, or plugin chat for a delegated staff action.
- Check identity and connectivity. Run
status; on a plugin server also runmeta listandcss_plugins list. - Apply one narrow change. Avoid combining unrelated settings in one untracked paste. Record the exact command and its intended value.
- Verify the result. Read the response and observe the next round, map state, player list, or plugin output.
- Persist the decision. Put recurring settings in the server’s configuration-management process so an update or restart does not revert them unexpectedly.
Why does my CS2 admin command not work?
Most failures have a predictable cause. Work through the branch that matches the symptom instead of changing several settings at once.
Nothing happens
Check whether the line was entered in chat, the local console, the server console, or RCON. A chat prefix such as ! belongs to a plugin command; a native console command typed into chat will usually be ignored. If the command is server-side, move it to the server console or an authenticated RCON session.
Permission denied
Inspect the SteamID64 key, JSON syntax, required @css/* flag, and immunity ordering in admins.json. Confirm that the plugin reloaded the file and that the account is connected under the identity you edited.
RCON authentication fails
Verify the -usercon launch option, the non-empty rcon_password, the address and port supplied by the host, and the command format expected by the client. External clients commonly require a bare command while an in-game console uses the rcon prefix.
The server says unknown command or behavior changed
Compare the running CS2 build with the build-specific command reference. A command can be renamed, removed, gain a new flag, or accept different ranges after an update. Check whether the item is a plugin command that disappeared because its plugin failed to load.
A plugin command is missing
Run meta list and css_plugins list. If the loader or plugin is absent, fix that installation or startup problem before editing permissions; an inactive plugin cannot process chat prefixes.
Where can I check command flags and current availability?
Use a build-matched command index rather than assuming that a command from an older Counter-Strike release still behaves identically. CS2 OpenDev labels commands with flags such as cheat and replicated: a cheat-marked command requires sv_cheats 1, while a replicated value is sent to and enforced on connected clients. Treat those labels as operational constraints, not as decoration.
Before changing a live server, confirm the installed game build, the host’s wrapper or panel behavior, and the plugin version. Hosting providers can abstract RCON and configuration paths, so their documented connection method takes precedence over a generic client tutorial.
Quick reference: commands administrators use most
| Task | Command | Channel note |
|---|---|---|
| Inspect players and server | status |
Use server console or RCON for authoritative output |
| List maps | maps |
Run before selecting a map name |
| Change map | changelevel <map> |
Interrupts the current match |
| Restart match | mp_restartgame 1 |
Short delay before restart |
| Inspect plugin loader | meta list |
Plugin/server console or RCON |
| Inspect CounterStrikeSharp plugins | css_plugins list |
Requires CounterStrikeSharp |
| Add a bot | bot_add |
Keep practice changes isolated |
| Remove bots | bot_kick |
Use in a private or practice configuration |
| Set warmup duration | mp_warmup_time |
Check the live value and accepted range |
Frequently Asked Questions
Can I run CS2 server commands from the main menu?
The developer console can be opened from the main menu after it is enabled, but a command still affects only the session and permissions available at that moment. Dedicated-server changes require the server console, RCON, or a plugin with authority on that server.
How do I find a player’s SteamID64 for admin permissions?
Use the server’s player and identity output, such as status where supported, then copy the SteamID64 exactly into the permissions file. Test the account after reloading the plugin because a typo creates a valid-looking entry that matches nobody.
Will a CS2 command survive a server restart?
A command entered interactively changes the live process and may be lost when the server restarts or changes map. Put recurring values in the host’s managed configuration or startup settings, then verify them after an update.
Why can one admin ban players but not change the map?
Plugin permissions are independent flags. The account may have @css/ban without @css/changemap; add only the missing flag, reload the permission configuration, and leave broader RCON or root access unassigned.