---
title: "CS2 Bot Commands: Add, Kick and Remove Bots for Good"
description: "How to remove bots in CS2 so they stay gone, plus bot_add, bot_kick, bot_quota modes, difficulty, weapon limits and cheat-only bot commands."
url: "https://www.gameserverkings.com/knowledge-base/counter-strike-2/bot-commands/"
category: "Counter-Strike 2"
category_url: "https://www.gameserverkings.com/knowledge-base/counter-strike-2/"
published: "2026-09-28T03:14:09.224Z"
updated: "2026-09-28T03:14:09.224Z"
source_format: "markdown"
site: "GameServerKings"
---

# CS2 Bot Commands: Add, Kick and Remove Bots for Good

The CS2 bot commands most people are looking for are the ones that remove bots, and the commands that remove bots are also the ones people get wrong. Run `bot_kick` on its own and the bots tend to come back, at the latest on the next map, because a separate setting, `bot_quota`, tells the server how many bots it should keep, and the game mode's config sets it again every map. This guide covers adding, kicking and removing bots for good, then the quota modes, the difficulty and weapon controls, and the cheat-only commands for freezing or placing bots.

Every command here was checked against the current CS2 build (1.41.8.5, 25 September 2026). All of them run from the server console: the **Console** tab in your GSK panel, or your game console with an `rcon` prefix. None of the add, kick or quota commands need `sv_cheats`.

## How to Remove All Bots in CS2

Run these two lines in the Console tab, in this order:

```
bot_quota 0
bot_kick
```

`bot_quota 0` tells the server to stop keeping bots, and `bot_kick` removes the ones already there. Setting the quota first means nothing is left to top the bots back up.

The quota comes back when the map changes, because the gamemode config runs again. Your server starts in whatever mode the **Gamemode** and **Gametype** variables in the Startup tab select, and each of Valve's gamemode configs sets its own bot quota:

| Mode (panel values) | Valve config | `bot_quota` | `bot_quota_mode` | `bot_difficulty` |
|---|---|---|---|---|
| Competitive (`game_mode 1`, `game_type 0`, the egg default) | `gamemode_competitive.cfg` | `1` | `competitive` | `2` |
| Casual (`0`, `0`) | `gamemode_casual.cfg` | `10` | `fill` | `1` |
| Deathmatch (`2`, `1`) | `gamemode_deathmatch.cfg` | `10` | `fill_with_minimum` | `2` |

So a casual server fills up to ten players with bots every map. To keep a server bot-free, put the two lines in a small config such as `game/csgo/cfg/nobots.cfg` and run `exec nobots` after a map change. If you use a match plugin, put `bot_quota 0` in its config instead. MatchZy's practice config, for example, already sets `bot_quota 0`.

## Adding Bots

| Command | What it does |
|---|---|
| `bot_add` | Add one bot to whichever team needs it |
| `bot_add_t` / `bot_add_ct` | Add one bot to a specific side |
| `bot_add <t\|ct> <type> <difficulty> <name>` | Full syntax. Every argument is optional |
| `bot_difficulty <0-3>` | Skill of bots that join **after** you set it: `0` easy, `1` normal, `2` hard, `3` expert |

Set the difficulty first, then add:

```
bot_difficulty 3
bot_add_ct
bot_add_ct
bot_add_t
```

`bot_difficulty` doesn't change bots that are already in the game. To change them, kick them and add them again.

Bots also take player slots. The **Max Players** value in your Startup tab caps humans and bots together. With `bot_auto_vacate` on (its default), a bot leaves when a human needs its slot.

## Kicking Specific Bots

`bot_kick` takes the same filters as `bot_add`:

| Command | Removes |
|---|---|
| `bot_kick` or `bot_kick all` | Every bot |
| `bot_kick t` / `bot_kick ct` | Every bot on one side |
| `bot_kick <name>` | One bot by name, as shown in `status` |

Check the quota first, as in the section above. If `bot_quota` is still above what you want, the quota system can add bots back.

## Bot Quota Modes

`bot_quota` is a target, and `bot_quota_mode` sets how the server counts toward it:

| `bot_quota_mode` | Behaviour |
|---|---|
| `normal` | Keeps `bot_quota` bots in the game regardless of humans |
| `fill` | Keeps the total number of players at `bot_quota`. Each human who joins pushes a bot out |
| `match` | Keeps a 1:N ratio of humans to bots, where N is `bot_quota` |

Valve's own configs also use `competitive` and `fill_with_minimum`, which the convar's built-in help does not describe.

