Skip to content
unerrunerr

Your coding agents can’t see what an edit breaks.

unerr reads your whole codebase and shows the agent every call site an edit puts at risk, before it makes the change. It runs on your machine. Your code never leaves it.

curl -fsSL https://unerr.dev/install | sh

No account. Runs on your machine. Uninstall with one command.

On Windows:

Claude Code · Cursor · Codex · Windsurf · Cline · GitHub Copilot CLI · Antigravity

An agent changes one function. Twelve other places break.

It never read them. It had no way to. unerr keeps a live map of what calls what, and puts the list in front of the agent at the moment of the edit.

Editing discountForTier() in pricing/apply-discount.ts12 call sites
  • pricing/apply-discount.test.ts:12asserts the old rounding rule
  • api/routes/checkout.ts:118calls with two arguments, now three
  • lib/orders/order-summary.ts:52renders the removed rounding step
  • jobs/nightly-reconcile.ts:76reads a field this edit drops
  • api/webhooks/stripe-sync.ts:203retries on the old error shape
  • reports/monthly-revenue.ts:18sums a column this edit renames
  • admin/refunds/calculate.ts:64inlines the old formula directly
  • exports/csv-generator.ts:91formats using the removed field
  • integration/partner-feed.ts:140an external contract reads the old shape
  • mobile/cart-total-bridge.ts:33cross-platform shim, now stale
  • billing/invoice-total.ts:41direct caller, no test coverage
  • billing/invoice-total.test.ts:9asserts the old return shape

Illustrative. A constructed example of the list, in the shape and order the agent receives it. Not a captured run.

Three jobs, one install

Most teams end up with a plugin for each of these. They do not share anything, so none of them can use what the others know.

unerr does all three off one map of your code. The guardrail knows what the meter saw. That is the only reason it works.

It measures.

Every task, turn, model and token, and whether the change survived the week.

It cuts.

86-90% of the tokens an agent spends navigating code, measured against grep-and-read and reproducible on your own repo.

It enforces.

Your rules, applied at the moment of the edit, in the agent's own hook layer.

What you get at the end of a turn

Named catches, counted. Not a score.

End of turn8 catches
Breaking signature change caught
1
Call sites still on the old shape
4
Tests asserting the old behaviour
2
Config values reading the removed field
1

Illustrative. A constructed example in the shape of a real end-of-turn summary. The counts are not from a measured run.

What it measures, and what it doesn’t

It measures the work your coding agents do in your repositories. It does not read your bill, and it does not watch AI running anywhere else in your company. For the rest of your AI spend, see what actually moves the cost .

It reports at team and system level. It never ranks individual developers, and that is contractual, not a setting.

What’s free, and what isn’t

Everything that runs on your machine is free and always will be — no account, unlimited repos. Anything that needs our servers (team dashboard, shared conventions, fleet inventory, org-wide enforcement when it ships) is the paid plan.

Run it for two weeks. The numbers are yours to keep.

Whatever it finds is your data, on your own machine. Uninstall and it stays.

curl -fsSL https://unerr.dev/install | sh

No account. Runs on your machine. Uninstall with one command.