Your agents write the code. Trail keeps the conversation that wrote it: the prompt, the reasoning, the logs. Linked to every commit, one command away from any line.
$ trail why app/webhooks.py:9The problem
More of your code is written by agents every week. The reasoning behind it, the dead ends, the logs it read and the runs it compared, lives in a chat window that is gone by Friday. Six months later git blame points at a commit that says “fix webhook”, and nobody remembers why.
with db.transaction():if not db.processed_events…return # already handledcapture(order.payment_intent)The solution
Trail links each commit to the agent sessions that produced it, plus the logs and artifacts you choose, and stores them as one folder tree per repo.
Like always. From your terminal, or the agent commits for you.
A git hook finds the Claude Code or Codex session that edited those files.
Conversation, diff, logs and artifacts go to your store, one folder per repo.

Two git hooks find the session that edited the staged files and link it when you commit.
Blame to commit to session to the exact prompt, reasoning and edit that wrote the line.
Training logs, metrics, CI output, reports. Whatever you list in .trail.yaml is kept with the commit.
Maya on Claude Code, Leo on Codex, Sam committing by hand. One history, sessions included.
Repos as folders, commits with their sessions and diffs, every conversation one click away.
trail initWrites .trail.yaml and installs two git hooks. That is the whole setup.
trail why file:lineBlame, then the commit, then the session: the prompt, the reasoning and the edit.
trail logCommits in the Trail, with the sessions behind each one.
trail grep patternOne search across every transcript, log and artifact.
trail show shaEverything stored for a commit or a session.
trail uiThis dashboard, over your own store.
No. Commit like you always do. The hooks find the Claude Code or Codex session that edited the staged files and link it to the commit.
Wherever you point it: Supabase Storage, any S3-compatible bucket, or a local folder. It is a plain folder tree you can grep.
Two trailer lines: Trail-Session with the session id and Trail-Link to the dashboard. The transcript stays in your store, not in git.
Claude Code and Codex today. Each harness is a small parser, so adding another is a short change.
Three demo repos, three people, Claude Code and Codex sessions.