{"slug": "git-tells-you-what-changed-causari-tells-you-why", "title": "Git tells you what changed. Causari tells you why.", "summary": "A developer created Causari, a local CLI tool that records AI agent actions as causal events to track intent and provenance behind code changes. Unlike Git, which tracks what changed, Causari answers why an AI agent made a change by capturing prompts, models, reads, writes, diffs, and reasoning. The tool supports multiple capture paths including an LLM proxy, filesystem watching, and native agent hooks.", "body_md": "AI coding agents are becoming good enough to touch real codebases.\n\nThey can refactor files, write tests, change architecture, move logic around, and sometimes modify more code in ten minutes than a human would in an afternoon.\n\nThat is powerful.\n\nBut it creates a new debugging problem.\n\nGit can tell you **what changed**.\n\nWhen an AI agent was involved, you often need to know something deeper:\n\nThat is the problem I wanted to solve with **Causari**.\n\nCausari is a local CLI for **intent-addressable code**.\n\nIt records AI agent actions as causal events: prompts, models, reads, writes, diffs, reasoning, cost, and relationships between actions.\n\nThe goal is simple:\n\nGit tracks bytes. Causari tracks intent and causality.\n\nRepository: [https://github.com/croviatrust/causari](https://github.com/croviatrust/causari)\n\nWebsite: [https://causari.dev](https://causari.dev)\n\nWhen a human developer changes code, there is usually some context.\n\nA commit message.\n\nA pull request.\n\nA ticket.\n\nA discussion.\n\nA design decision.\n\nWith AI coding agents, the workflow is different.\n\nYou ask something like this:\n\n```\nRefactor the auth flow and add JWT refresh logic.\n```\n\nThe agent reads files, makes assumptions, writes code, maybe fixes tests, maybe changes something unrelated, then moves on.\n\nAt the end, you have a diff.\n\nBut the diff does not tell the full story.\n\nA suspicious line appears in `auth.ts`\n\n.\n\nGit can show when the line appeared.\n\nBut Git cannot answer:\n\n```\nwhich prompt produced this exact line?\nwhat completion did it come from?\ndid the agent read the right files first?\nwas this part of the original request or an accidental side effect?\nif I revert this, what downstream work am I also undoing?\n```\n\nThat gap becomes bigger as agents become more autonomous.\n\nThe more work agents do, the more we need provenance.\n\nNot only code provenance.\n\n**Intent provenance.**\n\nCausari treats an AI agent action as something that should be traceable.\n\nNot just as a Git diff.\n\nBut as an event with cause and effect.\n\nAn event can include:\n\nSo instead of only asking:\n\n```\nwhat changed in this file?\n```\n\nYou can ask:\n\n```\nwhy does this line exist?\n```\n\nExample:\n\n```\nre why src/auth.ts:42\n```\n\nOr:\n\n```\nre trace src/auth.ts:42\n```\n\nOr:\n\n```\nre impact <event-id>\n```\n\nThis is the core of Causari.\n\nIt is not trying to replace Git.\n\nGit is still the source of truth for version control.\n\nCausari sits next to it and answers a different question:\n\nGit answers what changed.\n\nCausari answers why the agent changed it.\n\nOne thing I did not want was a system that only works if the AI agent politely reports what it did.\n\nThat is fragile.\n\nAgents forget.\n\nTools differ.\n\nIDE integrations are inconsistent.\n\nSome agents expose hooks, others do not.\n\nSome workflows happen through proxies, some through local tools, some through editors.\n\nSo Causari has multiple capture paths.\n\n`re proxy`\n\nCausari can run as a local OpenAI-compatible or Anthropic-compatible LLM proxy.\n\n```\nre proxy\n```\n\nYour agent sends requests through it.\n\nCausari sees the prompt, completion, model, tokens, and cost as they pass through.\n\nThe request still goes to the provider.\n\nThe difference is that the interaction becomes part of a local causal ledger.\n\n`re watch`\n\nCausari can also watch the filesystem.\n\n```\nre watch\n```\n\nWhen files change, Causari records snapshots and diffs.\n\nThen it tries to connect the code that appeared on disk with the completions captured through the proxy.\n\nIf a completion generated a block of code, and seconds later that same code appears in a file, that is a causal fingerprint.\n\nThe provenance is no longer only a self-report.\n\nIt is observed from two independent streams:\n\n```\nLLM traffic + filesystem changes\n```\n\n`re hook`\n\nWhere an agent exposes lifecycle hooks, Causari can capture more directly.\n\nFor example:\n\n```\nre hook claude-code\n```\n\nThis allows native capture from the agent runtime when available.\n\nSo Causari can work in layers:\n\n```\nproxy capture\nfilesystem capture\nnative hook capture\n```\n\nThe more signals available, the more precise the provenance becomes.\n\nOnce actions are recorded, you can query the causal history.\n\nSome examples:\n\n```\nre why src/auth.ts:42\n```\n\nShow what produced a specific line.\n\n```\nre trace src/auth.ts:42\n```\n\nShow the upstream causal chain behind that line.\n\n```\nre impact <event-id>\n```\n\nShow the downstream blast radius of an agent action.\n\n```\nre lens src/auth.ts\n```\n\nRender a file with per-line provenance annotations.\n\n```\nre find \"JWT refactor\"\n```\n\nSearch prompts, messages, reasoning, and events.\n\n```\nre bisect --test \"npm test\"\n```\n\nFind which agent action broke the build.\n\n```\nre churn\n```\n\nMeasure how much AI-generated code survived versus got rewritten.\n\n```\nre report --open\n```\n\nGenerate a local report or dashboard.\n\nThis is the part I find most interesting.\n\nWith normal version control, the unit of analysis is usually the commit.\n\nWith AI agents, the more useful unit may be the **agent action**.\n\nA single commit may contain 30 agent decisions.\n\nCausari tries to make those decisions inspectable.\n\nAt small scale, this may feel like overkill.\n\nIf you ask an agent to write a small helper function, maybe you do not care about causal provenance.\n\nBut as soon as agents start making larger changes, the workflow changes.\n\nA test breaks after many AI-assisted edits.\n\nInstead of reading chat logs manually, you can ask which agent action introduced the break.\n\n```\nre bisect --test \"npm test\"\n```\n\nA reviewer sees a strange line.\n\nInstead of asking \"who wrote this?\", they can ask:\n\n```\nre why path/to/file.ts:120\n```\n\nAnd inspect the prompt and context behind it.\n\nBefore reverting an AI action, you can ask:\n\n```\nre impact <event-id>\n```\n\nBecause later changes may depend on that action.\n\nIf an agent writes a lot of code that gets rewritten shortly after, that matters.\n\nNot only because of cost.\n\nBecause it may reveal bad prompts, bad context, bad model choice, or bad workflow.\n\n```\nre churn\n```\n\nThis makes AI coding work measurable in a way that normal Git history does not.\n\nCausari is built as a local developer tool.\n\nThe ledger lives in your repo under:\n\n```\n.causari/\n```\n\nThe goal is not to send your code or prompts to a third-party dashboard.\n\nThe goal is to make the agent activity around your own codebase inspectable locally.\n\nCausari is written in Rust and uses content addressing for events.\n\nThe repository describes it as:\n\nintent-addressable code for AI agents\n\nThat phrase is important to me.\n\nBecause I do not think the future of AI coding is only \"generate more code faster\".\n\nI think the next problem is:\n\n```\nCan we understand, verify, replay, and debug what the agent did?\n```\n\nCausari also has an experimental skill layer.\n\nThe idea is that completed, verified work can be distilled into signed reusable units.\n\n```\nre skill distill\n```\n\nA skill can contain the task, the steps, the files changed, and the outcome.\n\nThen it can be exported:\n\n```\nre skill export <id>\n```\n\nAnd verified later:\n\n```\nre skill verify\n```\n\nThis is still early, but the idea is important:\n\nAgents should not repeat the same mistake forever.\n\nIf a repository already has a verified solution to a class of problem, the next agent should be able to recall that experience before acting.\n\nNot as vague memory.\n\nAs signed, local, inspectable provenance.\n\nImagine this prompt:\n\n```\nAdd JWT refresh logic that rotates tokens every 24 hours.\n```\n\nThe agent modifies `auth.py`\n\n.\n\nLater, you inspect a line:\n\n```\nre why auth.py:42\n```\n\nCausari can show that the line came from that prompt, which model produced it, and which event introduced it.\n\nThen you can ask:\n\n```\nre trace auth.py:42\n```\n\nTo see the upstream context.\n\nOr:\n\n```\nre impact <event-id>\n```\n\nTo see what later work depended on it.\n\nThat is the workflow I want:\n\n```\nnot only code review,\nbut intent review.\n```\n\nCausari is still young, and I would love feedback from developers who are using tools like:\n\nThe main questions I am trying to answer:\n\n`re proxy + re watch`\n\ncapture model practical enough for real developers?AI agents are starting to write and rewrite real software.\n\nThat means our tools need to evolve.\n\nGit gave developers a way to track changes.\n\nBut AI-generated code needs another layer:\n\n```\nintent\ncausality\nprovenance\nimpact\nreplay\n```\n\nThat is what I am trying to explore with Causari.\n\nIf this problem feels real to you, I would love your feedback.\n\nWhat would you want from a tool like this before trusting it in a real codebase?\n\nRepository: [https://github.com/croviatrust/causari](https://github.com/croviatrust/causari)\n\nWebsite: [https://causari.dev](https://causari.dev)", "url": "https://wpnews.pro/news/git-tells-you-what-changed-causari-tells-you-why", "canonical_source": "https://dev.to/croviatrust/git-tells-you-what-changed-causari-tells-you-why-24lo", "published_at": "2026-07-08 18:56:48+00:00", "updated_at": "2026-07-08 19:11:18.907071+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools", "ai-infrastructure", "large-language-models"], "entities": ["Causari", "Croviatrust", "Git", "OpenAI", "Anthropic"], "alternates": {"html": "https://wpnews.pro/news/git-tells-you-what-changed-causari-tells-you-why", "markdown": "https://wpnews.pro/news/git-tells-you-what-changed-causari-tells-you-why.md", "text": "https://wpnews.pro/news/git-tells-you-what-changed-causari-tells-you-why.txt", "jsonld": "https://wpnews.pro/news/git-tells-you-what-changed-causari-tells-you-why.jsonld"}}