MCP tool that catches AI-agent scope creep A new open-source tool called Overreach detects when AI coding agents add unauthorized code—such as endpoints, dependencies, or cron jobs—beyond the original prompt. The tool compares a developer's prompt with the resulting diff using LLM-based scope extraction and deterministic parsing, flagging scope creep with severity levels. It runs as a CLI or pre-commit hook, supporting multiple LLM providers or a fully offline mode. A standalone MCP tool that catches AI-agent scope creep. You give it the prompt you gave your coding agent, and the diff it produced. Overreach tells you whether the diff stayed inside what the prompt asked for — or whether the agent quietly added an endpoint, a dependency, an env var, or a cron job that you never asked for. "turns out my ai assistant had been extremely making product decisions without me" Node.js 18+ — nodejs.org https://nodejs.org . Verify with node -v . npm comes with Node.js. Verify with npm -v . Git — required for the pre-commit hook and git diff piping. npx -y -p overreach overreach-cli demo Runs the real pipeline on a sample diff — no API key, no setup, costs nothing. Exits 1 with a HIGH scope-creep finding the demo prompt asks for a login form; the diff smuggles in Stripe, an env var, an endpoint, and a cron job . That's the whole product in one command. A diff is flagged when it adds something the prompt never authorized: | Finding kind | Caught when the diff adds… | |---|---| scope.dep | a package/requirement the prompt didn't name | scope.env | an env var process.env.X , os.environ , .env | scope.endpoint | an HTTP route / handler / route.ts file | scope.cron | a cron / scheduler job | scope.file | edits to a file the prompt didn't touch on | scope.feature | a new top-level symbol/feature beyond the prompt | Severity: env / endpoint / cron = high · dep / file = medium · feature = low . Overall scope creep score : HIGH if any high finding, MEDIUM if any medium, else LOW . Stage 1 — Scope extraction LLM . Reads your prompt and produces an authorized scope JSON: which files, features, deps, endpoints, env, and behaviors you actually asked for. Deciphers typos to the nearest real concept but never invents scope . This is the only stage that calls a model. Stage 2 — Diff parsing deterministic, no LLM . Regex-parses the diff into the set of things it actually adds — imports, deps, process.env.X references, route handlers, cron jobs, new symbols. Runs in milliseconds. Stage 3 — Comparison deterministic . Set arithmetic with fuzzy matching: actual − authorized = findings . Stages 2 and 3 are pure functions — no inference, no opinion, fully auditable. That's what makes Overreach testable without spending a cent on inference. npm install -g overreach Or use directly via npx no install needed : npx -y -p overreach overreach-cli demo For best results, set one LLM provider key for Stage 1 scope extraction: | Provider | Env vars | |---|---| | Anthropic | ANTHROPIC API KEY | OpenAI / OpenAI-compatible OpenRouter, Groq, Together, LM Studio, … | OPENAI API KEY + OPENAI BASE URL e.g. http://localhost:1234/v1 for LM Studio | | Ollama Cloud or self-hosted | OLLAMA API KEY + OLLAMA BASE URL | Pin a provider/model with SCOPE PROVIDER and OVERREACH MODEL . No key? No problem. Without an API key, Overreach falls back to deterministic scope extraction — it regex-parses your prompt for concrete items file paths, package names, /api/... routes, SCREAMING SNAKE CASE env vars, cron keywords instead of calling an LLM. It won't understand vague instructions as well as an LLM would, but it catches every concrete noun in your prompt. Instant, free, fully offline. npx -y -p overreach overreach-cli init This creates three things: — write the prompt you gave your agent here .overreach/prompt.md — audits every commit against your prompt .git/hooks/pre-commit — instructs AI agents to self-audit before committing CLAUDE.md Edit .overreach/prompt.md with the actual instruction you gave your AI agent: Add a login form to the settings page with email/password fields, form validation, and a submit button that calls /api/auth/login. git add . && git commit -m "add login form" The pre-commit hook audits staged changes against your prompt: HIGH scope creep → commit blocked exit 1 MEDIUM / LOW → commit allowed with findings printed- Template prompt not yet edited → skipped gracefully - No API key → deterministic fallback extracts concrete items from prompt Skip with git commit --no-verify when you know what you're doing. Update .overreach/prompt.md whenever you give the agent a new task. Windows:The pre-commit hook is a shell script. It works out of the box with Git Bash included with Git for Windows . npx -y -p overreach overreach-cli --prompt "add a login form to the settings page" --diff my-changes.diff Or pipe a diff: git diff | npx -y -p overreach overreach-cli --prompt "add a login form to the settings page" Exits 0 if clean, 1 if HIGH — usable as a CI gate. Options: --prompt