The trust layer for AI coding agents - say what must never break, prove it holds, enforce it on every agent edit
0
stars
18
commits
TypeScript
primary language
Sep 8, 2026
updated

The trust layer for AI coding agents.
Say what must never break. Prove it holds. Enforce it on every agent edit.
📬 Feature requests, bugs, questions, or feedback: daryl@dont-break.com
🇬🇧 English · 🇫🇷 Français · 🇸🇦 العربية · 🇨🇿 Čeština · 🇩🇰 Dansk · 🇩🇪 Deutsch · 🇬🇷 Ελληνικά · 🇪🇸 Español · 🇮🇷 فارسی · 🇫🇮 Suomi · 🇵🇭 Filipino · 🇮🇱 עברית · 🇮🇳 हिन्दी · 🇭🇺 Magyar · 🇮🇩 Bahasa Indonesia · 🇮🇹 Italiano · 🇯🇵 日本語 · 🇰🇷 한국어 · 🇳🇱 Nederlands · 🇳🇴 Norsk · 🇵🇱 Polski · 🇧🇷 Português (Brasil) · 🇷🇴 Română · 🇷🇺 Русский · 🇸🇪 Svenska · 🇹🇭 ไทย · 🇹🇷 Türkçe · 🇺🇦 Українська · 🇺🇿 Oʻzbekcha · 🇻🇳 Tiếng Việt · 🇨🇳 简体中文 · 🇹🇼 繁體中文

AI agents ship code fast. Nobody ships trust with it. Every team running Cursor, Claude, or CI bots has the same unspoken fear: the day a quick fix silently breaks the one thing that was never supposed to break.
dont-break turns that fear into a contract, in four steps:
Requires Python 3.9+ and Node.js (npm). The graph extractor installs itself on first run.
pip install dont-break
dont-break --wake
That opens a local UI on http://127.0.0.1:4040, in your language (32 available). Sign in, pick a project folder, and the map of your code builds itself: a live 3D graph of every module, call, and dependency, with your protected zones lit up on top of it.
Most guardrails are prompts, and prompts get ignored. dont-break sits outside the model:
check_change before editing and get_impact before refactoring. It gets told "this is riskier than it looks — 23 call sites break" before writing, not after.You: "Rename PokemonService.fetchAll"
Agent: → get_dependents(PokemonService.fetchAll) "23 call sites across 4 modules"
→ get_impact(files: [...]) "radius 3, touches ui/, cache/, api/"
→ get_do_not_touch() "PokemonService is a danger zone: fan-in 23, stability 31"
Agent: "This is riskier than it looks. Here are the 23 places that break,
and a safer 2-step plan."
That conversation happens automatically once connected. No prompt engineering: the agent skill teaches it.
You pick the strength per folder, in one click:
| Watch mode (default) | Hard mode | |
|---|---|---|
| What happens on a risky agent write | The write lands; the verdict (ok / warn / block) is reported to the agent and to your dashboard as an incident | The write is refused until a check_change has passed for that file |
| Philosophy | Observe first: see what your agents would have broken, build trust in the rules | Enforce: a protected file cannot be touched unchecked, period |
| If dont-break is offline | Fail-open — your agent keeps working, nothing blocks | Fail-closed on protected writes — "hard" is not a lie |
| Best for | First weeks, exploring, low-stakes repos | Payment flows, auth, schemas, anything with an on-call rotation |
Start in Watch, read a week of incidents, then flip the folders that matter to Hard.
"My agent keeps breaking things it never opened"
Plug dont-break into Cursor or Claude Desktop. Your agent checks impact and danger zones before editing, not after.
→ Set up in Cursor / Claude (2 min)
"I want CI to block disasters, not argue about style"
One job that fails the merge when a change hits a protected zone or a fragile hub, grounded in the real dependency graph, not vibes.
→ GitHub Actions · GitLab CI · pre-commit hook
"My team needs to see this, not just me"
Everything above runs on your machine — what your agent is doing, right now, on your working copy. dont-break.com is the other half: every repository, every agent, and what CI actually enforced on the default branch, in one place.
→ Team dashboard
"I just want to interrogate my codebase"
dbq dependents <id> | jq: who breaks if I change this? Your repo becomes a queryable database.
→ Shell + jq recipes
"I'm building my own agent"
The same 11 tools, exposed as typed TypeScript definitions or a generated OpenAPI 3.1 spec.
→ LangChain / OpenAPI / custom agents
| Tool | The question it kills |
|---|---|
find_symbol | "Which node is this name / file?" (entry point) |
get_dependents | "Who breaks if I change this?" |
get_impact | "What's the blast radius of these edits?" |
get_do_not_touch | "What should I refuse to touch without asking?" |
get_dependencies | "What does this code rely on?" |
find_path | "Why does changing A affect B?" |
get_arch_status | "How carefully should I work in this repo?" |
check_change | "Does this edit violate a team rule?" |
propose_rule | "Record a warn now, or a block for a human to approve" |
pause_own_rule | "Stop evaluating a rule this agent token authored" |
append_rule_reason | "Add one justification, never edit or delete" |
Query tools are read-only, server-side analysis, capped responses: always safe to call. The three rule tools write team rules under tight limits: they cannot activate a block, pause someone else's rule, or rewrite reasons.
Keyboard-first: cmd+K opens the command palette.
mcp.json..cursor/skills/dont-break/SKILL.md (and AGENTS.md for other agents) so agents use the tools without being told.The languages dont-break maps, and what each one can actually do, live on dont-break.com/language-support.
18 commits
TypeScript
68.4%
JavaScript
19.0%
Python
11.9%
The trust layer for AI coding agents - say what must never break, prove it holds, enforce it on every agent edit
0
stars
18
commits
TypeScript
primary language
Sep 8, 2026
updated

