Skip to content

Agents open pull requests; people merge

Every change reaches main through a pull request. An agent may push its feature branch and open the pull request; it never merges or approves one, never pushes main or a tag, never force-pushes, and never bypasses a check (--no-verify, skipped hooks, changed protection or settings). A person reviews every change, merges it and is responsible for it. The rules are in CODING_STANDARDS.md (Git and GitHub) and hold for every contributor's agent.

They are enforced in two places. On GitHub, a ruleset on main requires a pull request and passing checks, and only maintainers can create, move or delete release tags (v*); this is the only boundary that holds for every tool. For Claude Code, .claude/settings.json adds deny rules and a hook, scripts/agent_git_guard.py, that blocks the forbidden commands before they run, also in modes that skip permission prompts.

Considered options

  • Letting agents merge once the checks pass would be faster, but the checks cannot tell whether a change is scientifically right; a person has to have looked at it.
  • Forbidding agents to push at all would leave "an agent opens the pull request" impossible, since GitHub needs the branch first.
  • Local settings alone cannot be enforced: a developer can edit or turn off anything on their own machine. They catch the agent's mistakes; the GitHub ruleset is what holds.