Machine learning is getting eerily good at separating cheaters from honest players. Some people read that and conclude community anti-cheat is obsolete. The opposite is true. As ML systems improve, community oversight becomes more valuable, not less.
What Valve's ML systems are optimised for
Take Valve at their word: their behavioural classifiers exist to maintain match-quality at scale. The metric they optimise is, roughly, are paying-customer matches enjoyable enough that those customers keep playing and spending. That's a perfectly reasonable corporate metric. It's also subtly different from what an honest player wants.
Match-quality optimisation cares about outcomes: were both teams competitive, did the match feel close, did anyone rage-quit. Anti-cheat optimisation, by contrast, cares about processes: did the match contain cheating, was the result legitimate. These objectives diverge in two important cases.
The borderline cheater
Imagine a player who runs a careful aim-assist cheat that gives them a 3% edge. Their matches feel competitive, both teams have fun, no one rage-quits. To Valve's match-quality model, this player is fine. To the honest player on the losing team, they aren't.
Valve's system has no incentive to ban this player aggressively because banning is expensive — false positives generate refund-eligible complaints, support tickets, community PR damage. The system trades off conservatively, accepting a low ban-rate in exchange for a low false-positive rate.
The skilled smurf
A Premier-25k player on a Premier-12k smurf account ruins matches. They're not cheating in the technical sense, so behavioural classifiers won't flag them as cheaters. They're also typically careful enough to keep their match results within the realistic range for their displayed rank, which means trust-factor clustering doesn't catch them either.
From Valve's system perspective, they're a normal player with an unusual win rate. From the eight other players in the match, they're a problem.
The class of harms ML cannot fix
Machine learning is good at detecting statistical anomalies. It is bad at the harms that don't produce anomalies, which include:
- One-time cheaters. Players who turn on a cheat for a single match to win a tilt-point or solve a bet. Their lifetime statistics look normal.
- Coordinated griefing. Pre-made stacks who deliberately throw matches to manipulate matchmaking. Their behaviour is unusual but their stats are ambiguous.
- Account selling. A high-rank account played by an unrelated purchaser. The behavioural signature changes after the sale, but the change is gradual enough to not look like a cheat onset.
- The lone wallhack.A player who only uses ESP and never aimbot. Their aim stats are completely normal, but their decision-making isn't.
All of these are visible to a human watching a demo. None of them are easy to detect from aggregated server-side stats alone.
What community oversight uniquely provides
Eyes on edge cases. Demos are public. A reviewer looking at a full match has access to information no behavioural classifier can use — comms, decision-making, contextual reads. Edge-case detection is exactly where humans still outperform ML.
Accountability artifacts. Convictions, verdicts, and reviewer consensus are public records. When a cheater is caught, the evidence is visible to everyone. That changes the cost calculus of cheating in a way silent algorithm bans do not.
Speed on novel cheats.When a new cheat emerges, the ML system has no training data. Days to weeks of cheaters running freely while telemetry accumulates. Community reviewers can spot the new cheat's pattern within hours of seeing it once.
Closure for victims.A player who was wronged by a cheater deserves to know the cheater faced consequences. Silent ban-waves don't provide that. Public verdicts do.
Why the volume problem isn't a deal-breaker
The standard objection: there are millions of CS2 matches a day, and only a few thousand active community reviewers. The community can't scale.
That's correct, and it's also fine. Community oversight isn't supposed to replace ML — it's supposed to handle the cases ML mishandles. That's a much smaller pool. The cases that get reported are usually the ones where players already suspected something the ML didn't catch, which is almost the right filter to bring to humans.
The volume problem is also addressable through tooling: timestamp-tagged reports, Steam-ID-deduplicated cases, and prioritisation by reporter reliability all let community time go where it's most valuable.
The right question
The question isn't "can community anti-cheat replace ML?" It's "what should community anti-cheat be designed to do that ML cannot?" Once you frame it that way, the answer becomes obvious. Community systems should target edge cases, build accountability, react fast to novel cheats, and give victims closure. ML systems should target volume, baseline filtering, and matchmaking quality.
Each layer is best at what the other layer is bad at. Together they cover more of the cheating-detection space than either could alone. CSWatch is built around that principle, and we expect to keep being relevant to CS2 for as long as the game does.