Records what an AI agent did in a repo (prompt, model, files) and answers why a line exists.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
AI-written code has no author. It has causes. Causari records them.
How many lines from AI-tagged commits are still alive in your repo? One command, any git repo, no setup. A count, not a grade.
causari.dev Β Β·Β Weekly Survival Report Β Β·Β Method Β Β·Β Manifesto Β Β·Β Roadmap Β Β·Β Releases
Everyone argues about how much code AI writes. Nobody can check the numbers.
re audit reads plain git history β Co-Authored-By trailers, bot authors,
agent markers β finds the commits that carry machine-readable AI authorship,
and asks git blame how many of their lines are still at HEAD. No model, no
estimate, no survey. Anyone re-runs it and gets the same bytes.
--json the exact bytes behind any published row--summary Markdown for CI; --badge / --card one-colour SVGs--save append a snapshot to track your own trendCompared with what: since method v3 every audit puts the repository's own untagged lines next to the AI-tagged ones, by line age, and states the age-matched gap: AI-tagged survival against untagged survival of the same age in the same repository. It also names the oldest line still at HEAD and how many commits predate it: a repository that was cleared or rewritten shows there, and its ratio is read accordingly.
What it cannot see: code from inline completions (Copilot, Cursor Tab,
Windsurf, β¦) leaves no git trace and counts as human, so it is in the
untagged baseline. Commits without a trailer are UNKNOWN. A formatter pass
or a moved function counts as a death under method v1. One bulk commit can
dominate a line-weighted ratio; ratios under 5 AI-tagged commits are
flagged. All of this is written out at
causari.dev/method, with how to contest a number.
The questions people ask, answered with the command and the limit: causari.dev/faq; how this differs from git blame, vendor dashboards and churn reports: causari.dev/compare.
The weekly Survival Report runs
re audit on up to 100 open-source repositories: a hand-picked list plus the
most-starred public repositories (at least 100 stars) where GitHub commit search
finds at least five commits carrying the same AI authorship metadata, selected
every week, the day before the report, by
scripts/survival_discover.py under a rule
stated on the method page; rows stay
alphabetical, and one line in .github/survival-optout.txt removes a repository.
The Action
downloads the prebuilt Linux binary (a few seconds), runs re audit --summary,
writes it to the job summary and posts one sticky comment per PR. No cloud,
no account. A live example.
The audit works on any history. If you also want to know why a line exists
β the prompt, the model, the files the agent read β Causari records agent
actions as they happen into a local, append-only ledger (.causari/,
gitignored), with a snapshot of the tree before and after each one.
Claims about "any agent" are cheap. This table is derived from the code and is kept current; if a cell is wrong, open an issue.
| Agent | Prompt + file, exact | Model, tokens, cost | How |
|---|---|---|---|
| Claude Code | yes, via lifecycle hooks | not yet (edits travel as tool_use, which the proxy does not join to files yet) | re hook claude-code |
| Aider | heuristic join, measured | yes | OPENAI_API_BASE / ANTHROPIC_API_BASE β re proxy + re watch |
| Codex CLI, OpenAI Agents SDK | not yet (Responses API output not parsed) | yes | OPENAI_BASE_URL β re proxy |
| Cursor | yes, via native hooks | model yes (the hook names it); tokens and cost no (Cursor's model calls do not pass through re proxy) | re hook cursor |
| Windsurf, Copilot | only what the agent self-reports via MCP | no | re mcp |
| Cline / Roo, custom scripts, curl | heuristic join when the completion carries the code as text | yes | base URL β re proxy + re watch |
Two evidence classes, and every output says which one it is:
re record): the agent stated what it did. Exact
prompt and path. If a human edits a file between two hook events, the hook
snapshot absorbs that edit into the next agent event β a known limit being
fixed in Phase 1.examples/real-session/
gives measured numbers: 100 % on a clean write, 50 % after a formatter pass,
wrong per-line attribution when two prompts touch one file in the same
window.Everything stays on your machine. re proxy and the hooks store prompts,
completions and commands in clear under .causari/ (gitignored); credentials
in recognisable formats β sk-β¦ keys, GitHub/GitLab/Slack/npm/PyPI/Hugging
Face tokens, AWS and Google keys, bearer values, JWTs, PEM private keys β are
replaced by [redacted:<kind>] before writing, and the record says how many.
Anything else you paste is kept as typed. Snapshots store every non-ignored
file (.env*, node_modules, target, dist, build, .git and a few
others are excluded by default). Treat .causari/ as sensitive. What is
stored, what is not, and what the tool does and does not defend against:
SECURITY.md and docs/threat-model.md.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/causari)<a href="https://allmcps.com/mcp/causari"><img src="https://allmcps.com/api/badge/causari?style=directory" alt="Causari on AllMCPs" /></a>