Before the AI runs a command or writes a file, your own machine checks it. When a program, script, git branch or package the AI made up isn't there, the action is stopped before it runs.
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 (14 days free). 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.
node -e or python -c, or fed to node or python - through a heredoc, that won't parse, before it runs.\\ into \ before a command runs. When that would leave code passed to node -e or python -c unable to parse, Check stops it first. A change that still parses runs: whether the doubled backslashes were meant is a judgment, not a fact. When a command fails and Git Bash changed it, Check says exactly what changed.It blocks only when the code as written parses and the code that would arrive does not../script that isn't in the folder. That includes commands inside $(...), backticks and bash -c, and after || or else.A program the command checks for first, as in command -v jq && jq, is left to the command.python -m, asks your Python whether the module is there. A package that npx, pnpm dlx, bunx, uvx or pipx run would download and run, a Docker image or tag being pulled, and a package a JavaScript or TypeScript file starts importing are checked the same way. Before npx downloads and runs a package that isn't installed, it asks npm too.With a private registry, Check stays silent rather than guess.cd into a folder that isn't there, node, python or bash running a script that isn't there, npm, pnpm or yarn run of a script package.json doesn't have, and python -m of a module your Python doesn't have.rmdir receives \, the root of the drive.Ordinary deletes, inside your project or anywhere else, go ahead. A folder held in a variable isn't judged._.smartMerge() or request(url, { retry: 3 }). Your project's own TypeScript decides, against the library's own type definitions.Only new errors in the edit, only names traced to a library, TypeScript 5 or 6. If it takes longer than 2.5 seconds, the write goes ahead.package.json, that wouldn't parse, before they're written.JavaScript is judged by Node's own parser: .mjs and .cjs always; an existing .js file that parsed before, when an edit breaks it in a way no dialect explains (an unclosed bracket, an unexpected end). A brand-new .js file is not judged: JSX, Flow and bundler code are written as .js, and Node can't read them. .jsx and other JSON files aren't parsed; .ts files get the library-name check instead. Files written with a heredoc, echo or printf are checked too.Where the machine can't give a definite answer, Check stays out of the way.
cat notes.txt, runs and fails on its own. Check checks the program, the script node, python or bash would run, and the folder cd goes to, not every file a command reads.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 command changes folder or installs something, 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 gate runs on your machine, in ~/.check, before each command and file write. Your own shell reads the command and answers every check, and file writes are parsed right there too. The logic that decides which questions to ask runs on our servers and isn't published. 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.
Check catches it first. 14 days free, no card. US$0.02 per message afterwards.
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.