autoexec.cfg is for commands you have already tested and want to keep consistent. Do not put temporary crosshair experiments there, because every launch can overwrite later menu changes.
Use the correct folder
A common Windows Steam path is:
...\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\autoexec.cfg
The important part is game\csgo\cfg. Also confirm that the real file name is not autoexec.cfg.txt.
Verify with a minimal file
Start with a few known commands and an obvious console marker:
cl_crosshairstyle 4; cl_crosshairsize 2; cl_crosshairgap -3; echo "xhair autoexec loaded"
After launching, check the console for xhair autoexec loaded. You can also verify that CS2 can find the file manually:
exec autoexec.cfg
If manual execution works but startup loading does not, inspect execution order and launch options. +exec autoexec.cfg can make the execution explicit, but it should not hide an incorrect file path.
+exec autoexec.cfg
Keep the config debuggable
- Include only settings you changed and understand.
- Give each crosshair variable one source of truth.
- Keep share codes as external backups; cfg files store commands.
- Back up the old file before editing.
When loading fails, check the extension, game\csgo\cfg path, console errors, marker output, and whether another cfg or startup command overwrites the same variables later.