Every command an AI runs rests on guesses: this program exists, this file, this folder, this branch, this package. The AI can't see your machine, and the machine only answers after the command has run. Check sits in between: before anything runs, it asks your own machine about every guess, and if one is false the command is stopped, with a plain reason. File writes are checked too.
Works with AI coding agents, on Windows or Linux. Node 18 or newer. Which agents, and what's checked in each: the guide.
It adds Check's hooks to each AI coding agent it finds on your machine (keeping your own hooks) and a folder at ~/.check with the hook script. Nothing goes into your project. From then on, every command and file write passes through Check before it runs, and your machine answers wherever it can.
1. Get your key at the console (100 free blocks). 2. No Node.js? Install it from nodejs.org. 3. Run this line in a terminal, yourself, not through your AI, and paste your key when it asks. 4. Restart your AI agent. Step by step: the guide.
Windows (PowerShell) or Linux
npx @golproductions/check@latest --install
Three steps, every command and every file write.
From our own key, 5 October 2026. Claude was cleaning up after a job on this website. Its command used pkill, a standard Linux tool it assumed would be there. On this Windows machine, it isn't.
Recreated from the session in Claude Code’s style. The command and the error are verbatim, except the username, replaced with “user” for privacy. Check stopped the whole command before any part of it ran, so it couldn’t half-finish: delete some files, fail on the missing tool, and leave the server running. Claude’s next attempt dropped pkill and stopped the server with PowerShell instead.
Each answer comes from your machine or the package registry, never a guess.
jq or pkill. Check stops it, even when it's tucked inside another command.If the command checks for the tool itself first (command -v jq && jq), Check leaves it to the command.cd would go to, a script node, bash, ruby or php would run, an npm run script, a Python module, or a file cat, ls or Get-Content would read. After cd somewhere &&, the rest is checked in that folder.npx and similar tools, Docker images, and new imports in JavaScript and TypeScript.With a private registry, Check stays silent rather than guess.node -e or python -c that won't parse. On Windows, Git Bash quietly changes \\ into \; when that would break the code, Check stops it first and says what changed.package.json, is written, its own parser is asked. A new .js file is left alone, because JSX and bundler code can't be read by Node._.smartMerge(). Your project's own TypeScript decides.TypeScript 5 or 6; if it takes longer than 2.5 seconds, the write goes ahead.Where the machine can't give a definite answer, Check stays out of the way.
python app.py reading data.csv, runs and fails on its own. Check asks the reading tools (cat, head, ls, Get-Content), the script node, bash, ruby or php would run, and the folder cd goes to, not every file a program opens.echo or printf of one quoted text are parsed. Anything more involved, like echo "$x" >> app.py, isn't.eval, env, xargs, sudo or a login shell, anything after a cd that isn't the first thing in the command, or after an install, a script an earlier part of the same command may have made, and PowerShell commands that load a module, define a function or alias, or test for the program themselves.Check is not a security tool. You still need one.
What leaves your machine, and what never does.
Installs made before 24 September 2026 still send each prompt to an endpoint we retired that day; it discards the prompt unread, stores nothing and charges nothing. Reinstalling Check stops it being sent.
We have our own key that we use on our own machine. We sometimes share what it catches as examples. We never share anything from yours.
What runs where. The Check client runs on your machine, in ~/.check, before each command and file write. It decides nothing: it tells our server what the AI is about to do and answers its questions, using your own shell, git and parsers, and only about names the command contains. Every decision is made on our server and isn't published. The client is readable and signed by us, and accepts updates only with that signature. The way to know if Check works is to use it: if it catches something you would have missed, it's working. If it misses something, you'll know before we do.
The problems people ask about, and how Check stops each one.
Check catches it first. 100 free blocks, no card. Then A$0.10 only when it stops something.
Check is one layer of anti-hallucination, not the whole stack. It stops actions your machine proves wrong, and nothing here claims it makes an agent hallucination free. It also does not prevent reasoning failure: a model that is wrong for its own reasons will still be wrong, and Check will not catch that. Results vary by model, project structure, and environment, and the same prompt on a different model will not give you the same result. Check asks your machine directly at each check (PATH lookup, shell parser, git, the npm, PyPI, crates.io, RubyGems, Packagist, NuGet, Homebrew, Chocolatey and PowerShell Gallery registries, file parsers) and forwards the machine's verdict. It does not guarantee any specific outcome or detection rate. The service is provided "as is" and "as available", subject always to your rights under the Australian Consumer Law, which cannot be excluded and which nothing on this site limits. See our terms for details. Questions or feedback: support@golproductions.com.