For a community casual server, `fill` is usually what you want. For example, `bot_quota 10` with `bot_quota_mode fill` keeps a 5v5 going, and the bots drop out as people join. Two more convars affect when bots appear:

| Convar | Default | Effect |
|---|---|---|
| `bot_join_after_player` | `true` | Bots wait until a human joins. An empty server stays empty, then bots appear the moment you connect |
| `bot_join_team` | `any` | `T` or `CT` puts every bot on one side |
| `mp_humanteam` | `any` | `T` or `CT` locks humans to one side. Combine it with `bot_join_team` for humans-versus-bots |
| `bot_auto_vacate` | `true` | Bots leave to make room for humans |

## Weapons, Difficulty and Behaviour (No Cheats)

| Command / convar | Effect |
|---|---|
| `bot_knives_only` | Bots use knives only |
| `bot_pistols_only` | Pistols only |
| `bot_snipers_only` | Sniper rifles only |
| `bot_all_weapons` | Remove the restriction again |
| `bot_allow_rifles`, `bot_allow_snipers`, `bot_allow_pistols`, `bot_allow_shotguns`, `bot_allow_sub_machine_guns`, `bot_allow_machine_guns`, `bot_allow_grenades` | Fine-grained weapon allow-list, all `true` by default |
| `bot_chatter off` | Silence radio chatter. Other values are `radio`, `minimal` and `normal` |
| `bot_walk 1` | Bots walk only, never run |
| `bot_prefix "<text>"` | Text put before every bot's name |
| `bot_eco_limit <n>` | Bots won't buy when their money is below this (default `2000`) |
| `sv_auto_adjust_bot_difficulty` | On by default: "Adjust the difficulty of bots each round based on contribution score." Turn it off (`0`) if you want a fixed `bot_difficulty` |

## Cheat-Only Bot Commands

These need `sv_cheats 1` on the server. They are useful for practice and aim training, but they turn cheats on for everyone connected.

| Command | Effect |
|---|---|
| `bot_stop <1\|all\|t\|ct\|not_bomber>` | Stop bots in place. `bot_stop 0` releases them |
| `bot_freeze 1` | Freeze bots where they stand |
| `bot_dont_shoot 1` | Bots never fire |
| `bot_zombie 1` | Bots stay idle and never attack |
| `bot_ignore_players 1` | Bots can't see human players |
| `bot_crouch 1` | Bots stay crouched |
| `bot_mimic <player index>` | Bots copy that player's inputs |
| `bot_kill` | Kill bots but leave them in the game. Takes the same filters as `bot_kick` |
| `bot_place` | Place a bot where "the local player" is aiming |

`bot_place` is written for a local game, where the person at the console is also a player. On a dedicated server the Console tab has no player behind it, so use the MatchZy practice commands `.bot` and `.crouchbot` to place bots where you stand.

## Bots on Workshop Maps

Bots need a navigation mesh to move. Official maps ship with one. The retail CS2 server has no `nav_generate` command (CS:GO had one), so the server can't build a mesh itself. The mesh has to come with the map. If bots on a [Workshop map](/knowledge-base/counter-strike-2/how-to-add-workshop-maps/) stand still at spawn, the author probably published it without one, and nothing on the server side can fix that.

## FAQ

### What is the command to remove bots in CS2?

`bot_quota 0` followed by `bot_kick`. After a map change the game mode's config sets the quota again, so run both again, or keep them in a config you `exec`.

### How do I kick bots from one team only?

`bot_kick t` or `bot_kick ct`. To stop them rejoining that team, set `bot_join_team` to the other side, or lower `bot_quota`.

### How do I make bots harder?

`bot_difficulty 3`, then kick and re-add the bots, because difficulty applies only to bots that join afterwards. Turn off `sv_auto_adjust_bot_difficulty` if you want the difficulty to stay where you set it.

### Why do bots appear only when I join?

`bot_join_after_player` is on by default, so the server waits for a human before adding bots. Set it to `0` to have them spawn on an empty server.

### Do bot commands need sv_cheats?

Adding, kicking, the quota, difficulty and weapon restrictions don't. Freezing, stopping, killing, placing and mimicking do.

## What to Read Next

- [Counter-Strike 2 server commands](/knowledge-base/counter-strike-2/how-to-add-admins-and-commands/): RCON setup, kick and ban commands, and the wider convar list
- [Getting started with your Counter-Strike 2 server](/knowledge-base/counter-strike-2/getting-started-with-your-server/): game modes, maps and first boot
- [How to run 5v5 competitive matches](/knowledge-base/counter-strike-2/how-to-run-competitive-matches/): MatchZy for scrims and pugs

---

Made with 💜 by GameServerKings
