Attribution that survives review

Counting every line a model ever emitted overstates AI authorship badly. What matters is what is still in the file. PromptWake indexes the lines each interaction added and matches them against the file on disk, so the number reflects code that actually shipped.
Book a demo

Matched on content, not line numbers

Editing tools emit replacement blocks rather than line positions, so there is no reliable line arithmetic to replay. Attribution matches the text itself, using adjacency to break ties when the same text appears in more than one interaction.

  • Newest interaction wins an ambiguous match
  • Adjacent lines keep their neighbour's source
  • Trivial lines inherit rather than match alone

Three categories, kept apart

Lines resolve to AI-authored, human-authored or unknown. Unknown covers code that predates the recorder and matches nobody can make with confidence. It is reported as its own number and never rounded into the human column.

  • AI-authored
  • Human-authored
  • Unknown

Manual edits are not AI edits

The project watcher also captures hand edits. Those explain a line but they are not a prompt, so they are excluded from the AI share. Without that separation the measurement inflates sharply — in real data a file that looked sixty-five percent AI was eight.

How you ask

From the command line

Ask a file directly and get its AI share, the prompts behind it and the tools involved.

Line by line

A per-line view marks each line with its source, so a reviewer can see exactly where an answer came from.

Across a commit

Link a commit's changed lines to captured interactions and get the AI share for that change alone.

Where attribution stops

Content matching has limits and the product states them rather than hiding them. Code written before the recorder was installed cannot be attributed. Heavily reformatted code may no longer match the text a model produced. A line that exists in several interactions is resolved by adjacency and recency, which is a judgement rather than a proof. Every one of these ends up in the unknown column, and the reports carry the definition alongside the number.

From the people already running it

Common questions

Does this need git?

No. Capture is independent of your commits, which is how work in progress and abandoned branches get recorded too. Commit linking is an addition on top, not a requirement underneath.

What if two prompts produced the same line?

Adjacency decides first: if the previous line's source is among the candidates, that source wins. Otherwise the most recent interaction wins. Both rules are applied the same way every time, and the report says so.

Does reformatting break attribution?

It can. A formatter that rewrites whitespace or wraps lines changes the text being matched, and those lines move to unknown. That is the honest outcome — the alternative is a number that quietly stops meaning anything.

Point it at a repository you already worry about.

The interesting number is rarely the AI share. It is how much of your codebase nobody can account for at all.