Skip to content

How to add admins to a Counter-Strike: Source server with SourceMod

Install Metamod:Source and SourceMod on CS:S, add yourself as admin in admins_simple.ini, and use the admin flags and commands.

Updated August 07, 2026
Counter-Strike: Source

Counter-Strike: Source runs on Source 1, and that is why SourceMod works on it. SourceMod gives you a real admin system: per-person permissions, an in-game admin menu, chat commands, immunity levels and persistent bans — installed once and configured in a text file.

This is the clearest practical advantage CS:S holds over newer Counter-Strike titles. AlliedModders' own Required Versions page lists the position plainly:

Game Metamod:Source SourceMod
Counter-Strike: Source Current Stable Current Stable
Counter-Strike: Global Offensive Current Stable Current Stable
Counter-Strike 2 Current Development Unsupported

So on CS:S you install a mature, documented admin platform that has had two decades of plugins written against it. On Source 2 titles SourceMod does not run at all, and the equivalent tooling has to be assembled from newer projects. If you are choosing a Counter-Strike server to run a community on, this is the difference that shows up every day.

Metamod:Source and SourceMod are not the same thing

Metamod:Source is the loader that hooks into the game. SourceMod is the admin and scripting platform that runs on Metamod. You need both, in that order. It is worth being precise here, because Metamod:Source does support Counter-Strike 2 on its development branch — it is SourceMod specifically that does not.

For first boot and file locations, see Getting started with your Counter-Strike: Source server.

Step 1: Install Metamod:Source

SourceMod requires Metamod:Source 1.9.0 or higher, and AlliedModders recommend running the latest. The current stable line for CS:S is 1.12.

  1. Download Metamod:Source for Source 1 from metamodsource.net.
  2. Extract the package into your game folder, so that you end up with cstrike/addons/metamod.
  3. Restart the server.
  4. Type meta version in the server console.

A working install prints a line reading Loaded As: Valve Server Plugin. If the command is not recognised at all, the install did not take.

You almost certainly do not need a VDF file

Metamod:Source 1.10.0 and later ship a metamod.vdf for easier installation on most games. AlliedModders are emphatic that generating a custom VDF is unnecessary for normal setups, and that people regularly break working installs by doing it anyway. If meta version was recognised, you are done — do not do the VDF steps.

Step 2: Install SourceMod

  1. Download SourceMod — the stable branch, matching the current stable line (1.12).
  2. Extract the package into the same mod folder, cstrike. You are unpacking an addons folder that merges with the one Metamod:Source created.
  3. Restart the server completely.
  4. Type meta list in the server console.

You should see SourceMod listed, along the lines of:

Listing 1 plugin:
  [01] SourceMod (1.1.0.2489) by AlliedModders LLC
meta list — a working SourceMod install

Once that appears, the sm root console command is available. Try sm version and sm plugins list.

Linux load messages that are not actually errors

AlliedModders document two messages that alarm people unnecessarily. A wrong ELF class: ELFCLASS64 error is normal on a 32-bit dedicated server install — as long as meta version is recognised, Metamod:Source is installed. A failure mentioning libgcc_s.so.1: version GCC_7.0.0 not found happens because Valve ship their own copies of those libraries; the documented fix is to delete the listed file from the server install, never the one in the system path. If a load genuinely failed, look for metamod-fatal.log in Metamod's bin folder.

Step 3: How do I make myself admin on my own CS:S server?

This is the quick start, straight from SourceMod's documentation.

  1. Find your Steam ID. Connect to the server and run the status command — your ID appears in the format STEAM_n:o:p.
  2. On the server, open addons/sourcemod/configs/admins_simple.ini.
  3. Add a new line:
"STEAM_0:1:16"     "99:z"
admins_simple.ini — root admin
  1. Save the file.
  2. Type sm_reloadadmins in the server console. It should answer [SM] Admin cache has been refreshed.
  3. Reconnect, open your client console and type sm_admin, then return to the game. The admin menu appears.

99:z means immunity level 99 and the z (root) flag. Root bypasses every permission check, so it is right for the server owner and wrong for everyone else.

The file is admins_simple.ini, not .cfg

One page of AlliedModders' own documentation refers to admins_simple.cfg. The file is admins_simple.ini, as used consistently on the Adding Admins page. If your editor cannot find the file you were told to edit, this is why.

What do the SourceMod admin flags mean?

Every permission in SourceMod is a single letter. These are the provided levels:

Name Flag Purpose
reservation a Reserved slot access
generic b Generic admin; required for admins
kick c Kick other players
ban d Ban other players
unban e Remove bans
slay f Slay/harm other players
changemap g Change the map or major gameplay features
cvar h Change most cvars
config i Execute config files
chat j Special chat privileges
vote k Start or create votes
password l Set a password on the server
rcon m Use RCON commands
cheats n Change sv_cheats or use cheating commands
root z Enables all flags and ignores immunity values
custom1–custom6 o, p, q, r, s, t Custom groups for plugins to use

