Skip to main content
What differs per agent is the hook contract, so gitvow ships one adapter per agent that translates each agent’s payload into the shape the hooks understand and answers in the form the agent expects.

Install

Each install merges gitvow’s entries into that agent’s configuration file, idempotently, and gitvow uninstall --user --agent <name> removes exactly those entries. Codex requires hooks to be enabled in ~/.codex/config.toml; the installer prints the line if it is missing.

What is the same

  • The gate: the same policy, the same deny, confirm and allow decisions, the same providers and classifier. A confirmation in Cursor is delivered as its native ask, so the user sees the question in Cursor’s own prompt.
  • Trailers on the agent’s own commits, session notes with attribution, snapshots after every edit, the ledger at the end of a session.
  • gitvow show, gitvow report, gitvow snapshots and the pull request action work unchanged, because they read git, not the agent.

What differs, honestly

  • Codex edits arrive as patches. Codex’s file edits are a single apply_patch call carrying a patch, not a file path. gitvow parses the patch for the files it touches and the lines it adds, so path rules, route questions, attribution and snapshots work, but a rule that depends on the exact edit text sees the patch text.
  • Cursor’s transcript is not read. The stated plan and tool counts come from the transcript. gitvow reads Claude Code’s format, Codex’s session files (~/.codex/sessions/.../rollout-*.jsonl) and Gemini CLI’s chat recordings (~/.gemini/tmp/<project>/chats/session-*.jsonl), each detected from the file itself. Cursor does not document the file behind transcript_path, so for Cursor the note records the commit, trailers, snapshot and attribution and leaves the plan empty. The Codex and Gemini readers follow the formats as published in each project’s source and community write-ups; they are marked unverified against a live file until a user confirms.
  • Cursor has no hook before a file edit other than the generic preToolUse; gitvow uses that for gating and afterFileEdit for snapshots. If Cursor’s built-in edit tool bypasses preToolUse in a future version, the gate still sees shell commands and MCP calls through beforeShellExecution and beforeMCPExecution.
  • Copilot CLI passes no transcript path, so its notes never carry a plan; everything else works. Factory passes one, but its format is not documented, so the same applies.
  • Verification status. Claude Code’s adapter has been exercised in real sessions throughout. The Codex, Gemini, Cursor, Copilot CLI and Factory adapters are built and tested against the payload shapes in each vendor’s documentation, and marked unverified in a real session until someone with that agent installed runs gitvow selftest --agent <name> and a real session against a scratch repository. Please report what you see.

An agent not listed here

Write a gitvow-agent-<name> executable and put it on the PATH; gitvow discovers it and every command that takes --agent accepts the new name. The contract is three small subcommands over JSON, described in the external adapter protocol, with a complete example in the repository.

Tool name mapping