---
title: "Team Fortress 2 Admin Commands: RCON & SourceMod List"
description: "Set rcon_password, moderate with kickid and banid, then run every SourceMod sm_ command — the full TF2 admin list with permission flags explained."
url: "https://www.gameserverkings.com/knowledge-base/team-fortress-2/admin-commands/"
category: "Team Fortress 2"
category_url: "https://www.gameserverkings.com/knowledge-base/team-fortress-2/"
published: "2026-08-07T04:20:17.729Z"
updated: "2026-08-07T08:03:20.516Z"
source_format: "markdown"
site: "GameServerKings"
---

# Team Fortress 2 Admin Commands: RCON & SourceMod List

Team Fortress 2 gives you two separate admin systems: the **built-in RCON console** that ships with every Source dedicated server, and **SourceMod**, the plugin platform that adds the familiar `sm_` commands and an in-game admin menu. This guide covers both — how to get access, where to type, and every command worth knowing.

> [!NOTE] RCON works out of the box, SourceMod does not
> Everything in sections 1–5 works on a stock TF2 server with no plugins. The `sm_` commands in section 6 require SourceMod to be installed first — see [How to install SourceMod plugins for Team Fortress 2](/knowledge-base/team-fortress-2/sourcemod-plugins/).

## 1. How TF2 Admin Access Works

There is no "op" list in vanilla TF2. Access is proven two ways:

| System | You authenticate with | Gives you |
|---|---|---|
| **RCON** | `rcon_password` (a shared password) | Full server control from console or a remote tool |
| **SourceMod** | Your **SteamID**, listed in a config file | Per-command permissions and an in-game menu |

RCON is all-or-nothing — anyone with the password can run anything, including `quit`. SourceMod is what you want the moment you have more than one admin, because it grants specific powers to specific SteamIDs.

## 2. Set Up RCON

Add these to `tf/cfg/server.cfg`:

``` title="server.cfg — RCON setup"
rcon_password "USE_A_LONG_RANDOM_STRING"
sv_password ""
```

- `rcon_password` — the admin password. Leave it empty to disable RCON entirely.
- `sv_password` — the *join* password. Empty means a public server.

> [!WARNING] Never reuse your Steam password here
> `rcon_password` is transmitted by older clients in plain text and grants total control of the server process. Use a long random string that you use nowhere else, and change it if it is ever shared.

To authenticate from your own game client, open the developer console and run:

``` title="Authenticating from in-game"
rcon_address <your.server.ip>:27015
rcon_password YOUR_PASSWORD
rcon status
```

> [!TIP] On the GSK panel you can skip RCON entirely
> The **Console** tab in your GameServerKings panel is already authenticated against your server. Type commands there without the `rcon` prefix and without exposing a password.

## 3. Server & Player Management

Run these from the server console directly, or prefix with `rcon` from a game client.

| Command | What it does |
|---|---|
| `status` | List every connected player with userid, name, SteamID, ping and IP |
| `stats` | Server CPU, framerate and bandwidth |
| `kick "<name>"` | Kick a player by name |
| `kickid <userid> "<reason>"` | Kick by userid from `status` — safer, names can contain spaces |
| `banid <minutes> <steamid>` | Ban by SteamID, in the `STEAM_0:1:12345678` form `status` prints. `0` minutes means permanent |
| `banip <minutes> <ip>` | Ban an IP address |
| `removeid <steamid>` | Lift a SteamID ban |
| `removeip <ip>` | Lift an IP ban |
| `writeid` | **Save SteamID bans to disk** |
| `writeip` | **Save IP bans to disk** |
| `listid` | Show current SteamID bans |
| `changelevel <map>` | Change map immediately |
| `exec <file>` | Run a config from `tf/cfg/` |
| `quit` | Shut the server down |

> [!IMPORTANT] Bans vanish on restart without `writeid`
> `banid` only holds the ban in memory. Run `writeid` (or `writeip`) afterwards to commit it to `banned_user.cfg` / `banned_ip.cfg`. This is the single most common reason a banned player walks straight back in after a map change or reboot.

## 4. Match & Gameplay Settings

These are convars — they hold a value rather than firing once. Set them in `server.cfg` to apply on every boot.

