WarzoneCS WarzoneCS

CS 1.6 Config Files — cfg, autoexec, userconfig

How CS 1.6 config files work — config.cfg vs autoexec.cfg vs userconfig.cfg, load order, common tweaks. Where to save your settings so they persist.

Updated: 2026-07-30

CS 1.6 config files are plain text files under Half-Life\cstrike\ that store your settings between game sessions. When you tweak rates, crosshair, key binds, or launch a custom script, the values end up here.

Understanding which file goes where and the load order saves hours of "why did my settings revert?" frustration. This guide covers every config file GoldSrc reads at boot, in the order they load.

The three key files

File Purpose Auto-generated
config.cfg Everything you change in-game — key binds, video, audio, most cvars Yes, on quit
autoexec.cfg Commands you want to run at every launch No — you create it
userconfig.cfg Your personal overrides that survive config.cfg regenerations No — you create it

All three live at Half-Life\cstrike\. GoldSrc reads them in this exact order on boot: config.cfg first, then autoexec.cfg, then userconfig.cfg. Later files override earlier ones — so put your final-say settings in userconfig.cfg.

Load order in detail

Boot sequence, top to bottom:

  1. Engine defaults — hardcoded cvar values in hl.exe
  2. Launch options-console, -noforce etc. from the shortcut
  3. config.cfg — everything the game saved on last quit
  4. autoexec.cfg — your permanent boot-time commands
  5. userconfig.cfg — your personal overrides
  6. Server sv_ — server-side forced settings when you connect

Anything you type in the console at runtime overrides all of the above until you quit — but only lands back in config.cfg if it's a saved cvar.

config.cfg — the auto-generated one

Don't hand-edit config.cfg. The game overwrites the entire file every time you cleanly quit. Any manual edits get wiped.

Instead:

  • Change settings via the in-game menu, or
  • Type commands into the console with ~, or
  • Put commands you want to persist into autoexec.cfg / userconfig.cfg

If config.cfg is missing at boot, GoldSrc regenerates it from defaults. That's the reset button — delete config.cfg, launch, everything is factory-fresh.

Read-only config.cfg trick: some old guides recommend right-click → Properties → Read-only on config.cfg to prevent overwrites. Don't do this on WarzoneCS — it interferes with legit "save current settings" clicks. Use userconfig.cfg for persistent overrides instead.

autoexec.cfg — the boot-time script

Create this file (it doesn't exist by default). Add any console command that should run at every game launch:

// Half-Life\cstrike\autoexec.cfg
// Runs at boot, before you hit the main menu.

echo "autoexec.cfg loaded"

// Networking — set once, forget
cl_cmdrate 101
cl_updaterate 101
rate 25000
ex_interp 0.01

// Framerate
fps_max 100
gl_vsync 0

// Console
developer 1

The echo line is optional but useful — you'll see it print in the console at boot, confirming the file loaded.

Common autoexec.cfg contents: rates, fps_max, ex_interp, developer console flags, and anything else you tune once and never touch.

Why not just leave it in config.cfg?

Because config.cfg gets rewritten. Server-side forced values (some servers push cl_cmdrate 30 on connect) or accidental menu clicks can silently overwrite your tuning. autoexec.cfg runs after config.cfg and reasserts your values every boot.

userconfig.cfg — your override layer

Even later in the boot chain than autoexec.cfg. Anything here is the final say for the next game session:

// Half-Life\cstrike\userconfig.cfg
// Runs last — overrides config.cfg AND autoexec.cfg.

// Crosshair
cl_crosshair_size "small"
cl_crosshair_color "0 255 255"
cl_dynamiccrosshair "0"

// Movement
sensitivity "2.2"
zoom_sensitivity_ratio "1.0"

// Binds
bind "MOUSE4" "+voicerecord"
bind "MOUSE5" "quickswitch"

// Personal aliases
alias "quickswitch" "slot1; slot2; slot3"

Two-file split rationale: put autoexec.cfg values you'll share between multiple installs; put userconfig.cfg values that are personal (sensitivity, binds, aliases). Reinstalling? Copy userconfig.cfg to the new cstrike/ folder and you're back to your personal setup.

Other config files GoldSrc reads

Less-commonly-touched but worth knowing:

File Purpose
Half-Life\cstrike\video.txt Video mode + gamma. GoldSrc rewrites on graphics setting changes.
Half-Life\cstrike\sound\sentences.txt Voice trigger table (radio commands). Editing not recommended.
Half-Life\cstrike\game.cfg Rarely used. Some old bots write cvars here.
Half-Life\valve\config.cfg Half-Life engine's own config. Not read by CS 1.6 unless -game valve.

You almost never touch these. Mentioned here for completeness in case a forum post references them.

Config files for specific tasks

Rates cfg — the "netcode" preset

// rates.cfg — call with 'exec rates' in console
rate 25000
cl_cmdrate 101
cl_updaterate 101
ex_interp 0.01
cl_lc 1
cl_lw 1

Save as Half-Life\cstrike\rates.cfg. Load with exec rates.cfg in console.

The .cfg extension is optional in execexec rates works too.

High-vs-low FPS cfg swap

Two files, hi.cfg and lo.cfg. Bind a key to swap between them if you sometimes stream and want to throttle the game:

// hi.cfg
fps_max 999
gl_vsync 0
// lo.cfg
fps_max 60
gl_vsync 1

Bind: bind "F11" "exec hi.cfg" and bind "F12" "exec lo.cfg".

Binds cfg — key layout

Isolate all your bind commands into binds.cfg. Then a single line in userconfig.cfg:

exec binds.cfg

Reason to isolate: you'll change binds more often than anything else. One file = one thing to edit.

Common config problems

"My settings reset every time I quit." You're editing config.cfg directly. Move the edits to userconfig.cfg.

"Rates keep reverting to server defaults." Server pushed cl_cmdrate down on connect. Nothing you can do about that except leave the server. Put your preferred values in autoexec.cfg so they apply between connections.

"exec userconfig.cfg says 'not found'." File isn't in Half-Life\cstrike\. Check the folder — Windows Explorer sometimes hides .cfg extensions and you might have accidentally created userconfig.cfg.txt.

"My binds work in offline but not online." Some servers force sv_cheats 0 and block cheat-tagged commands. Every command in this guide is stock — not cheat-tagged — so this isn't a normal issue. If it happens, check that you don't have any weird macro in an alias.

"I want to reset to defaults." Delete config.cfg from Half-Life\cstrike\. GoldSrc regenerates a fresh one on next boot. autoexec.cfg and userconfig.cfg are not touched — they're yours forever.

What next?