b (generic) is the one people forget — it is required for admins, so a moderator given only c for kicking will not behave as expected without it.

How does admin immunity work?

Immunity is a numeric level, not a rank list. Each admin has an arbitrary immunity value, and whether one admin can target another depends on who has the higher number.

  • An admin with immunity 10 can target an admin with immunity 3.
  • The admin with immunity 3 cannot target the one with 10.
  • 0 always means no immunity.
  • By default, admins with the same value can target each other. Change this with sm_immunity_mode in cfg/sourcemod.cfg.
  • Admins with the z flag are not subject to immunity checks at all and can always target anyone.

How do I write entries in admins_simple.ini?

The syntax is authentication info, then flags, then an optional password:

"<Steam ID/!IP/Steam name>"  "[immunity level:]<flag/@group>"  ["password"]
admins_simple.ini — syntax

Worked examples from SourceMod's documentation:

"STEAM_0:1:16"      "bce"                   //generic, kick, unban for this steam ID. no immunity
"!127.0.0.1"        "5:z"                   //all permissions for this IP, immunity level = 5
"BAILOPAN"          "abc"    "Gab3n"        //name BAILOPAN, password "Gab3n": gets reservation, generic, kick
"Gaben"             "@Admins"               //name Gaben, group Admins
admins_simple.ini — examples

SourceMod supports three authentication methods: Steam ID (unique to a Steam account), IP address (semi-unique to a machine, better for LANs), and name (which requires a password). Steam ID is the correct choice for essentially every admin on a public server.

Name-based admin is not identity

A name is not proof of anything — anyone can set theirs to match. Name authentication only becomes meaningful with a password, and the password must be set before the player changes their name or they are kicked. Use Steam IDs.

Can I define admins in a more detailed format?

Yes. configs/admins.cfg uses a KeyValues format, with each admin as a block:

Admins
{
	"BAILOPAN"
	{
		"auth"		"steam"
		"identity"	"STEAM_0:1:2345"
		"flags"		"abcdef"
		"immunity"	"5"
		"group"		"Awesome Admins"
	}
}
admins.cfg
Option Meaning
auth (required) One of steam, name or ip — tells SourceMod how to read identity
identity (required) The unique value used to find this admin
password Password the user must enter
group A group to inherit; more than one group line is allowed, with no @ prefix
flags Default access flags
immunity Default immunity level

The admin name at the top of the block is optional and is not used internally.

For larger communities, SourceMod also supports storing admins in SQL instead of flat files, via the admin-sql-prefetch or admin-sql-threaded plugins. Only one of the two may be enabled at a time.

How do admin passwords work?

Passwords are optional. To use them, change the PassInfoVar line in addons/sourcemod/configs/core.cfg:

"PassInfoVar"			"_sm1337"
core.cfg

The admin then sets it client-side with setinfo:

setinfo "_sm1337" "Gab3n"
Client console

Players can automate this with an autoexec.cfg in their own game folder — for CS:S that is under SteamApps\common\Counter-Strike Source\cstrike\cfg.

Which admin commands do I get?

These arrive with SourceMod's base plugins and need nothing extra installed.

Basic commands