| Convar | Default | What it controls |
|---|---|---|
| `mp_timelimit` | `30` | Minutes before the map ends |
| `mp_winlimit` | `0` | Round wins before the map ends (`0` = off) |
| `mp_maxrounds` | `0` | Rounds played before the map ends |
| `mp_friendlyfire` | `0` | Allow teammates to damage each other |
| `mp_autoteambalance` | `1` | Force-switch players to even the teams |
| `mp_teams_unbalance_limit` | `1` | Player difference tolerated before balancing |
| `mp_forcecamera` | `0` | `1` restricts deathcam to your own team |
| `mp_disable_respawn_times` | `0` | `1` respawns players instantly |
| `mp_scrambleteams` | — | Run once to scramble teams now |
| `mp_restartgame <sec>` | — | Restart the round after N seconds |
| `sv_alltalk` | `0` | `1` lets both teams hear each other |
| `sv_pure` | `1` | Restrict client-side custom content |
| `sv_gravity` | `800` | World gravity |
| `nextlevel <map>` | — | Force the next map in rotation |

For competitive formats and the tournament-mode convars, see [Team Fortress 2 Gamemodes](/knowledge-base/team-fortress-2/gamemodes/).

## 5. Bots and Cheat Commands

`sv_cheats 1` must be set before any command in the second table works. Turning it on flags the server, so use it on a private or test server rather than a live public one.

| Command | What it does |
|---|---|
| `tf_bot_add <count> [team] [difficulty]` | Add AI bots, e.g. `tf_bot_add 4 blue normal` |
| `tf_bot_kick <name\|all>` | Remove bots |
| `tf_bot_quota <n>` | Target number of bots to maintain |
| `tf_bot_difficulty <0-3>` | Easy, Normal, Hard, Expert |
| `bot_kill <name\|all>` | Kill bots without removing them |

With `sv_cheats 1`:

| Command | What it does |
|---|---|
| `noclip` | Fly through walls |
| `god` | Invulnerability |
| `buddha` | Take damage but never drop below 1 HP |
| `impulse 101` | Full ammo and metal |
| `hurtme <n>` | Damage yourself by N (negative heals) |
| `kill` | Kill your own character |
| `explode` | Kill yourself dramatically |
| `mp_forcewin <team>` | Instantly end the round |

## 6. SourceMod Admin Commands

Once SourceMod is installed, these run from chat (`!` shows the output publicly, `/` hides it) or from console with the `sm_` prefix. The **flag** column is the permission an admin needs — see section 7.

**Core administration**

| Command | What it does | Flag |
|---|---|---|
| `sm_admin` | Open the in-game admin menu — the fastest way to do everything below | `admin` |
| `sm_help` | List every admin command available to you | `admin` |
| `sm_who` | Show which players have admin and what flags | `admin` |
| `sm_kick <player> [reason]` | Kick a player | `kick` |
| `sm_ban <player> <minutes> [reason]` | Ban a connected player (`0` = permanent) | `ban` |
| `sm_addban <minutes> <steamid> [reason]` | Ban a SteamID that is offline | `rcon` |
| `sm_banip <minutes> <ip>` | Ban an IP address | `ban` |
| `sm_unban <steamid\|ip>` | Lift a ban | `unban` |
| `sm_map <map>` | Change the current map | `map` |
| `sm_cvar <convar> [value]` | Read or set any convar | `cvar` |
| `sm_resetcvar <convar>` | Reset a convar to its default | `cvar` |
| `sm_rcon <command>` | Run a raw RCON command | `rcon` |
| `sm_execcfg <file>` | Execute a config file | `config` |
| `sm_reloadadmins` | Reload the admin list after editing it | `config` |

**Punishment and moderation**

| Command | What it does | Flag |
|---|---|---|
| `sm_slay <player>` | Kill a player | `slay` |
| `sm_slap <player> [damage]` | Slap a player around, optionally hurting them | `slay` |
| `sm_beacon <player>` | Attach a visible tracking ring | `slay` |
| `sm_burn <player> [seconds]` | Set on fire | `slay` |
| `sm_rename <player> <name>` | Rename a player | `slay` |
| `sm_gag <player>` | Block text chat | `chat` |
| `sm_mute <player>` | Block voice chat | `chat` |
| `sm_silence <player>` | Block both | `chat` |
| `sm_ungag` / `sm_unmute` / `sm_unsilence` | Reverse the above | `chat` |

**Messaging**

| Command | What it does | Flag |
|---|---|---|
| `sm_say <message>` | Say-chat message to everyone | `chat` |
| `sm_csay <message>` | Centre-screen message | `chat` |
| `sm_tsay <message>` | Top-left message | `chat` |
| `sm_hsay <message>` | Centre-bottom hint box | `chat` |
| `sm_msay <message>` | Message shown as a menu panel | `chat` |
| `sm_psay <player> <message>` | Private message to one player | `chat` |
| `sm_chat <message>` | Message visible to **other admins only** | `chat` |
| `sm_play <player> <file>` | Play a sound file on the server | `admin` |

**Voting**

