1. Local CLI attribution
Tempo CLI installs post-commit and pre-push git hooks. On each commit it reads supported local AI session formats, matches files touched by the assistant with files in the commit, and writes a small attribution record.
Detection runs on the developer machine and works offline. Syncing the resulting metadata to Tempo cloud is optional.
- Claude Code, GitHub Copilot, and Codex session formats support file matching.
- The record can include tool, model, matched file paths, token usage, and session duration when present.
- Source content, diffs, prompts, and conversation transcripts are excluded.
2. Git forensics
For commits without CLI attribution, Tempo inspects explicit metadata such as Co-Authored-By trailers and recognizable AI-tool markers in commit or pull-request text.
These signals cover work created before CLI installation and repositories where local attribution is not enabled, but they are less complete than file matching.
3. Confidence and precedence
Local file matching is treated as high-confidence evidence. Exact vendor identity signals can also be high confidence; text mentions and process-level hints are generally weaker. When several tools match, Tempo retains the strongest available evidence.
- High: direct file match or explicit vendor identity.
- Medium: recognizable metadata or text pattern.
- Method: CLI attribution or git forensics is stored with the result.
4. From commits to pull requests and trends
A pull request is AI-assisted when at least one associated commit has an AI signal or the pull request itself contains a supported explicit signal. Daily repository, contributor, team, and organization aggregates are then calculated from those artifacts.
Known limitations
Attribution is evidence-based, so coverage changes with tool behavior and the metadata available. Squashed histories, removed trailers, unsupported session formats, or work copied between tools can reduce detection.
Tempo therefore reports detection method and confidence and avoids claiming that the complement of AI commit rate is definitively human-only work.
Evidence, confidence, and privacy matrix
Each detection retains enough provenance to explain why it exists. Stronger evidence takes precedence when the same commit contains several signals, while weaker methods remain useful for historical coverage.
| Evidence | Method | Typical confidence | Data sent to Tempo |
|---|---|---|---|
| Local session and changed-file match | Tempo CLI | High | Tool, method, matched paths, and optional usage metadata |
| Explicit vendor or co-author identity | Git forensics | High | Identity signal and attribution result |
| Recognizable commit or PR marker | Git forensics | Medium | Matched marker and attribution result |
| No supported positive signal | None | Unclassified | No claim that the work was manual |
Design attribution to be audited
Engineering leaders should be able to distinguish a direct local match from a text pattern and understand how coverage changed after a CLI rollout. Tempo keeps the tool, method, confidence, and relevant evidence metadata attached to the result.
When tool formats change, the methodology can evolve without silently rewriting the meaning of historical measurements. Teams can segment by method and avoid presenting an increase in coverage as an increase in adoption.
Frequently asked questions
Can AI-assisted coding be detected reliably from Git alone?
Git can provide explicit positive signals, but it cannot prove that an unmarked commit was written without AI. Local session evidence improves coverage because it can match assistant-touched files before that context disappears from repository history.
What happens when a commit matches more than one tool?
Tempo retains the strongest supported evidence and its method. The underlying rules favor direct file-level or explicit identity signals over weaker text patterns.
Does squashing affect AI attribution?
It can reduce the git evidence available after the fact. Local attribution recorded before push is more resilient because the result is created while commit and session context are still present.
Why does Tempo report unclassified work instead of manual work?
Absence of evidence is not evidence of absence. Unsupported tools, deleted metadata, squashed history, or missing local coverage can all produce an undetected commit.
Sources and further reading
- Git commit trailers documentationThe native Git mechanism used by tools to attach structured trailers such as co-author metadata.
- Tempo CLIHow local file-level attribution is installed and recorded on developer machines.