Save your prompts and keep track of code generated by AI.
curl -sSL https://gitai.run/install.sh | bash
git blame src/log_fmt_authorship.rs
git-ai.demo-small.audio.on.mov
git-ai
is implimented as a git proxy. It passes commands, args and flags to your git
binary. You and your IDEs won't notice the difference, but all your code will be annotated with AI Authorship.
curl -sSL https://gitai.run/install.sh | bash
Recommended: add an
alias git=git-ai
to your shell config
Alternative (more flaky): update your IDEs and SCM GUI tool's git paths to
bin/git-ai
and favorgit-ai
overgit
when running commmands you manually.
Supported:
[x] Cursor via Extension. Source and documentation are here
Help needed:
[ ] Sourcegraph Cody + Amp
[ ] OpenAI Codex
[ ] Windsurf
[ ] RovoDev CLI ...your tool
Want to add yours? All PRs welcome! Add documentation or plugin code to
/agent-support/{tool-name}.md
Manually:
If you want to manually mark code as written by you or your agent.
Before submitting your prompt run checkpoint to attribute any new working copy changes to yourself.
git-ai checkpoint
After the AI has applied its changes, run checkpoint with the name of the agent you're using. This will apply the latest (generated) working copy changes to the agent.
git-ai checkpoint --author "Claude Code"
git blame
attributes all code to the commit's author, even when much of it is AI-generated.
⭐️Git-native - enhanced authorship is stored in Git and linked to commit hashes.
🫡Simple and explicit - no file system monitors, keyloggers or batch-write heuristics. Supported Agents call git-ai checkpoint --author "Claude Code" --model claude-4-sonnet
after writing code.
🤞Emerging Standard - developers have tool choice, and they're likely using a mix of Claude Code, Codex, Cursor, etc.
⚡️Fast + Cross Platform - implemented in Rust, as fast as git status
, and built on libgit2
git-ai
uses checkpoints to establish authorship of specific lines of code. Agents call git-ai checkpoint
before they write to the file system to mark any previous edits as yours. After they write to the file system they call checkpoint --author 'Claude Code' --model 'claude-4-sonnet'
to mark their contribution as AI-generated. These checkpoints work similarly to how IDEs handle local history and they do not leave your machine.
When you commit code, the base commit's checkpoints are compacted into a much smaller authorship log that is linked to your commit.
Authorship logs, attached to commits, pushed to the refs/ai/authorship
as blob objects.
- Authorship logs MUST be named
refs/ai/authorship/{commit-sha}
. MUST be the full SHA - Authorship logs SHOULD be saved for every commit, but implementations MUST not fail if they are not provided.
- Authorship logs MUST be a valid JSON object with the following properties:
schema_version
MUST use semantic versioning. Options:authorship/0.0.1
files
MUST be a map of git file names ->authors[]
author
MUST be a string. Agents SHOULD use their full name. Human developers SHOULD use theirgit.config.name
lines
MUST be an array of added lines. Items MUST be an integer or a range tuple[start-int, end-int]
. Range MUST be inclusive.agent_metadata
- SHOULD be
null
for humans - SHOULD be an object for agents
- MUST have
model
(a string), that SHOULD be the model's name as it is provided to the API (ieclaude-4-sonnet
, notClaude 4, Sonnet
). - MAY have any other properties of any other type.
- MUST have
- SHOULD be
{
"schema_version": "authorship/0.0.1",
"files": {
"src/main.rs": {
"file": "src/main.rs",
"authors": [
{
"author": "Claude Code",
"lines": [12, [91, 101]],
"agent_metadata": {
"model": "claude-4-sonnet"
}
},
{
"author": "Aidan Cunniffe",
"lines": [57],
"agent_metadata": null
}
]
}
}
}
Coming next: Prompt saving that maintains pointers to specific lines of code, across files.
Adding git-ai
support to a coding agent is easy. You just have to call git-ai checkpoint
once before writing to the file system and once immediately after your writes have completed. The checkpoint
command has similar performance to git status
and will not noticeably slow down your Agent's performance (we're talking ~100ms).
Requirements:
- Agents SHOULD check if
git-ai
is installed when they start and only try to log checkpoints if the user has it installed. - Agents SHOULD write checkpoints to every git repo if the user has git-ai installed, no opt-in needed.
- Agents MUST only call
git-ai checkpoint
command from within a git repo. At the root or any sub directory will work. - Agents MUST call
git-ai checkpoint
and wait for the command to finish before writing to the file system. - Agents MUST call
git-ai checkpoint
immediately after writing generated code to the file system. - Agents SHOULD not try to handle errors from the checkpoint command. Log them to the user to encourage them to fix or uninstall tool if it persists.
If you want to call git-ai checkpoint
using a packaged rust binary and bindings, open an issue with runtime, language, and other details so we can provide the exact bindings you need. We'll provide a function like this that will run checkpoint without the CLI overhead.
Note: We suggest you adopt the CLI approach first, help make this a standard by providing great feedback, and then set up the deeper integration.
pub fn checkpoint_internal(
repo_path: &str,
author: &str,
model: Option<&str>,
human_author: Option<&str>,
) -> Result<(usize, usize, usize), GitAiError>
- Authorship logs will not survive a rebase. Possible, but requires merging authorship logs in a
post-rewrite
hook.
git clone https://github.com/acunniffe/git-ai.git
cd git-ai
cargo build
cargo test
MIT