
TL;DR
repowise reads the markers agents leave in git and labels every commit agent, human-attested or unknown. Unknown is never counted as human. Any AI share is the agent fraction of covered commits, shown with its coverage and withheld when coverage is below 30 percent. It needs no IDE plugins and works on the history you already have.
Definition
Agent provenance is repowise labelling each commit agent, human-attested or unknown from evidence the repository carries: bot identities, trailers, footers, git-ai notes and Agent Trace files. Shares are computed over covered commits only and always shown with their coverage, so missing evidence is never reported as human work.
Why does agent provenance matter?
Agents now write a real part of most codebases, and the history rarely says which part. A percentage with nothing behind it is a guess: most commits carry no marker at all, and counting every unmarked commit as human turns missing evidence into a claim.
- Which commits an agent wrote is a fact about the code, worth recording where it can be read.
- How much of the history carries a known source decides whether any share means anything.
- A record of the codebase must never become a score for the people working in it.
Provenance is one part of a wider practice. The AI code governance guide covers the rest, from review and ownership to a copy-paste AI coding policy, and its chapter on recording which agent wrote each change goes deeper on the method.
How does it work?
repowise treats provenance as evidence with a coverage, not a number to display. The mechanism is deterministic end to end, computed from the git log you already have.
1. Read the markers. With no configuration, indexing reads public markers from local git history. No network calls, no model, no prompts.
| Marker | Example |
|---|---|
| Bot author or committer | copilot-swe-agent[bot], cursoragent@cursor.com |
| Message footer | Generated with Claude Code, the aider (aider) author suffix |
| Trailers | Co-authored-by: naming an agent service identity, Assisted-by:, Generated-by: |
| git-ai notes | Authorship notes on refs/notes/ai |
| Agent Trace | .agent-trace/traces.jsonl records committed to the repository |
2. Label every commit.
| Label | Meaning |
|---|---|
agent | A marker or a captured edit ties the commit to an agent |
human_attested | An explicit human record, such as a git-ai note naming only human authors |
unknown | No marker either way. Unknown is never counted as human |
3. Report with coverage. Coverage is the fraction of commits with a known source. The AI share is the agent fraction of covered commits, always shown beside its coverage. Below 30 percent coverage the share is withheld and only the counts are shown.
This is a record about files and commits, not a per-developer ledger. It reads commits; it does not watch people.
Where you read it
- In the dashboard: the commits page labels each commit, filters by authorship and shows a 12-month trend with its coverage.
- In your AI agent:
get_contextfile cards carry the file's commits by source and their coverage, beside health and ownership. - In the open-source CLI:
repowise attribution statusprints commits by label with coverage, and what your settings capture.
Raising coverage
Public markers only reach commits that carry them. With the open-source CLI, for the agents you use, edit-time capture records which lines an agent wrote as it writes them, and transcript backfill binds past commits from the transcripts those agents keep locally. Both are off until the repository and the user turn them on, store line hashes rather than prompts or code, and leave an unmatched commit unknown.
Walkthrough: from commit to provenance
Step 1: Index your repos. Index a repository to build the graph and git history. No IDE plugins.

Step 2: Open the commits. Each commit carries its label, and the trend shows agent, human-attested and unknown per month with the coverage beside it.
Step 3: Read a file. The file card shows its commits by source and coverage next to its health and owner. A share appears only above the coverage floor.
Step 4: Raise coverage where it matters. With the open-source CLI, turn on capture or backfill for the agents your team uses, so new commits carry a known source.
For your role
How each role uses this feature
- Engineering leadersRead which commits agents wrote across a repository, with the coverage that says how much of the history is known. A share is shown only when enough of the history carries a source.Read
- DevelopersBefore you extend a file, get_context shows its commits by source and their coverage beside its health and owner. Unknown commits stay unknown, so the card never overstates what is known.Read