Skip to main content
The CSAFAP Config Package requires specific launch options to function properly. These options ensure the framework loads correctly and enables advanced features.

Required Launch Options

Add these launch options to CS2 in Steam:
To set launch options:
  1. Right-click CS2 in your Steam library
  2. Select “Properties”
  3. Under “General”, find “Launch Options”
  4. Paste the launch options string

Understanding Each Component

+exec csafap/main

The +exec command executes a configuration file when the game launches.
This:
  • Loads the framework before entering any server
  • Ensures all aliases are registered at startup
  • Prevents issues with command queue truncation
  • Initializes user preferences from MAIN.cfg
The + prefix means the command runs during game startup, before the main menu loads. This is crucial for proper initialization.

Why exec on Launch?

The framework must be loaded via launch options rather than manually because:
  1. Alias Initialization: Ticker-based features need aliases ready before first frame
  2. Command Queue: Long configs can get truncated if executed mid-session
  3. Stability: Loading from main menu prevents crashes on disconnect/changelevel
  4. FaceIt Compatibility: Some servers reject configs executed after connection
From the README:
Make sure not to exec csafap/main after the initial exec on game launch

-testscript ”../../csgo/cfg/csafap/addons/.vtest”

The -testscript option loads a VScript test file that runs every frame.
This enables the “ticker” system by executing special aliases every frame.

Path Explanation

Breaking down the path:
  • ../.. - Navigate up two directories from the default script location
  • /csgo/cfg/ - Enter the config directory
  • csafap/addons/ - Enter the framework addon directory
  • .vtest - Load the ticker script file
The .vtest file must have no name (just the extension) and be saved with the VTest file type.

What the Ticker System Enables

The .vtest script is the foundation for advanced features:
Each line calls an alias that can be dynamically reassigned:
  • W!, A!, S!, D! - Enable null binds and desubtick movement
  • M1!, M2! - Enable rapid fire and follow-recoil
  • JT! - Enable CS:GO-style jumpthrow binds
  • J! - Enable desubtick jumping
Aliases called multiple times in a row (e.g., W! appears twice) allow for chaining multiple alias substitutions in a single frame. This is how complex features like jumpthrow can execute a sequence of commands frame-perfectly.

Features Requiring Launch Options

These features will NOT work without the ticker system:

Jumpthrow Binds

Executes CS:GO-style jumpthrows with perfect timing.

Null Binds (Snap-Tap)

Automatic opposite-key cancellation for movement.

Desubtick Binds

Delays input until next tick for CS:GO-like feel.

Rapid Fire

Fires pistols at maximum fire rate while holding M1.

Better Follow-Recoil

Displays green dot indicating spray pattern.
All advanced features work:
  • Jumpthrow binds
  • Null movement
  • Rapid fire
  • Follow-recoil
  • Desubtick jump/movement

Troubleshooting Launch Options

Error: “couldn’t exec cfg/csafap/main.cfg”

This means the config file isn’t found. Common causes:
  1. Wrong installation path: Config must be at:
    NOT at:
  2. Case sensitivity on Linux: Use lowercase:

Error: “Unknown command: W!…”

This means ticker aliases aren’t initialized. Causes:
  1. Missing launch option: Verify -testscript is in launch options
  2. Path is wrong: Check the .vtest file path
  3. File type is wrong: .vtest must be saved as VTest file type
  4. Command queue truncated: A command in MAIN.cfg is too long
From the README FAQ:
The launch option spams these alias every frame. If the alias are not assigned on game launch, this will happen and other binds using the ticker function (including movement and mouse binds) will not work.

Movement/Mouse Buttons Not Working

If WASD or mouse buttons stop responding after installation:
  1. Check console for “Unknown command: W!” spam
  2. Verify .vtest launch option is correct
  3. Check that alias reset_crosshair in MAIN.cfg isn’t too long
  4. Try removing crosshair settings to shorten the command

Kicked from Official Servers

If you’re getting kicked when using certain features:
  1. Don’t use practice mode teleports on official servers - they require sv_cheats 1
  2. Rapid fire is server FPS dependent - works at >150 FPS by default
  3. Some line-ups are patched - check the version history in README
All features in the CSAFAP Config Package are legal on Valve official servers and FaceIt. You will not be banned for using them. However, some practice commands require sv_cheats 1 and will kick you if attempted on official servers.

Optional Launch Options

These aren’t required but can be useful:

Disable Intro Video

Set Tickrate for Local Servers

Full Example

Verifying Launch Options Work

After setting launch options, verify they work:
  1. Launch CS2
  2. Open console (usually ~ key)
  3. Look for confirmation message:
  4. Test a basic keybind: Press M (default map wheel bind)
  5. Check for ticker spam: You should NOT see “Unknown command: W!” messages
If you see the confirmation message and no error spam, the framework is working correctly.

Launch Option Compatibility

FaceIt

The CSAFAP launch options are compatible with FaceIt Anti-Cheat:
  • Config files are allowed
  • .vtest ticker script is allowed
  • Null binds are allowed
  • Auto line-ups use allowed commands
FaceIt explicitly confirmed that yaw/pitch commands, custom radio wheels, and null binds are legal for ranked PUGs. They are not allowed in higher leagues like ESEA/ESL which prohibit the alias command entirely.

VAC (Valve Anti-Cheat)

All features work on VAC-secured servers:
  • Everything uses legal console commands
  • No memory modification
  • No external tools
  • Works under sv_cheats 0

Community Servers

Most community servers allow the config, but some may:
  • Block +exec in launch options
  • Disable yaw/pitch commands
  • Restrict radio wheel customization
Test basic features when joining a new server type.