GuavaHost
Language & currency
Client AreaGame Panel Toggle navigation
Games All Games
Minecraft JavaMinecraft BedrockMinecraft GeyserRustRuneScape: DragonwildsPalworldValheimValheim + BepInExARK: Survival EvolvedARK: Survival AscendedProject ZomboidEnshroudedDon't Starve TogetherCounter-Strike 2TerrariatModLoaderHytaleMulti-Game ServerDiscord Bot Hosting
Navigation PricingReviewsHelp CenterSupport Company About UsFAQRefer to earnSLATerms of ServicePrivacy Policy
Language & currency
Client AreaGame Panel

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 what status prints 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

  1. Save the file.
  2. 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.
  3. 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_password set 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.

Contact support

Related guides

More from Counter-Strike 2.

  • Installing CS2 Plugins with Metamod and CounterStrikeSharp

    Almost every CS2 plugin runs on two pieces of software: Metamod:Source, which hooks into the game, and CounterStrikeSharp, which lets plugins be written in C#, so you install those two first and then drop plugins on top.

    3 min

  • Play Steam Workshop maps on your CS2 server

    Host any Workshop map or collection by its ID: run host_workshop_map in the Console, or add it to Custom Parameters so it loads on every start.

    5 min

  • How to Connect to Your CS2 Server

    Connecting to your Counter-Strike 2 server takes two things: your server's IP and port from the control panel, and the in-game developer console, where you type one connect command to join.

    2 min

  • Bots, warmup and round settings on a CS2 server

    The cvars that control bots, warmup length and how a round plays out on a CS2 server, and which config file each one belongs in so the game mode does not overwrite your settings.

    6 min

  • What Is a GSLT and Why Your CS2 Server Needs One

    A Game Server Login Token (GSLT) is a free code from Steam that publicly identifies your CS2 server, and without one your server cannot appear in the community server browser or accept internet players.

    2 min