| Command | What it does | Flag |
|---|---|---|
| `sm_vote <question> [options]` | Start an arbitrary vote | `vote` |
| `sm_votekick <player>` | Vote to kick | `vote`, `kick` |
| `sm_voteban <player>` | Vote to ban | `vote`, `ban` |
| `sm_voteslay <player>` | Vote to slay | `vote`, `slay` |
| `sm_voteburn <player>` | Vote to burn | `vote`, `slay` |
| `sm_votemap <map> [map2] …` | Vote to change map | `vote`, `map` |
| `sm_voteff` | Vote to toggle `mp_friendlyfire` | `vote` |
| `sm_votealltalk` | Vote to toggle `sv_alltalk` | `vote` |
| `sm_votegravity` | Vote to change `sv_gravity` | `vote` |
| `sm_cancelvote` | Cancel a vote in progress | `vote` |

> [!NOTE] Some commands come from optional plugins
> `sm_beacon`, `sm_burn` and `sm_slap` ship in SourceMod's **funcommands** plugin, and the `sm_vote*` set in **funvotes** — both are bundled but can be disabled. If a command is unrecognised, check that its `.smx` file is still in `addons/sourcemod/plugins`. Community plugins add many more, such as `sm_freeze` and `sm_timebomb`.

## 7. Granting SourceMod Admin

Edit `tf/addons/sourcemod/configs/admins_simple.ini` and add one line per admin:

``` title="admins_simple.ini"
"STEAM_0:1:12345678" "99:z"
```

`99` is the immunity level (higher numbers cannot be targeted by lower ones) and `z` is the root flag — everything. For a moderator who should kick and ban but not touch convars or RCON, use the specific flags instead:

``` title="A kick/ban-only moderator"
"STEAM_0:1:87654321" "50:bcdefj"
```

| Flag | Grants |
|---|---|
| `a` | Reserved slot |
| `b` | Generic admin (required for most commands) |
| `c` | Kick |
| `d` | Ban |
| `e` | Unban |
| `f` | Slay / slap |
| `g` | Change map |
| `h` | Change convars |
| `i` | Run configs |
| `j` | Chat commands (gag, mute) |
| `k` | Start votes |
| `l` | Set a server password |
| `m` | RCON access |
| `n` | Enable cheats |
| `z` | Root — all of the above |

Run `sm_reloadadmins` after saving, or change the map, for the file to take effect.

> [!TIP] Use the SteamID format SourceMod expects
> `admins_simple.ini` wants the legacy `STEAM_0:1:12345678` form, not the 17-digit SteamID64. Running `status` on your server prints each connected player in exactly the right format — copy it straight from there.

## 8. FAQ

### How do I make myself admin on my own TF2 server?

For full control immediately, set `rcon_password` in `tf/cfg/server.cfg` and authenticate with `rcon_password YOUR_PASSWORD` from the in-game console. For named per-person admin with an in-game menu, install SourceMod and add your SteamID to `admins_simple.ini` with the `z` flag.

### Why do my bans keep disappearing?

Because `banid` and `banip` only write to memory. Run `writeid` and `writeip` afterwards to save them to `banned_user.cfg` and `banned_ip.cfg`. SourceMod's `sm_ban` saves automatically, which is one reason to prefer it.

### Do TF2 admin commands need a slash?

In the server console and over RCON, no — type `status`, not `/status`. SourceMod commands typed in **chat** need a prefix: `!` runs the command and shows the reply to everyone, `/` runs it silently. From console, use the full `sm_` name with no prefix.

### What is the difference between `kick` and `kickid`?

`kick` matches on player name, which breaks when a name contains spaces or unicode. `kickid` uses the numeric userid shown by `status` and is always unambiguous — prefer it in scripts.

### Can I run admin commands without SourceMod?

Yes. Everything in sections 3 through 5 is built into the Source engine. SourceMod adds per-admin permissions, the in-game menu, gagging and muting, and persistent bans — but it is not required for basic moderation.

### Why does `noclip` say "unknown command"?

The cheat commands need `sv_cheats 1` set first, and it must be set on the **server**, not your client. Note that enabling cheats is visible to players and will disable achievements for the session.


## 9. What to Read Next

- [Getting started with your Team Fortress 2 Server](/knowledge-base/team-fortress-2/getting-started-with-your-team-fortress-2-server/) for first boot and the core config
- [How to install SourceMod plugins for Team Fortress 2](/knowledge-base/team-fortress-2/sourcemod-plugins/) — required for every `sm_` command above
- [How to use Custom Maps and setup FastDL for Team Fortress 2](/knowledge-base/team-fortress-2/maps-and-fastdl/)
- [Team Fortress 2 Gamemodes](/knowledge-base/team-fortress-2/gamemodes/)

---

Made with 💜 by GameServerKings
