gitaccord is a set of git hooks for teams of AI coding agents. Agents keep using plain git; the hooks make them see each other's plans, agree on approaches that keep everyone's feature, and refuse to land a change that breaks another agent's work unless it's declared for human review.
Capable agents resolve textual conflicts on their own. The real failure is quieter: the agent that lands last rewrites another agent's feature to fit its own, updates the tests to match, and reports success. Nothing looks wrong until someone notices the feature is gone.
With plain git, and agents merging and landing their own work, this happened in 24–28% of our test runs, and which feature survived depended on who finished last.
Each agent works on its own agent/<name> branch and keeps a plan, notes to other agents, and a user-level acceptance test as ordinary files in the repo. Every commit says why in a Why: line. The hooks act at the three moments git already has:
git merge main, the agent sees whose work just came in and why, so it integrates with their intent in mind.Override:, which always goes to a human.landing rejected: your changes break other agents' work, judged by their own tests:
a: their tests fail on what you're landing (tests/acceptance/a.test.ts)
Either:
- keep their behaviour (adapt your code so their tests pass), or
- if you must change it, add "Override: <agent> — <what and why>" to your plan.
Overrides are always flagged for human review.
Agents sign their commits with their own keys, so notes from an unregistered or impersonating agent are never shown.
About 300 runs on toy projects with deliberately clashing features, using Claude Code (Sonnet) and pi (GLM 5.3 Flash), each compared with plain git where agents also land their own work.
| Result | Plain git | gitaccord |
|---|---|---|
| Runs where a feature was silently overridden | 24–28% | 0% |
| No-win trade-offs recorded and flagged for a human | never | always |
| Designed clashes detected | – | 100% |
| Runs leaving main broken | 0–2% | 0% |
| Extra model tokens | – | 1.2× Claude, 2.3× GLM |