Git shows what changed.
Aition shows what broke.
A command-line tool that answers "what breaks if we change this?" for a codebase. Every affected file, with a verdict: throw away, rework, review, or safe. Built for teams running AI coding agents.
$ aition ask "What would break if we dropped Redis?" --project . The failures aren't in the diff
When an AI coding agent changes your code, git shows what it touched. It does not show the event handler three files away that just stopped firing, the YAML that selects a plugin by a string that no longer exists, or the background pipeline that now quietly drops one record in fifty.
Those failures live in assumptions the agent made and nobody wrote down. Aition reads the agent's transcript, where the assumptions are, and the codebase, where the consequences are, and tells you which files to distrust.
What it returns
A verdict per file, a one-line reason, a confidence, and how the file got into the set. Then the list of files it did not examine, with the reason. It never calls a file safe by omission.
$ aition ask "What would break if we changed utils/supabase/server.ts?" structural pass 9 candidates in 0.4s estimated cost $0.11 (cap: --max-cost 1.00) REWORK app/auth/callback/route.ts imports createClient from server.ts REWORK app/auth/confirm/route.ts imports createClient from server.ts REWORK app/protected/page.tsx calls createClient() in a server component REWORK app/protected/layout.tsx calls createClient() for the session check REWORK app/actions.ts server actions instantiate the client REWORK components/auth-button.tsx awaits createClient() to read the user REWORK components/header-auth.tsx awaits createClient() to read the user REWORK middleware.ts shares the cookie contract, no import REVIEW utils/supabase/server.ts the file itself not examined (2) utils/supabase/client.ts browser client, separate contract utils/supabase/middleware.ts hub, expansion stopped here 8 rework 1 review 0 safe 0 discard
Illustrative output, shaped like the real run on the Next.js/Supabase template. The real run returned 9 files, 8 REWORK plus the file itself, zero SAFE.
Four verdicts: DISCARD means throw it away, REWORK, REVIEW, SAFE. DISCARD is the only one that needs unanimity across samples. Low confidence goes to REVIEW, never SAFE. It fails closed.
Measured, not estimated
Eight real open-source repos, sent cold. Never seen by the builder or the tool before the run. Ground truth came from grep on the code, not from a model.
Django, cal.com, ROS 2 Nav2, Autoware, PX4-Autopilot, terraform-provider-aws, Docker Compose, Next.js + Supabase template. Plus five earlier: Flask, ripgrep, cobra, express, Uniswap v2.
| Repo | Files | Structural pass |
|---|---|---|
| Django | 2,874 | 2.9s |
| cal.com | 6,287 | 3.2s |
| PX4-Autopilot | 7,468 | 8.3s |
Structural pass only. No API call, no cost. The reasoning layer runs after, on the candidates it found.
Frozen benchmark, unchanged through every change: recall from the agent's transcript versus recall from the diff alone.
Twice the model corrected the hand-written answer key. A migration file that shouldn't change. An interface method that gets implemented once, not 33 times. Both times it was right.
What it reads
14 languages. Python, JavaScript, TypeScript, Go, Rust, Java, Kotlin, C, C++, C#, Swift, Ruby, PHP, Solidity.
Beyond code. package.json, Cargo.toml, go.mod, pyproject.toml, requirements.txt, ROS package.xml, CMakeLists.txt, Kconfig, board configs, Dockerfiles, shell scripts, Makefiles, Terraform, Kubernetes manifests, SQL, Prisma, .proto, GraphQL, Avro, Thrift, .env, plugin and behavior-tree XML, uORB and ROS message definitions, Jinja, Handlebars, Go templates, HCL, and JSON/YAML config.
Couplings imports can't show. Event names shared between publisher and subscriber. URL routes across a frontend/backend boundary. Go interfaces satisfied implicitly. ROS topics. Rust macro-generated functions. YAML selecting a C++ plugin by string. Environment variables and the code that reads them. Files referenced by path from CI or Dockerfiles. Solidity interface consumers. Class inheritance across nine languages.
Who it's for
- Teams running AI coding agentsThe transcript layer and the assumption ledger. The primary audience.
- RoboticsROS 2 plugins declared in C++, registered in XML, selected in YAML. Nav2: "rename the NavfnPlanner plugin" came back 14 of 14 across five file types.
- DeFi and smart contractsA vault only ever sees IPriceOracle. Replace the oracle and the vault never names the new one. Uniswap v2 and a lending vault fixture, exact.
- Web monoreposBarrel files, computed imports, path aliases, shared event names, routes. cal.com, 6,000+ files.
- InfrastructureAnsible roles, Dockerfile stages, ROS_DISTRO threaded through devcontainers. Autoware.
- Go servicesImplicit interfaces, generated mocks. Docker Compose's 40-method interface across 51 files.
How it works
Two layers. The structural layer finds the neighborhood: imports, routes, event names, config strings, interface implementations. Free, seconds, no API call. The reasoning layer decides what actually breaks, on only the files the first layer found. Cents to a dollar, estimated before it spends.
It reads the agent's transcript, not just the diff. And it tells you what it didn't look at.
What it doesn't do
- Recall is measured against files that mention the thing. A coupling with no textual trace (pure runtime reflection, a database trigger, an external queue configured elsewhere) is outside what these numbers measure.
- DISCARD verdicts have been checked by reading the model's reasons, not by deleting the files and running the build. That step is next, not done.
- Zero strangers have run it yet. Every number on this page is the builder's own run.
- No hosted version. It runs on your machine with your key.
Get it
Open core, MIT license. You supply an Anthropic API key. Aition never sees your key or your code beyond your own API calls. Linux, macOS, and Windows, each verified by running the suite.
$ pip install -e . $ export ANTHROPIC_API_KEY=... $ aition setup --project /path/to/repo
The repo is private and opening to the first engineers who ask. Bring a codebase you'd like to see it fail on.