The flight recorder for AI coding agents.

Several agents commit to your repo. Retrace records which agent did what, on whose instruction — in one tamper-evident ledger you can verify without trusting anyone, including us.

Start Team — $49/month See it verify npx @retrace-dev/cli doctor

A true story from our own ledger · 28 August 2026

The commit that lied about its author

Five AI agents share one checkout of this repo. At 20:37, Claude Code finishes 296 lines of timeline UI and leaves them uncommitted, waiting for review.

At 20:54, Codex gets a one-word instruction — "Re-integrate" — and does the obvious thing: it commits whatever is in the working tree. Commit bfe87c3 lands on main. Its trailers say codex · gpt-5. From here on, every tool that reads git believes Codex wrote the UI.

git blame can't tell you otherwise. The commit message can't either — the agent that pushed wrote it. In a team without a ledger, this is where the story ends and the wrong name sticks.

With Retrace it takes one query. Claude's edit was already sealed 17 minutes earlier under Claude's own server-issued identity, chained to the human instruction that caused it. Codex's commit sits after it with a different root. Fifteen minutes later an amendment and an empty correcting commit put the truth in both git and the ledger — without rewriting history. The record shows the mistake and the correction. That's the point.

Don't take our word for it — this ledger is public:
Browse the live ledger (read-only, every event since #0) · printable provenance report · signed export — verify it yourself: npx -y --package=@retrace-dev/cli retrace-export verify retrace.json --pubkey https://retrace-api.slcwitit.workers.dev/.well-known/retrace-pubkey

project retrace · chain intact2026-08-28 · local time
jordansboxing@… instructed · 20:28 · #217
"Let's improve overall functionality of UI. Sometimes you click a highlighted section, button etc. that is clickable but…" evt_0423c151 — the human root.
claude-code edited · 20:37 · #231 · pinned identity
retrace.html, ui-detail.test.ts, ui-html.ts (+296 −45) · caused_by evt_0423c151 · evt_4231942b
codex committed · 20:54 · #243 · git hook
bfe87c3 "Make Retrace UI interactions reliable" · trailers name codex — but the files match Claude's edit above.
claude-code amended · 21:09 · #258
bfe87c3 was authored by claude-code, committed by codex. Correction commit c375ed4. History kept.

What it records

Who. What. Why. Sealed by the server, not the agent.

Every agent and every tool writes to one chain. Each event is hashed onto the previous one; the server stamps who sealed it; the agent can't claim to be another agent — or to be you.

WHO

One identity per agent

Claude Code, Codex, Gemini CLI, Grok and Copilot each hold their own pinned credential. Humans appear as themselves; when an agent relays your instruction, the ledger says so.

WHY

Every action has a root

caused_by links each agent action back to the human instruction that started it. A link that can't be verified is flagged, never silently dropped.

WHAT · WHEN · WHERE

Commits, PRs, docs

Git commits via a post-commit hook, GitHub pull requests via HMAC-verified webhook, Google Drive edits via forwarder — files, hashes, session, IDE, and both timestamps.

Works with the agent you already use

Claude CodeCodexGemini CLIGrokGitHub CopilotGitGitHubGoogle DriveCursor — ask usWindsurf — ask us

Prove it

Verify offline. It tells you when it can't.

Export a signed bundle and check it anywhere — no server, no account. Without a trusted key the verifier refuses to say "valid": a bundle that only proves it agrees with itself is self-attested, and the tool says so.

$ retrace-export verify retrace.json
NOT VALID — signature: self_attested (kid 51f6ac4c…, key embedded in bundle — NOT a trusted key); events intact: true; links: true; coverage: complete — 998 of 998 events
pass the issuer's public key (--pubkey, RETRACE_PUBKEY, or RETRACE_URL for its /.well-known/retrace-pubkey)
$ RETRACE_URL=https://retrace-api.example.workers.dev retrace-export verify retrace.json --checkpoint .retrace/checkpoints.jsonl
VALID — signature: valid (kid 51f6ac4c…, trusted key from …/.well-known/retrace-pubkey); events intact: true; links: true; coverage: complete — 998 of 998 events
checkpoint #880 (2026-08-30): EXTENDS — bundle contains the checkpointed head unchanged and continues to #997
OMISSION

Nothing left out

A full export must carry every event it claims, contiguous from #0 to the signed head. A dropped tail or a missing middle is NOT VALID, with the missing sequence numbers named.

CHECKPOINTS

The head, witnessed

A signed head checkpoint is committed to git daily by a bot and merged by a human. A later export that no longer contains that head is a conflict, whatever date it claims.

GATE

Complete, or the build fails

retrace doctor --gate runs in CI. A commit with no provenance behind it doesn't merge. Completeness is enforced, not hoped for.

What it can't do

Tamper-evident, not tamper-proof. Here's the line.

We'd rather you read this here than discover it in a review. Everything on the left is proven by code on main; everything on the right is a claim we don't make.

What Retrace proves

  • Any edit to a sealed event, and any removal of events after a checkpoint, is detectable offline.
  • Which server-issued identity sealed each event. Agents cannot impersonate each other.
  • That an agent action is linked to a specific human instruction — or that it isn't.
  • That a full export contains everything the server claimed at export time.

What it doesn't

  • It can't stop an operator with database access from rewriting history before a checkpoint — it can only show that the head moved.
  • The model name an agent reports is what the agent said. We record it; we don't verify it.
  • Line-level attribution ("this function was written by GPT") is not a feature.
  • It records what producers log. The CI gate makes commits complete; keystrokes are never captured.

A security assessment on 30 August 2026 found two high-severity gaps in exactly this verification path. Both were closed the same day — read the full report, every finding with file, line, and the commit that fixed it.

Pricing

Free to run yourself. One flat price to have it run for you.

Self-hosted

$0
  • MIT-licensed core, CLI and Cloudflare Worker
  • Unlimited projects, agents, events
  • Signed exports, offline verify, CI gate
  • Your Cloudflare account, your keys
Read the setup guide

Team

$49 / month, flat
  • Hosted ledger with daily witnessed checkpoints
  • Up to 10 agent identities, unlimited humans
  • Read-only share links and printable provenance reports for clients
  • Your hosted ledger is provisioned within one business day of checkout; setup help included
Start Team — $49/month

Secure checkout by Stripe. Cancel any time; your ledger export is yours either way.

Team is an early price for the first ten teams. It will go up; yours won't. After checkout you get an email with your ledger URL, your agents' credentials, and a 30-minute setup slot if you want one.