{"slug": "tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it", "title": "Tell your AI agent what it's about to break, before it breaks it", "summary": "Developer Ionut released impact, an MIT-licensed Rust CLI that builds a Tree-sitter symbol graph in local SQLite to answer what depends on a file or symbol before an AI coding agent edits it. The tool reports direct and indirect callers, API routes, events, database tables and affected tests, and can be wired into agents via MCP (impact mcp) or Claude Code PreToolUse hooks so blast-radius checks run on the first edit, commit or pull request. It supports Rust, TypeScript/JSX, Python, Go, Kotlin, Swift and C++, with confidence tiers (Exact/Probable/Heuristic) and cross-repo workspace.toml detection.", "body_md": "AI coding agents are great at editing files. They are worse at knowing what those edits touch.\n\nYou rename a field. The agent updates the obvious call sites. A controller three packages away still compiles locally, then fails in CI. Or worse: it ships, and a route that depended on the old shape starts 500ing.\n\nThe usual fix is \"read more of the codebase\" or \"grep harder.\" That turns a structural question into an open-ended reasoning problem. Different runs, different guesses.\n\n[impact](https://github.com/AncientiCe/impact-rs) flips that. Before you change a file or a symbol, you ask one fast, repeatable question: what depends on this?\n\n``` bash\n$ impact query src/payment/service.rs\n\nDIRECT\n  payment::controller::PaymentController::handle\nINDIRECT\n  order::OrderService::checkout\nAPI\n  POST /payments\nEVENTS\n  PaymentCreated\nDATABASE\n  payments\nTESTS\n  3 affected tests\n```\n\n**Agents get a checklist, not vibes.** Wire it as MCP (`impact mcp`) and the agent can call `impact_file` / `impact_change` / `impact_diff` the same way every time. Same input, same graph answer. No \"I think this is only used here.\"\n\n**Humans get the same report.** You do not need an agent. `impact query`, `impact change \"rename Foo::bar\"`, or `git diff | impact diff` works in a terminal for review and refactors.\n\n**PR descriptions can carry the blast radius.** Reviewers cannot see your mental graph. Putting callers, routes, events, tables, and tests in the PR body is something the whole team benefits from, agent or not.\n\n**Hooks beat hope.** Claude Code can run a PreToolUse hook so blast-radius checks fire on the first edit, on `git commit`, and when opening a PR, whether or not the model remembered the rule.\n\n**Over-report beats silent miss.** When resolution is ambiguous, impact prefers listing candidates over picking one and staying quiet. False positives you can dismiss. False negatives you do not see until production.\n\nIt is structural, not a full type-checker. Tree-sitter parses the project into a symbol graph in local SQLite. Calls resolve from imports, same-file declarations, and declared binding types, with confidence tiers (`Exact` / `Probable` / `Heuristic`). You can filter with `--min-confidence` when you only want the sure edges.\n\nLanguages today: Rust, TypeScript/JSX, Python, Go, Kotlin, Swift, C++. Full API / events / database contract detection is deepest on Rust; others get strong DIRECT/INDIRECT/TESTS where conventions are clear. The core is language-agnostic; adapters plug in without rewriting the engine.\n\nCross-repo `workspace.toml` can flag shared route / event / table identities across sibling projects, labeled Declared / Strong / Weak so coincidences stay honest.\n\n```\nbrew install ancientice/impact/impact\n# or: curl -fsSL https://raw.githubusercontent.com/AncientiCe/impact-rs/master/scripts/install.sh | sh\n\nimpact index .\nimpact query path/to/file.rs\nimpact install   # MCP + rules for Cursor / Codex / Claude Code\n```\n\nWindows has a PowerShell install script; `cargo install --git https://github.com/AncientiCe/impact-rs --locked impact-cli` works anywhere with Rust.\n\nEvery team using AI editors is paying the same tax: agents that edit locally and miss the neighborhood. A small deterministic tool that answers \"who calls this?\" turns that tax into a checklist.\n\nIf you build agents, wire MCP. If you review PRs, ask for `impact_diff` in the description. If you maintain a polyglot monorepo, try indexing once and querying before a scary rename.\n\nRepo (MIT): [github.com/AncientiCe/impact-rs](https://github.com/AncientiCe/impact-rs)\n\nFound a blind spot? `impact report-blindspot` drafts an issue so the graph can get better for the next person.\n\n*Built by [Ionut](https://github.com/AncientiCe). If shared agent memory is your other headache, that is a separate project: [Palace](https://palacememory.com). This post is about blast radius.*", "url": "https://wpnews.pro/news/tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it", "canonical_source": "https://dev.to/icegaming/tell-your-ai-agent-what-its-about-to-break-before-it-breaks-it-55nl", "published_at": "2026-10-05 11:04:52+00:00", "updated_at": "2026-10-05 11:19:36.962588+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools", "agent-protocols", "mlops"], "entities": ["impact", "Ionut", "AncientiCe", "Claude Code", "Cursor", "Codex", "Palace", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it", "markdown": "https://wpnews.pro/news/tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it.md", "text": "https://wpnews.pro/news/tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it.txt", "jsonld": "https://wpnews.pro/news/tell-your-ai-agent-what-it-s-about-to-break-before-it-breaks-it.jsonld"}}