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 read · Updated Oct 21, 2026 · By GuavaHost Team
Most of the frustration with these settings is not the values. It is that you set mp_roundtime in server.cfg, restart, and the server comes back on two minute rounds anyway. That happens because CS2 runs more than one config when a map loads, and the game mode files run last. Get the file right and everything below sticks first time.
Which file your setting belongs in
A cvar (console variable) is one setting with one value, like mp_freezetime 15. When a map starts, the server executes several config files in order, and the last one to set a cvar wins:
game/csgo/cfg/server.cfgruns early. It is the right home for anything about the server itself:hostname,sv_password,rcon_password,sv_lan.- The game mode config for whatever mode you are running, for example
gamemode_competitive.cfg. This is Valve's file and it sets round time, freeze time, max rounds, money and the bot defaults. It is also replaced whenever the game updates, so editing it is wasted work. gamemode_competitive_server.cfgruns immediately after it. This file is yours. Anything you put here beats the mode defaults.
So the rule is simple: server identity goes in server.cfg, and anything about rounds, money, warmup or bots goes in the _server.cfg file for the mode you play. Swap competitive for the mode you actually run: gamemode_casual_server.cfg, gamemode_deathmatch_server.cfg, gamemode_wingman_server.cfg, gamemode_armsrace_server.cfg.
If you are not sure which mode you are on, check your game_type and game_mode pair, which our guide to editing server.cfg lists in full.
Creating the file
The Files tab has no new file button, so you make the file one of two ways. Either write it on your computer and upload it into game/csgo/cfg/ with Upload files, or click ••• on an existing .cfg in that folder, choose Make a copy, then Rename the copy to the name you want and replace its contents in the editor.
Take a snapshot on the Backups page before you start. Config work is easy to undo when you have one and tedious when you do not.
Bots
Bots are controlled almost entirely by two cvars working together:
bot_quota 10
bot_quota_mode fill
bot_quota is the number the server aims for, and bot_quota_mode decides what that number means:
fillkeeps the server topped up tobot_quotatotal players, so bots leave as humans join. This is what you want on a mostly empty server.matchaddsbot_quotabots for every human, which fills a server fast and is rarely what people expect.normaljust keeps that many bots regardless of who is connected.
The rest of the useful bot settings:
bot_difficulty 0to3, from easy to expert.bot_chatter offsilences their radio spam.radioandnormalare the other values.bot_join_after_player 0lets bots fill the server before anyone connects, which is handy if you want the server to look alive in the browser.bot_quota_mode fillplusbot_autodifficulty_threshold_lowand_highlets the server nudge difficulty towards a player's performance.bot_kickremoves every bot right now, andbot_add_ctorbot_add_tadds one to a specific side.bot_stop 1freezes them in place, which is only for practice setups.
To turn bots off entirely, set bot_quota 0 in your _server.cfg file. Setting it only in server.cfg is the classic reason bots keep coming back.
Warmup
Warmup is the free-for-all period before the match proper. Three cvars cover it:
mp_do_warmup_period 1
mp_warmuptime 60
mp_warmup_pausetimer 0
mp_do_warmup_period 0 skips warmup altogether. mp_warmuptime is the length in seconds. mp_warmup_pausetimer 1 freezes the countdown so warmup runs until somebody ends it, which is what you want when you are waiting for ten people to turn up.
End warmup early from the Console tab, or from your in-game console if you have RCON set up, with:
mp_warmup_end
There is also mp_warmuptime_all_players_connected, a shorter countdown that kicks in once the server is full. Set it to something like 15 so a full lobby does not sit through the rest of a long warmup.
Round rules
These are the values people actually tweak:
| Cvar | What it does |
|---|---|
mp_roundtime 1.92 | Round length in minutes. 1.92 is the competitive standard, which is 115 seconds. |
mp_roundtime_defuse 1.92 | Round length on bomb maps specifically. Set it alongside the one above. |
mp_roundtime_hostage 1.92 | The same thing on hostage maps. |
mp_freezetime 15 | Buy time at the start of a round, before anyone can move. |
mp_maxrounds 24 | Rounds in a match. 24 is MR12, the current competitive format. |
mp_halftime 1 | Swap sides halfway through. |
mp_match_can_clinch 1 | End the match as soon as one team cannot be caught. |
mp_overtime_enable 1 | Play overtime instead of ending on a draw. |
mp_overtime_maxrounds 6 | Rounds per overtime half. |
mp_round_restart_delay 7 | How long the scoreboard sits there between rounds. |
mp_timelimit 0 | A map time limit in minutes. Leave it at 0 when you are using mp_maxrounds. |
Round time is in minutes and takes decimals, which trips people up constantly. mp_roundtime 2 is a two minute round. mp_roundtime 1.92 is 115 seconds. Anything under 1 is a very short round, not an error.
A working example
A competitive server that fills with bots when it is quiet, in game/csgo/cfg/gamemode_competitive_server.cfg:
bot_quota 8
bot_quota_mode fill
bot_difficulty 2
bot_chatter radio
bot_join_after_player 0
mp_do_warmup_period 1
mp_warmuptime 90
mp_warmuptime_all_players_connected 15
mp_maxrounds 24
mp_halftime 1
mp_overtime_enable 1
mp_overtime_maxrounds 6
mp_roundtime 1.92
mp_roundtime_defuse 1.92
mp_freezetime 15
mp_round_restart_delay 7
mp_timelimit 0
Applying it
Round and bot cvars are read when a round or match restarts, not the moment you save. The cleanest way to apply them:
- Save the file.
- Press Restart at the top of the server page.
- Watch the Console as the map loads, then join and check the values are what you expect.
For a quick test without a restart, run exec gamemode_competitive_server then mp_restartgame 1 in the Console. That is enough for most settings, though a few only settle properly on a map change.
If a value still refuses to stick, something is setting it after you. Search your cfg folder for the cvar name, and check any plugin configs: a CounterStrikeSharp retake or practice plugin will happily rewrite round rules on purpose. Our guides to practice, retake and surf configs and installing plugins with Metamod and CounterStrikeSharp cover those setups, and if the server is running the settings you want but nobody can find it, start with why a CS2 server is missing from the community browser.
Common questions
Why do my round settings reset every map change?
Because the game mode config runs after server.cfg and sets its own round values. Move anything about rounds, money, warmup or bots into the matching game mode server override file, which executes last and wins.
How do I get bots to leave when real players join?
Set the bot quota mode to fill, with the quota set to the player count you want the server to sit at. In fill mode that number is a total across humans and bots, so each person who connects pushes a bot out.
What is the right round time for a competitive server?
A round time of 1.92 minutes, which is 115 seconds, on both the standard and the defuse value, with freeze time at 15 seconds and 24 max rounds. That matches the format official competitive matchmaking uses, so practice on your server carries over.
Can I skip warmup completely?
Yes. Turn the warmup period off in your mode's server override file and the match starts as soon as the map loads. If you want warmup for people arriving but not for a full lobby, leave it on and set a short countdown for when everybody is connected instead.
Still stuck? Jump into our Discord at discord.gg/GuavaHost and the team will help you out.
- cs2
- bots
- warmup
- rounds
- configuration
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.