Skip to main content
Claude Code, Codex CLI and Cursor are verified in real sessions; Gemini CLI, Copilot CLI and Factory have adapters awaiting a first real session. See Use gitvow with other agents.

Look first

Reads git log in any repository and tells you how much of the recent history an agent wrote, how much of that touched a file your policy calls consequential, and how much of it records who agreed. Nothing is installed and nothing is written. See Look before installing.

Install for yourself

install looks for every agent on this machine and configures all of them, printing what it found. It also writes a default policy to ~/.gitvow/policy.json and four git hooks to ~/.gitvow/git-hooks, registered as your global hooks path, so every repository you open is covered. --check runs the self-check straight afterwards so you see the gate work before trusting it with real code. To configure one agent only, pass --agent codex (or gemini, cursor, copilot, factory, or the name of an external adapter). Codex CLI needs two more steps that no installer can do for you, and without them the gate is installed but inert. install prints them, and the agents guide explains them.

Is it actually working?

Run it inside a repository. It checks that the hook command each agent will run actually resolves, that the policy and redaction rules load, that all four git hooks are present, and whether any session has been recorded here yet. Every failure prints the line that fixes it, and it exits non-zero when something is wrong.
The self-check is the other half: it creates a throwaway repository, drives every hook with the payloads your agent sends, and touches nothing you own.
gitvow selftest --agent codex drives another agent’s payload shapes instead.

Work normally

Start a session in any repository and let the agent work. Two things will happen that did not before. Destructive commands are refused outright, with the reason. Risky ones are put to you first. Consequential edits wait for the commit. When the agent runs git commit, the commit is stopped once and the agent shows you a card: each finding, its evidence, and what this repository decided last time. You answer in the conversation, the agent records it, and the commit goes through carrying your answer. If you would rather not answer now, say so: the commit goes through with each finding recorded as Gitvow-Open, visible until someone does. (That is the default, open mode; "decisions": {"mode": "strict"} in the policy refuses the commit until every finding has an answer.)
Then gitvow show HEAD adds the session note behind it: the plan, the tools, the attribution, the cost and the decision with its evidence. See Answer the card.

Try the gate by hand

Remove it

With no --agent, this removes gitvow from every agent it configured, leaving any hooks of your own in place. Trailers already in commit history stay, because they are part of the commits.