Set up admins on a CS2 server
How to give yourself and your staff admin powers on a CS2 server with CounterStrikeSharp, including the SteamID format the admin file needs, what the permission flags mean, and how to test a new admin without locking yourself out.
6 min read · Updated Oct 21, 2026 · By GuavaHost Team
CS2 has no built-in admin system. The owner gets RCON, a remote console, and everybody else gets nothing. In-game admin commands like kick, slay, ban and change map come from a plugin framework, and on CS2 that framework is CounterStrikeSharp.
RCON is not an admin system
Before anything else, know the difference between the two ways to control a server.
RCON is the raw remote console. You set rcon_password in server.cfg, then from your in-game console run rcon_password yourpassword followed by commands prefixed with rcon, for example rcon mp_restartgame 1. Our guide to what RCON is covers the mechanics.
That makes RCON fine for you and wrong for a moderator: it is complete control, with no partial permissions and no record of who did what. Admin flags let a moderator kick a griefer without being able to wipe your configs, which is the reasoning behind giving staff only the permissions they need.
SourceMod does not work here
If you have run a CS:GO or Team Fortress server you will know SourceMod and its admins_simple.ini. SourceMod does not run on Counter-Strike 2, because CS2 is built on the Source 2 engine and SourceMod was written for Source 1. Old .smx plugins and old admin files will not load.
The equivalent on CS2 is CounterStrikeSharp, usually shortened to CSS, which runs on top of Metamod:Source. Its admin system keeps the same ideas, identities, flags, groups and immunity, in JSON rather than INI.
Step 1: install the framework
Admins come from the framework, so it goes in first. Follow our guide to installing CS2 plugins with Metamod and CounterStrikeSharp, which covers the gameinfo.gi edit people miss, and confirm with meta list in the Console that CounterStrikeSharp is loaded before carrying on. Take a snapshot on the Backups page too.
Step 2: find your SteamID64
The admin file identifies people by SteamID, and CounterStrikeSharp wants the 64 bit form: a 17 digit number starting 7656119, for example 76561198000000000.
You will see three formats in the wild:
- SteamID64,
76561198000000000. This is what you need. - SteamID3,
[U:1:40000000]. Common in logs. - Legacy SteamID,
STEAM_1:0:20000000. The old CS:GO style, and whatstatusprints in some consoles.
To get yours, open your Steam profile in a browser. If you have not set a custom URL, the number after /profiles/ is already your SteamID64. If you have, paste the profile link into any public SteamID lookup site to convert it.
For a player on the server right now, type status in the Console tab. The output lists everyone connected with their SteamID, which you can convert if it comes out in the legacy format.
Step 3: edit the admins file
The file is game/csgo/addons/counterstrikesharp/configs/admins.json. It exists after the first successful start of CounterStrikeSharp. Open it from the Files tab and you will find a JSON object where each entry is one person:
{
"Zach": {
"identity": "76561198000000000",
"flags": ["@css/generic", "@css/kick", "@css/ban", "@css/changemap"],
"immunity": 100
},
"Moderator Sam": {
"identity": "76561198000000001",
"flags": ["@css/generic", "@css/kick"],
"immunity": 20
}
}
The name in quotes is a label for you, not the player's Steam name, so make it something you will recognise in six months. identity is the SteamID64, flags is the permission list, and immunity is 0 to 100, stopping a lower ranked admin from acting on a higher ranked one.
JSON is strict: every entry needs its comma except the last, and a stray trailing comma stops the file loading. If admin breaks right after an edit, check that first.
What the flags mean
Flags are the permission system. A plugin declares which flag its command needs, and the server checks your list before running it. The standard set:
| Flag | Covers |
|---|---|
@css/generic | Being an admin at all. Most plugins expect this alongside anything else. |
@css/kick | Kicking players. |
@css/ban and @css/unban | Bans and lifting them. |
@css/slay | Slay, slap and similar in-round punishments. |
@css/changemap | Changing the map. |
@css/cvar | Changing server cvars live. |
@css/config | Running config files. |
@css/chat | Admin chat and messaging commands. |
@css/vote | Starting votes. |
@css/password | Setting the server password. |
@css/cheats | Turning sv_cheats on, which belongs only on a practice server. |
@css/rcon | Sending RCON level commands through the plugin. |
@css/root | Everything, present and future. |
@css/root is tempting and worth resisting for anybody but you: a moderator with root can change your configs and server password as easily as they can kick somebody. Individual plugins may add custom flags too, documented in their readme, and those go in the same flags list.
Groups, so you are not editing ten entries
Rather than repeating a flag list for every moderator, define groups in game/csgo/addons/counterstrikesharp/configs/admin_groups.json:
{
"#css/moderator": {
"flags": ["@css/generic", "@css/kick", "@css/chat"],
"immunity": 20
},
"#css/admin": {
"flags": ["@css/generic", "@css/kick", "@css/ban", "@css/changemap", "@css/cvar"],
"immunity": 60
}
}
Then point a person at a group in admins.json instead of listing flags:
{
"Moderator Sam": {
"identity": "76561198000000001",
"groups": ["#css/moderator"]
}
}
Group names start with #. Now promoting your whole moderator team is one line in one file.
Step 4: load and test it safely
- Save the file.
- In the Console tab, run
css_admins_reload. If your build does not recognise that command, press Restart at the top of the server page instead. - Watch the Console as it loads. A JSON error is printed here and is the usual cause of "my admin just stopped working".
Now test it, and test it the boring way:
- Add yourself first, with the flags you want, and confirm a harmless command works. Something like a chat or info command, not a ban.
- Add a new moderator with the smallest flag list that does their job, then have them try one command while you watch the Console.
- Keep
rcon_passwordset and known only to you. That is your way back in if an admin plugin misbehaves or a config edit breaks the admin system, and it is the reason you should never test by removing your own entry. - Never test a ban on yourself. Use a second account or a willing friend, because an admin plugin that writes bans to its own database will happily ban the person who owns the server.
Be deliberate about @css/cheats on a practice server: the practice, retake and surf configs guide relies on sv_cheats 1, and you do not want that flag drifting onto a match server when you copy an admin file across. Round rules and bots live in different files again, covered in bots, warmup and round settings.
Common questions
Why is my admin not working after I edited admins.json?
Nine times out of ten the JSON is invalid: a missing comma between entries, or a trailing comma after the last one. Watch the console when the server reloads the file, because CounterStrikeSharp prints the parse error there with the line it choked on.
Which SteamID format does CounterStrikeSharp want?
The 17 digit SteamID64, the one that starts with 7656119. If all you have is a legacy id from the console, in either of the older formats, convert it with any SteamID lookup site before putting it in the file.
Can I give someone admin without giving them the RCON password?
Yes, and that is exactly what the flag system is for. Add them to the admins file with only the flags they need and keep the RCON password to yourself, since RCON is all or nothing with no record of who ran what.
Do admin bans survive a server restart?
That depends on the plugin, not on CounterStrikeSharp itself. Most ban plugins store bans in a file or a MySQL database so they persist, and the ones that keep bans in memory lose them on restart, so check the plugin's own documentation and set up a database if it offers one.
Still stuck? Jump into our Discord at discord.gg/GuavaHost and the team will help you out.
- cs2
- admin
- permissions
- counterstrikesharp
- steamid
Host a Counter-Strike 2 server From $2.99/mo, with instant setup and DDoS protection.
Still need help? Our team is online 24/7 to answer questions.