Command Access Format Description
sm_admin admin Displays the admin menu
sm_ban ban <#userid|name> <minutes|0> [reason] Bans a client
sm_addban rcon <time> <steamid> [reason] Adds a Steam ID to Source's ban list
sm_banip ban <ip|#userid|name> <time> [reason] Adds an IP to the ban list
sm_unban unban <steamid|ip> Unbans a Steam ID or IP
sm_kick kick <#userid|name> [reason] Kicks a player
sm_map map <map> Changes the current map
sm_cvar cvar <cvar> [value] Retrieves or changes a cvar value
sm_execcfg config <filename> Executes a config file
sm_rcon rcon <argstring> Executes the argument string via RCON
sm_reloadadmins config Refreshes the admin cache from all sources
sm_who admin [#userid|name] Lists users and their access rights
sm_help admin [page|search] Lists all admin commands
sm_cancelvote vote Cancels any vote in progress

Moderation and fun commands

Command Access Format Description
sm_slay slay <target> Kills a player
sm_slap slay <target> [damage] Slaps a player, optionally for damage
sm_gag / sm_ungag chat <target> Blocks or restores text chat
sm_mute / sm_unmute chat <target> Blocks or restores voice chat
sm_silence / sm_unsilence chat <target> Both gag and mute together
sm_beacon slay <target> Adds a ring around each target
sm_burn slay <target> [time] Sets the target on fire
sm_rename slay <#userid|name> Changes a player's name
sm_say chat <message> Say-chat message to all players
sm_csay / sm_tsay / sm_hsay chat <message> Centred, top-left and hint-box messages
sm_psay chat <target> <message> Private message to one player
sm_chat chat <message> Message visible to admins only
sm_resetcvar cvar <cvar> Resets a cvar to its default

sm_tsay accepts a colour before the message: white, red, green, blue, yellow, purple, cyan, orange, pink, olive, lime, violet or lightblue.

Vote commands

Command Access Format Description
sm_vote vote <question> [answers...] Starts an arbitrary vote
sm_votekick vote, kick <target> [reason] Vote to kick a player
sm_voteban vote, ban <target> [reason] Vote to ban a player for thirty minutes
sm_votemap vote, map <map> [map2] [map3] Vote to change the map
sm_voteff vote Vote to change mp_friendlyfire
sm_votealltalk vote Vote to change sv_alltalk
sm_votegravity vote <amount> [amount2]... Vote to change sv_gravity
sm_voteslay vote, slay <target> Vote to slay a player
sm_voteburn vote, slay <target> Vote to burn a player

How do I target players with admin commands?

You do not have to type full names. SourceMod resolves targets in this order — "magic targets" beginning with # or @ are processed first, and name matches happen last.

Target Matches
name Exact name, or a partial name if it is unique
#userid A numeric user ID from the status command
#steamid A Steam ID. With colons it must be quoted: "#STEAM_0:1:4433", or use underscores: #STEAM_0_1_4433
@all All players
@bots All bots
@humans All non-bot players
@alive / @dead All living / all dead players
@aim The player you are currently aiming at
@me / @!me Yourself / everyone except yourself

Counter-Strike adds two of its own, which are among the most useful targets on a CS:S server:

Target Matches
@ct or @cts All Counter-Terrorists
@t or @ts All Terrorists

Prefer user IDs over names

Name matching breaks the moment a name contains spaces, unicode, or is a substring of another player's name. status gives you an unambiguous numeric user ID — sm_kick #12 will always hit who you meant. Note also that @all targets everyone even if a player is literally named "@all"; to target that player you would use #@all.

Can admins run commands from chat instead of the console?

Yes, and in practice this is how admins actually work. Any command can be issued as a chat trigger: typing !ban bail in chat runs sm_ban and sends the output to chat. Using / instead of ! runs the same command but hides your message from other players.

FAQ

How do I become admin on my own Counter-Strike: Source server?

Install Metamod:Source and SourceMod, run status to find your Steam ID, then add "YOUR_STEAM_ID" "99:z" to addons/sourcemod/configs/admins_simple.ini and run sm_reloadadmins in the server console. Reconnect and type sm_admin to open the admin menu.

Does SourceMod work on Counter-Strike: Source?

Yes. AlliedModders list CS:S as supported on the current stable release of both Metamod:Source and SourceMod. CS:S is a Source 1 game, which is exactly what SourceMod targets.

Does SourceMod work on Counter-Strike 2?

No. AlliedModders' Required Versions page lists SourceMod on Counter-Strike 2 as Unsupported. Metamod:Source does support CS2 on its development branch, but SourceMod itself does not run there, so none of the admin system, flags, menu or plugin library in this article applies to CS2.

Why is my admin menu not showing when I type sm_admin?

Work through it in order: does meta list show SourceMod loaded; did you run sm_reloadadmins and see [SM] Admin cache has been refreshed.; is your Steam ID in admins_simple.ini in the STEAM_n:o:p format that status printed; and are you typing sm_admin in your client console after reconnecting. A missing b (generic) flag also produces an admin who appears to have no access.

What is the difference between admins_simple.ini and admins.cfg?

admins_simple.ini is one line per admin and is the fastest way to get running. admins.cfg uses a KeyValues block per admin and supports named options like group and immunity explicitly. Both are read by the same admin-flatfile plugin, and larger communities often move to SQL-backed admins instead.

How do I stop admins from kicking each other?

Give them immunity values. An admin can only target someone with a lower immunity value than their own, and by default equal values can target each other — change that with sm_immunity_mode in cfg/sourcemod.cfg. Anyone holding the z root flag ignores immunity entirely, so hand z out sparingly.

Do I need RCON if I have SourceMod admins?

No, and that is rather the point. RCON is one shared password that grants complete control with no accountability. SourceMod gives each admin their own identity, their own permission flags and an immunity level, which is what you want the moment there is more than one person moderating.

Where do I get plugins once SourceMod is installed?

SourceMod ships a set of base plugins that provide everything in this article. Additional plugins come from AlliedModders' community. Installing them is covered in How to install SourceMod plugins on your Counter-Strike: Source server.


Made with 💜 by GameServerKings

Need a Counter-Strike: Source server?

Deploy an instantly-provisioned Counter-Strike: Source server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.50 /month