Tempo
Methodology

AI coding detection methodology

Tempo records AI attribution from local CLI evidence and explicit Git metadata. Repositories with Entire Checkpoints also provide session context through a separate ingestion path.

Explore the demo
Local-first file matching
Explicit git and PR signals
Method and confidence retained
Separate data boundaries by source
ExampleLocal attribution pipeline
  1. Local evidence
    AI session records and changed file paths
  2. File matching
    Match session paths to committed paths
  3. Attribution
    Record tool, method and confidence
  4. Aggregation
    Combine commit evidence into PR metrics
The CLI matches session evidence with changed files locally. Optional sync sends attribution metadata, with the detection method and confidence retained.
01

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 attribution metadata is optional. On macOS and Linux, a process check is a medium-confidence fallback for tools without a file match; a running process does not prove it contributed to the commit.

  • File matching supports Claude Code JSONL, Copilot Agent chat-session JSON, Codex rollout JSONL, Cursor Agent/Composer SQLite data, and Aider chat-history files.
  • Cursor file matching requires the sqlite3 command-line tool to read its local session database.
  • The record can include tool, model, matched file paths, token usage, and session duration when present.
  • The CLI upload excludes source content, diffs, prompts, and conversation transcripts. This boundary does not apply to Entire Checkpoints ingestion.
02

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.

03

3. Entire Checkpoints session context

For repositories containing an Entire Checkpoints branch, Tempo reads session metadata, prompts, context, and compact transcripts through the GitHub API. This session dataset is separate from the attribution-only CLI payload.

Prompt, context, and compact transcript bodies are stored within size limits and may contain code included in the conversation. The full event stream is retained only as Git blob references and byte counts; its body is not downloaded.

Session metrics use the agent and token usage present in the metadata. A tool name such as Claude Code is not a model identifier; model-level reporting requires a source that supplies the model.

04

4. Confidence and precedence

CLI file matching is high confidence; CLI process detection, co-author trailers, and supported message patterns are medium confidence. Backend Git forensics can assign high confidence to explicit vendor identities. Accepted CLI records retain detections for each tool and select the strongest evidence for the primary commit attribution.

  • High: CLI file matching or an explicit vendor identity recognized by backend Git forensics.
  • Medium: CLI process detection, CLI co-author trailers or message patterns, and weaker backend text markers.
  • At equal confidence, the CLI submission endpoint prefers file-match evidence over process evidence, then co-author trailers.
05

5. 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.

06

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.

07

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.

How Tempo treats the main attribution signals.
EvidenceMethodTypical confidenceData sent to Tempo
Local session and changed-file matchTempo CLIHighTool, method, matched paths, and optional usage metadata
Running tool process when no file match existsTempo CLIMediumTool and process-detection method
Supported local co-author or message patternTempo CLIMediumTool, confidence, and detection method
Explicit vendor or co-author identityGit forensicsHighIdentity signal and attribution result
Recognizable commit or PR markerGit forensicsMediumMatched marker and attribution result
No supported positive signalNoneUnclassifiedNo claim that the work was manual
08

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.

FAQ

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?

The CLI payload can contain several detections. When a record is accepted, Tempo retains its per-tool detections and selects a primary result by confidence, preferring file matching, then process evidence, then co-author trailers when confidence is equal.

Does squashing affect AI attribution?

Squashing or rewriting commits can remove trailers and change commit identifiers. Local attribution is attached to a commit SHA, so a rewritten commit needs its own attribution record.

Does an undetected commit prove that the work was manual?

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 documentation
    The native Git mechanism used by tools to attach structured trailers such as co-author metadata.
  • Tempo CLI
    Installation, local attribution, and the detection methods used by Tempo CLI.
Continue exploring

Related guides