# Wirevow > Provenance, a policy gate and an agreed record for AI-agent coding sessions, stored in the git you already have. - [gitvow](https://docs.wirevow.dev/gitvow/index.md): No runtime dependencies. Standard-library Python and git. One command to install, one to remove - [Quick start](https://docs.wirevow.dev/gitvow/quickstart.md): Requirements: git, Python 3.9 or newer, Claude Code - [Sessions, steps and notes](https://docs.wirevow.dev/gitvow/concepts/sessions.md): One Claude Code conversation, identified by the session id Claude Code assigns - [The gate](https://docs.wirevow.dev/gitvow/concepts/gate.md): Before Claude Code runs a tool, it asks gitvow. gitvow answers in one of three ways - [What stays out of git](https://docs.wirevow.dev/gitvow/concepts/storage.md): The agent's transcript contains tool output: file contents, query results, environment variables, and whatever a database returned - [Snapshots: the code as the agent left it](https://docs.wirevow.dev/gitvow/concepts/snapshots.md): A commit records what was accepted. A snapshot records what the agent produced, edit by edit, whether or not anything was committed afterwards - [Providers: policy from facts](https://docs.wirevow.dev/gitvow/concepts/providers.md): A regular expression can say 'this path looks like an authorization file' - [Install per user or per repo](https://docs.wirevow.dev/gitvow/guides/install.md): Covers every repository you open. Nothing is committed anywhere - [Write a policy](https://docs.wirevow.dev/gitvow/guides/policy.md): Patterns are Python re syntax, searched against the Bash command text or the file path; MCP patterns are matched against the whole tool name - [Read a commit's session](https://docs.wirevow.dev/gitvow/guides/reading.md): Read it in this order. The plan tells you what the agent thought it was doing; compare it to the diff - [Run a trial and collect results](https://docs.wirevow.dev/gitvow/guides/trial.md): A two-week trial with five people answers three questions: how often the gate fires and on what, whether confirmations feel reasonable, and whether anyone - [Redaction and custom rules](https://docs.wirevow.dev/gitvow/guides/redaction.md): 1. Custom rules you supply as pairs - [Session notes on pull requests](https://docs.wirevow.dev/gitvow/guides/pull-requests.md): GitHub does not display git notes. gitvow puts them where reviewers already look: a comment on the pull request and the check's job summary - [Wire a provider](https://docs.wirevow.dev/gitvow/guides/providers.md): gitvow-provider-facts answers all three questions from a SQLite store of facts derived from your repositories: routes, how each is gated, and the calls between - [Restore what the agent had](https://docs.wirevow.dev/gitvow/guides/snapshots.md): Your branch and working tree are untouched. Read, run or copy from the worktree, then remove it with git worktree remove . Pass --to to choose the location - [Use gitvow with Codex CLI, Gemini CLI and Cursor](https://docs.wirevow.dev/gitvow/guides/other-agents.md): gitvow's record and gate are agent-neutral: trailers, notes, snapshots and the ledger live in git and in your home directory, and the policy is the same file - [Let the agent ask the record](https://docs.wirevow.dev/gitvow/guides/skills.md): Everything gitvow records is meant to be consulted by the next session, not only by a reviewer - [A period in one page](https://docs.wirevow.dev/gitvow/guides/digest.md): Every line comes from trailers, session notes, and the hook log in .git - [What each session cost](https://docs.wirevow.dev/gitvow/guides/cost.md): Every transcript gitvow reads carries token counts - [CLI](https://docs.wirevow.dev/gitvow/reference/cli.md): Exit codes: 0 success or allow; 2 blocked ; 1 error - [Hook payloads](https://docs.wirevow.dev/gitvow/reference/hooks.md): PostToolUse on an editing tool records the blob id of the written file for attribution and takes a working-tree snapshot; on a git commit it writes the session - [Session note schema](https://docs.wirevow.dev/gitvow/reference/note.md): The schema is additive. New fields may appear; existing fields keep their meaning. Consumers should ignore unknown fields - [Policy schema](https://docs.wirevow.dev/gitvow/reference/policy.md): Evaluation order: deny, confirm, MCP lists, providers, classifier, allow. Missing keys are treated as empty lists - [Provider protocol](https://docs.wirevow.dev/gitvow/reference/provider-protocol.md): A provider is a command. gitvow runs it once per question with a JSON object on stdin and expects one JSON object on stdout - [Adapter reference](https://docs.wirevow.dev/gitvow/reference/adapters.md): Every adapter produces the Claude Code shape documented in Hook payloads: sessionid, transcriptpath, cwd, hookeventname, toolname, toolinput - [External adapter protocol](https://docs.wirevow.dev/gitvow/reference/adapter-protocol.md): The six built-in adapters are Python inside gitvow - [Security](https://docs.wirevow.dev/gitvow/security.md): gitvow writes trailers into commit messages, a structural note into a git ref, and a ledger into the user's home directory - [Roadmap](https://docs.wirevow.dev/gitvow/roadmap.md): gitvow is deliberately small. These are the things it should grow into, in order, with the exit test for each - [FAQ](https://docs.wirevow.dev/gitvow/faq.md) - [Architecture](https://docs.wirevow.dev/gitvow/architecture.md) - [Contributing](https://docs.wirevow.dev/gitvow/contributing.md): Thank you. gitvow is small on purpose: standard library only, one CLI, hooks that exit 0 or 2. Please keep it that way - [gitvow-provider-facts](https://docs.wirevow.dev/provider-facts/index.md): The gate in gitvow can ask an external program three questions before an agent edits a file: is this file gate-bearing, would this new route be exposed without - [Install and configure](https://docs.wirevow.dev/provider-facts/install.md): In .gitvow/policy.json of the repository, or ~/.gitvow/policy.json: - [The fact store](https://docs.wirevow.dev/provider-facts/store.md): A SQLite file with two tables - [Security](https://docs.wirevow.dev/provider-facts/security.md): The provider opens the store read-only, makes no network calls, and writes nothing - [gitvow-skills](https://docs.wirevow.dev/skills/index.md): Agent skills that teach Claude Code, Codex, Cursor, Gemini CLI, Copilot CLI and Factory to ask the gitvow record: why a file looks the way it does, who wrote - [Why does this file look the way it does?](https://docs.wirevow.dev/skills/gitvow-why.md): The output lists the file's commits newest first - [Who wrote these lines?](https://docs.wirevow.dev/skills/gitvow-trace.md): Each line group shows agent with the session, step and the plan stated at the time, or person with the commit - [Has this been worked on before?](https://docs.wirevow.dev/skills/gitvow-recall.md): Each hit is a session with its date, commit count and the plan it stated. marks a session that ended without committing; its work may survive in snapshots - [Hand the work to the next session](https://docs.wirevow.dev/skills/gitvow-handoff.md): Paste the output as the first message of the next session, or into the task tracker ## Optional - [PyPI](https://pypi.org/project/gitvow/) - [Releases](https://github.com/wirevow/gitvow/releases)