How to Set Up a CS2 Practice Server: Full CFG and Commands
11 min readWinio Team
How to set up a practice server in CS2
A local Counter-Strike 2 practice server lets you learn grenade lineups, test wallbangs, position bots, and work on angles across the competitive map pool without normal match restrictions.
Instead of entering dozens of console commands every time, you can save them in a single practice.cfg file. After loading a local map, open the developer console and run one command:
exec practice
The exec command runs every command stored in the specified CFG file. You can then edit the file for a particular session: keep only the grenade tools, add bots, or enable instant respawns.
Ready-made practice.cfg for CS2
The complete config below is designed for solo practice. It enables:
extended round time and disabled round win conditions;
buying anywhere on the map for almost the entire round;
$60,000 starting, maximum, and after-round money;
unlimited ammunition and reusable grenades;
grenade trajectory preview and a longer trajectory trail;
rethrowing the last grenade;
bullet-impact markers;
bot placement, bot freezing, and bot removal;
noclip movement around the map.
// ===================================== // Winio CS2 Practice Config // =====================================
// Enable protected practice commands sv_cheats 1
// End warmup mp_warmup_end
// Disable team limits and auto-balance mp_limitteams 0 mp_autoteambalance 0
// Remove freeze time mp_freezetime 0
// Extend round time mp_roundtime 60 mp_roundtime_defuse 60 mp_roundtime_hostage 60
// Prevent normal win conditions from ending the round mp_ignore_round_win_conditions 1
// Restart the round with the new settings mp_restartgame 1
echo "WINIO PRACTICE CFG LOADED"
Important: The protected commands in this config require sv_cheats 1 and are intended for a local practice session. They do not give you control over official Valve or third-party servers.
Open the Counter-Strike 2 installation folder. With Steam installed in its default Windows location, the CFG directory is:
C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg
If Steam or CS2 is installed on another drive:
Find Counter-Strike 2 in your Steam Library.
Right-click the game and select Properties.
Open Installed Files.
Select Browse.
Open game, then csgo, then cfg.
Create a new text document in the cfg folder, paste the complete config into it, and save the file as:
practice.cfg
Windows note: Make sure the file is not saved as practice.cfg.txt. In Notepad, choose All files in the file-type menu when saving, or enable file-name extensions in File Explorer.
How to enable the developer console in CS2
Open CS2 Settings, go to the Game tab, and set Enable Developer Console (~) to Yes. Depending on your game language, the wording may vary slightly.
The console normally opens with the ~ key on an English keyboard. If that key is inconvenient on your layout, assign another key in the keyboard settings.
How to launch a CS2 practice server
The simplest method is to start the map through the game menu:
Open the Practice or play-with-bots section.
Choose the Competitive ruleset.
Load the map you want to practice.
Open the developer console.
Enter exec practice and press Enter.
The config restarts the round once, after which the practice settings should be active.
You can also load an official map directly from the console:
The map command loads the specified map, but the active game mode can depend on your previous settings. For beginners, loading a local map through the menu first and then running exec practice is usually more reliable.
How to practice grenades in CS2
Four commands form the core of a useful grenade-practice setup.
Unlimited grenades
sv_infinite_ammo 1
Thrown grenades return to your inventory, and your weapon does not need to reload. This lets you repeat the same lineup without reopening the buy menu.
If you want unlimited reserve ammunition while keeping normal reloads, use:
sv_infinite_ammo 2
Grenade trajectory preview
sv_grenade_trajectory_prac_pipreview 1
This enables the practice picture-in-picture preview for a grenade's flight and result. It helps you see where the grenade hits a surface and where it detonates or blooms.
Set how long the trajectory trail remains visible with:
sv_grenade_trajectory_prac_trailtime 15
The value is measured in seconds.
Rethrow the last grenade
sv_rethrow_last_grenade
This repeats your most recent throw from the same position. Move to the landing area first, then use the command to check a smoke, flash, HE grenade, or Molotov from an opponent's point of view.
The full config binds the command to the second side mouse button:
bind "mouse5" "sv_rethrow_last_grenade"
Replace mouse5 with any convenient key if needed, for example:
bind "r" "sv_rethrow_last_grenade"
Fly around the map with noclip
noclip
Noclip disables collision and lets you move quickly around the map. The full config binds it to mouse4:
bind "mouse4" "noclip"
Noclip, grenade rethrow, and several other practice tools are protected commands. They require sv_cheats 1 and should be used on a local server.
How to add and control bots in CS2
The full CFG removes all bots when it loads:
bot_kick
You can then add only the bots you need.
Add a Counter-Terrorist bot:
bot_add_ct
Add a Terrorist bot:
bot_add_t
Remove all bots:
bot_kick
Move an existing bot to the point under your crosshair:
bot_place
The full config binds bot_place to N:
bind "n" "bot_place"
Before using bot_place: Add at least one bot with bot_add_ct or bot_add_t. If no bot exists on the map, there is nothing for the command to move.
How to freeze bots in CS2
bot_stop 1
Bots stop moving and performing their normal actions. To make them active again, use:
bot_stop 0
The full config uses two separate keys:
bind "j" "bot_stop 1" bind "k" "bot_stop 0"
How to get unlimited money and buy anywhere
These commands control the practice-server economy:
The first sets the money cap, the second sets your starting balance, and the third grants money after a round.
To keep the buy menu available for almost the entire round and use it outside the normal buy zone, add:
mp_buytime 9999 mp_buy_anywhere 1
After changing starting money, restart the round so the new value can be applied:
mp_restartgame 1
How to make rounds effectively endless
For bomb-defusal maps, use:
mp_roundtime_defuse 60
The value 60 means 60 minutes.
For hostage maps, use:
mp_roundtime_hostage 60
The full config also prevents standard win conditions from ending the round:
mp_ignore_round_win_conditions 1
Without that setting, a round can still end after the last player on one team dies or after the bomb is detonated or defused. Restore normal win conditions with:
mp_ignore_round_win_conditions 0
How to practice wallbangs and bullet impacts
sv_showimpacts 1
This displays bullet-impact markers. In Valve's convention, red represents the client-side result and blue represents the server-side result.
Control how long the markers remain visible with:
sv_showimpacts_time 10
Impact markers are useful for checking:
wallbangs through walls, doors, and boxes;
weapon spread;
spray transfers;
shots fired while moving;
differences between the crosshair position and the actual bullet path.
Disable impact markers with:
sv_showimpacts 0
A lightweight grenade-only CFG
If you do not need bots or bullet-impact markers, use this shorter version:
Use with care: host_timescale changes the speed of the entire local-server simulation. If a value of 0 behaves inconsistently after an update, reconnect to the local map or restore the value to 1.
Give yourself a weapon
give weapon_ak47 give weapon_m4a1_silencer give weapon_awp give weapon_deagle
Give yourself grenades
give weapon_smokegrenade give weapon_flashbang give weapon_hegrenade give weapon_molotov give weapon_incgrenade
The give commands require sv_cheats 1.
Remove a bind from the CFG
For example, remove the action assigned to mouse5 with:
unbind mouse5
The button will no longer repeat the last grenade throw.
Why practice.cfg is not working
The console says: couldn't exec practice
CS2 cannot find the file. Check that:
practice.cfg is inside game/csgo/cfg;
the file was not saved as practice.cfg.txt;
the file name matches exec practice;
the CFG is not inside an extra nested folder.
Noclip does not work
Run:
sv_cheats 1
Also confirm that you launched a local map. Players cannot change protected server variables on official servers.
You do not receive $60,000
Run:
mp_restartgame 1
Starting money is normally applied when a new round begins.
The round still ends
Run the following command again:
mp_ignore_round_win_conditions 1
Also check whether another CFG was executed after practice.cfg and restored standard round settings.
bot_place does nothing
Add a bot first:
bot_add_ct
Then aim at the desired spot and use bot_place again.
How to restore normal CS2 settings
The simplest option is to leave the local server and start a normal match. Local practice-server variables do not carry over to official servers.
To disable the main practice settings without leaving the current session, run:
Afterward, reloading the map is the safest way to return to a clean session.
How to use a practice server effectively
Do not limit your session to mechanically repeating the same lineup. A more useful training loop looks like this:
Throw the grenade with trajectory preview enabled.
Use noclip to move to the detonation or bloom point.
Run sv_rethrow_last_grenade.
Check what an opponent would see from a key position.
Place a bot there with bot_place.
Repeat the throw while moving and from slightly different angles.
Disable the trajectory preview and reproduce the lineup without assistance.
This process tells you more than whether a smoke reaches its target. It reveals possible gaps, how quickly the grenade becomes effective, and whether the lineup is practical in a real round.
Turn practice into better match understanding
Once you finish your individual session, look for the same utility, positioning, and timing ideas in professional matches. Winio combines team statistics, player form, and model-based predictions for upcoming CS2 fixtures, helping you connect what happens on the server with the data behind each matchup.