CS2AC: a player releases the open-source anti-cheat the community has been begging for

Patience has a limit, and the Counter-Strike community crossed it a long time ago. As the debate over the state of CS2's anti-cheat keeps growing, a programmer and player known as Karola has done what many had been asking for: built one himself. The project is called CS2AC, it's open source, it's free, and it's already on GitHub for any community server that wants to install it.
It isn't his first attempt. Just weeks ago, the same developer released CS2FOW, a plugin that attacked the wallhack problem at the root: rather than trying to detect it, it simply stopped sending the client any information about enemies fully hidden behind map geometry. If the data never reaches your computer, the wallhack has nothing to read. That idea drew plenty of attention, and now Karola has gone several steps further with a full anti-cheat designed to work in tandem with the first: one starves the wallhack, the other hunts cheating behavior.
The seventeen detection modules
CS2AC is a server plugin built on Metamod:Source, and its catalogue of detections is remarkably extensive for a one-person project. The author groups them into three blocks.
Aim and accuracy
- Aimbot. Flags aim that snaps abruptly onto an opponent immediately before a shot that deals damage, then checks whether that same signature repeats across separate shots.
- Aimlock. Measures how tightly and for how long the crosshair tracks a moving opponent, including stretches where that opponent sits behind a wall.
- Silentaim. Catches damaging bullets that land somewhere other than where the visible aim was pointing, weighing the aim at the instant of firing against the impact point and the damage dealt.
- Inhuman Accuracy. Watches the ratio of aimed shots that connect over a long run, counting how many of those shots actually cause damage.
- Irregular Behavior. Tallies difficult shots taken mid-air or without a sniper scope, logging both the ones that land and the ones that miss.
Movement
- Autostrafe. Spots players who gain or preserve speed in the air with impossible consistency, comparing movement, speed, and timing on every jump.
- Bhop. Measures the gap between touching the ground and jumping again across consecutive hops, hunting for machine-perfect repetition.
- Hyperscroll. Identifies abnormally fast bursts of jump inputs during landing, cross-checked against the timing of the jumps they produce.
- Nulls. Detects switching between opposing movement directions with suspiciously regular timing while airborne, matching the keys pressed against the direction changes transmitted.
Exploits and client behavior
- Antiaim. Reviews view angles and their sequence across consecutive commands, looking for spinning, jitter, snapping back after an attack, or angles that don't occur in normal play.
- DLL Injection. Checks whether the client subscribes to a group of game events associated with injected code, both when the player joins and while they stay connected.
- Desubticking. Catches movement inputs that repeatedly arrive without their usual timing between ticks, inspecting the timing attached to each movement change.
- Doubletap. Identifies a weapon firing twice before its normal delay has elapsed, comparing the weapon and server tick of each consecutive shot.
- Invalid CVar. Queries the client for certain protected or monitored settings and inspects every reply, looking for values outside the accepted range.
- Invalid Input. Compares both halves of the command the client sends to catch button states that don't line up with the recorded sequence of presses and releases.
- Namechanger. Counts visible name changes for each connected player, flagging those that pile up within a short window.
- Subtick Spam. Measures how often a player fires off many movement or aim changes at the same point within a single tick.
One clarification is due on the injection module, because the name misleads: it does not scan anyone's computer. It doesn't read files, memory, or your desktop. All it inspects are the event subscriptions the client itself shares with the server. It's a detail the author explicitly emphasizes, and it separates this project from invasive kernel-level anti-cheats.
What happens when a detection fires
This is one of the best-designed parts of the project, because it doesn't just ban quietly. When CS2AC acts, it can do all five of these at once:
- Announce the detection in public chat, so everyone present knows what happened.
- Hold a clear alert in the center of the screen for five seconds.
- Write the evidence and the punishment result to the server console.
- Run the ban or kick command you've configured.
- Send a detailed report via Discord webhook to the server's staff.
That transparency is exactly what the community feels is missing from the official system: here the player knows why they were sanctioned, everyone else in the match sees it, and the admins get the evidence.
The system is also configurable. By default, the more error-prone detections (desubticking, nulls, and subtick spam) only kick, while the rest apply the permanent-ban command. Admins can change the punishments, empty them entirely, or leave the plugin in alert-only mode: the detections still show up, but no sanction is issued. That's ideal for a community server, where there's almost always a human on the other side able to confirm a suspicion before making a final call.
What CS2AC is not
It's worth being equally clear about the limits — and the author is. This does not replace the official anti-cheat, nor does it try to. It can't be added to Premier or Valve matchmaking: it only works on community and dedicated servers you control. It doesn't catch everything either, because it can only judge the behavior that reaches the server.
And there's an unavoidable consequence of being open source: cheat developers can read the code and look for ways around it. That's the price of transparency. On top of that, a system based on behavioral patterns, applied at a scale of millions of players, would generate a volume of false positives no official server could absorb without oversight.
All that said, the achievement is enormous. That one person built a working seventeen-module detection system in a matter of months leaves an uncomfortable question hanging — the same one half the community is asking: if this can be done like this, what exactly is going on with VACnet?
The context: a community that stopped waiting
CS2AC isn't born in a vacuum. It arrives at the peak of tension between Valve and its community over anti-cheat: the Call II Arms-ory announcement — more skin collections — filled up with replies demanding precisely the opposite, and insider Gabe Follower claims to have "promising" information about unprecedented changes to the system, which he still hasn't published.
Meanwhile, the comparison that stings most is the ban waves. In recent hours, Valve has been praised for removing around 9,000 accounts in a single day — but FACEIT, with a far smaller player base, passed 12,000 in 24 hours. The platform has also just announced it will raise its cheating penalties to five years starting August 5.
That's the context in which a player sits down to code an anti-cheat in his spare time and gives it away. It doesn't fix the underlying problem — only Valve can do that — but it makes clear where this community's energy currently lies. And if CS2AC proves anything, it's that patience has turned into code.
Source: CS2AC repository on GitHub, Gabe Follower (@gabefollower) on X.
