{"slug": "pi-git-ai-trace-code-commits-back-to-agent-sessions", "title": "pi: git-ai: trace code commits back to agent sessions", "summary": "Git AI version 1.7.2 records AI agent checkpoints in Git notes, enabling developers to trace code commits back to specific agent sessions without altering commit messages or repository files. The tool, integrated with Pi via an extension, captures session IDs, model names, and touched files, as demonstrated by Thiago Perrotta, who shows `git ai blame` output attributing a line to a Pi session with model gpt-5.6-sol.", "body_md": "♠ [Git AI](https://github.com/git-ai-project/git-ai) records agent checkpoints in\n[Git notes](https://git-scm.com/docs/git-notes)<sup>[1](https://perrotta.dev/2026/09/pi-git-ai-trace-code-commits-back-to-agent-sessions/#fn:1)</sup>, without changing commit\nmessages or repository files.\n\nIn order to integrate it with [Pi](https://pi.dev/) we use an extension,\nbecause Git AI must observe file and Bash tool calls:\n\n``` js\nconst GIT_AI_BIN = join(homedir(), '.git-ai', 'bin', 'git-ai');\n\nconst child = spawn(GIT_AI_BIN, ['checkpoint', 'pi', '--hook-input', 'stdin'], {\n  stdio: ['pipe', 'ignore', 'ignore'],\n});\n```\n\nThe extension listens before and after each mutating call. It sends Pi session\nID, model, tool, working directory, and touched files to `git-ai checkpoint`.\n\nIn a shell script in my dotfiles, I configured `git-ai`:\n\n```\n# Git AI daemon receives Git Trace2 events through per-user socket.\nif command -v git-ai >/dev/null 2>&1; then\n  export GIT_TRACE2_EVENT=\"af_unix:stream:${GIT_AI_DAEMON_TRACE_SOCKET:-$HOME/.git-ai/internal/daemon/trace2.sock}\"\n  export GIT_TRACE2_EVENT_NESTING=0\nfi\n```\n\nAfter restarting Pi, code attribution starts to appear alongside normal `git blame` calls<sup>[2](https://perrotta.dev/2026/09/pi-git-ai-trace-code-commits-back-to-agent-sessions/#fn:2)</sup>:\n\n```\n% git ai blame src/main.rs\n442dfde2 (pi 2026-09-05 14:29:59 +0200 1) fn main() { println!(\"pi\"); }\n```\n\nThe commit note contains the useful attribution / provenance snippet:\n\n```\n\"sessions\": {\n  \"s_82565459b433c5\": {\n    \"agent_id\": {\n      \"tool\": \"pi\",\n      \"id\": \"pi-extension-test\",\n      \"model\": \"gpt-5.6-sol\"\n    }\n  }\n}\n```\n\nNow a suspicious line can lead from Git history to the exact Pi session. The\nsession ID can then subsequently be searched with [`fr`](https://perrotta.dev/2026/09/agentsview-vs-fast-resume/) or resumed in Pi.\n\nOther useful commands with real examples:\n\n```\n% git ai show HEAD\nSTYLE.md\n  s_f2908643b7ce0d::t_739223c8b9befd 12,29,48\n---\n{\n  \"schema_version\": \"authorship/3.0.0\",\n  \"git_ai_version\": \"1.7.2\",\n  \"base_commit_sha\": \"d225f5e635bbf5494574591580af8abf93da9480\",\n  \"prompts\": {},\n  \"sessions\": {\n    \"s_f2908643b7ce0d\": {\n      \"agent_id\": {\n        \"tool\": \"pi\",\n        \"id\": \"01a07acd-e9c7-759f-84b4-107f9ebc2556\",\n        \"model\": \"gpt-5.6-sol\"\n      },\n      \"human_author\": \"Thiago Perrotta <{redacted_email}>\"\n    }\n  }\n}\n% git log --show-notes=ai\ncommit d225f5e635bbf5494574591580af8abf93da9480 (HEAD -> master)\nAuthor: Thiago Perrotta <{redacted_email}>\nDate:   Mon Sep 7 09:40:01 2026 +0200\n\n    docs: require problem statement questions\n\nNotes (ai):\n    STYLE.md\n      s_f2908643b7ce0d::t_739223c8b9befd 12,29,48\n    ---\n    {\n      \"schema_version\": \"authorship/3.0.0\",\n      \"git_ai_version\": \"1.7.2\",\n      \"base_commit_sha\": \"d225f5e635bbf5494574591580af8abf93da9480\",\n      \"prompts\": {},\n      \"sessions\": {\n        \"s_f2908643b7ce0d\": {\n          \"agent_id\": {\n            \"tool\": \"pi\",\n            \"id\": \"01a07acd-e9c7-759f-84b4-107f9ebc2556\",\n            \"model\": \"gpt-5.6-sol\"\n          },\n          \"human_author\": \"Thiago Perrotta <{redacted_email}>\"\n        }\n      }\n    }\n```\n\n∎\n\n— § —\n\nReply via [email](<mailto:serendipity@perrotta.dev?subject=Reply to: pi: git-ai: trace code commits back to agent sessions>)", "url": "https://wpnews.pro/news/pi-git-ai-trace-code-commits-back-to-agent-sessions", "canonical_source": "https://perrotta.dev/2026/09/pi-git-ai-trace-code-commits-back-to-agent-sessions/", "published_at": "2026-09-07 07:26:59+00:00", "updated_at": "2026-09-07 07:58:00.353054+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["Git AI", "Pi", "Thiago Perrotta", "gpt-5.6-sol"], "alternates": {"html": "https://wpnews.pro/news/pi-git-ai-trace-code-commits-back-to-agent-sessions", "markdown": "https://wpnews.pro/news/pi-git-ai-trace-code-commits-back-to-agent-sessions.md", "text": "https://wpnews.pro/news/pi-git-ai-trace-code-commits-back-to-agent-sessions.txt", "jsonld": "https://wpnews.pro/news/pi-git-ai-trace-code-commits-back-to-agent-sessions.jsonld"}}