The trust layer for AI coding agents.
Say what must never break. Prove it holds. Enforce it on every agent edit.
📬 Feature requests, bugs, questions, or feedback: daryl@dont-break.com
🇬🇧 English · 🇫🇷 Français · 🇸🇦 العربية · 🇨🇿 Čeština · 🇩🇰 Dansk · 🇩🇪 Deutsch · 🇬🇷 Ελληνικά · 🇪🇸 Español · 🇮🇷 فارسی · 🇫🇮 Suomi · 🇵🇭 Filipino · 🇮🇱 עברית · 🇮🇳 हिन्दी · 🇭🇺 Magyar · 🇮🇩 Bahasa Indonesia · 🇮🇹 Italiano · 🇯🇵 日本語 · 🇰🇷 한국어 · 🇳🇱 Nederlands · 🇳🇴 Norsk · 🇵🇱 Polski · 🇧🇷 Português (Brasil) · 🇷🇴 Română · 🇷🇺 Русский · 🇸🇪 Svenska · 🇹🇭 ไทย · 🇹🇷 Türkçe · 🇺🇦 Українська · 🇺🇿 Oʻzbekcha · 🇻🇳 Tiếng Việt · 🇨🇳 简体中文 · 🇹🇼 繁體中文

AI agents ship code fast. Nobody ships trust with it. Every team running Cursor, Claude, or CI bots has the same unspoken fear: the day a quick fix silently breaks the one thing that was never supposed to break.
dont-break turns that fear into a contract, in four steps:
Requires Python 3.9+ and Node.js (npm). The graph extractor installs itself on first run.
pip install dont-break
dont-break --wake
That opens a local UI on http://127.0.0.1:4040, in your language (32 available). Sign in, pick a project folder, and the map of your code builds itself: a live 3D graph of every module, call, and dependency, with your protected zones lit up on top of it.
Most guardrails are prompts, and prompts get ignored. dont-break sits outside the model:
check_change before editing and get_impact before refactoring. It gets told "this is riskier than it looks — 23 call sites break" before writing, not after.You: "Rename PokemonService.fetchAll"
Agent: → get_dependents(PokemonService.fetchAll) "23 call sites across 4 modules"
→ get_impact(files: [...]) "radius 3, touches ui/, cache/, api/"
→ get_do_not_touch() "PokemonService is a danger zone: fan-in 23, stability 31"
Agent: "This is riskier than it looks. Here are the 23 places that break,
and a safer 2-step plan."
That conversation happens automatically once connected. No prompt engineering: the agent skill teaches it.
You pick the strength per folder, in one click:
| Watch mode (default) | Hard mode | |
|---|---|---|
| What happens on a risky agent write | The write lands; the verdict (ok / warn / block) is reported to the agent and to your dashboard as an incident | The write is refused until a check_change has passed for that file |
| Philosophy | Observe first: see what your agents would have broken, build trust in the rules | Enforce: a protected file cannot be touched unchecked, period |
| If dont-break is offline | Fail-open — your agent keeps working, nothing blocks | Fail-closed on protected writes — "hard" is not a lie |
| Best for | First weeks, exploring, low-stakes repos | Payment flows, auth, schemas, anything with an on-call rotation |
Start in Watch, read a week of incidents, then flip the folders that matter to Hard.
"My agent keeps breaking things it never opened"
Plug dont-break into Cursor or Claude Desktop. Your agent checks impact and danger zones before editing, not after.
→ Set up in Cursor / Claude (2 min)
"I want CI to block disasters, not argue about style"
One job that fails the merge when a change hits a protected zone or a fragile hub, grounded in the real dependency graph, not vibes.
→ GitHub Actions · GitLab CI · pre-commit hook
"My team needs to see this, not just me"
Everything above runs on your machine — what your agent is doing, right now, on your working copy. dont-break.com is the other half: every repository, every agent, and what CI actually enforced on the default branch, in one place.
→ Team dashboard
"I just want to interrogate my codebase"
dbq dependents <id> | jq: who breaks if I change this? Your repo becomes a queryable database.
→ Shell + jq recipes
"I'm building my own agent"
The same 11 tools, exposed as typed TypeScript definitions or a generated OpenAPI 3.1 spec.
→ LangChain / OpenAPI / custom agents
| Tool | The question it kills |
|---|---|
find_symbol | "Which node is this name / file?" (entry point) |
get_dependents | "Who breaks if I change this?" |
get_impact | "What's the blast radius of these edits?" |
get_do_not_touch | "What should I refuse to touch without asking?" |
get_dependencies | "What does this code rely on?" |
find_path | "Why does changing A affect B?" |
get_arch_status | "How carefully should I work in this repo?" |
check_change | "Does this edit violate a team rule?" |
propose_rule | "Record a warn now, or a block for a human to approve" |
pause_own_rule | "Stop evaluating a rule this agent token authored" |
append_rule_reason | "Add one justification, never edit or delete" |
Query tools are read-only, server-side analysis, capped responses: always safe to call. The three rule tools write team rules under tight limits: they cannot activate a block, pause someone else's rule, or rewrite reasons.
Keyboard-first: cmd+K opens the command palette.
mcp.json..cursor/skills/dont-break/SKILL.md (and AGENTS.md for other agents) so agents use the tools without being told.The languages dont-break maps, and what each one can actually do, live on dont-break.com/language-support.
18 commits
TypeScript
68.4%
JavaScript
19.0%
Python
11.9%