cd /news/ai-agents/what-2204-merged-ai-agent-prs-actual… · home topics ai-agents article
[ARTICLE · art-68742] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=· neutral

What 2,204 merged AI-agent PRs actually touched (0 declared their scope)

A developer scanned 2,204 recently merged AI-agent-authored PRs on public GitHub repos and found that zero declared a machine-readable scope for the change. The scan also revealed that 7.0% of complete analyses had at least one boundary finding, meaning the PR touched files outside expected areas. The developer proposes a vendor-neutral 'contract' format to make agent intent machine-checkable.

read2 min views1 publishedJul 22, 2026

AI coding agents — Devin, Copilot coding agent, Codex, Claude Code, Cursor — open and merge pull requests at scale now. Every agent vendor knows, at the moment of generation, exactly what the task was. My question: does any of that intent survive into the PR in a form a machine could check? And while I was looking: how often do agent PRs cross boundaries that deserve human eyes?

So I scanned 2,204 recently merged, agent-authored PRs on public GitHub repos with a checkout-free policy engine, using only its built-in default policy. It reads PR metadata and file contents through the GitHub API — it never executes PR code and never calls an LLM, so every finding is deterministic and replayable.

0 of 2,204 PRs declared a machine-readable scope for the change. Not a low percentage — zero. Agent vendors emit rich task context at generation time, and none of it reaches the PR as something a machine could verify. If you want to know whether an agent PR stayed inside its intended task, there is currently nothing to check it against.

7.0% of complete analyses had at least one boundary finding (153 of 2,191). The structure underneath that number is the interesting part:

Percentages hide choices, so here are mine: workflow-rule rates use PRs that actually touched workflow or manifest content; control-plane rates use all complete analyses; the contract statistic uses everything. Incomplete analyses fail closed and are reported as their own bucket, never silently dropped. A "finding" is not an accusation — most of the escalations I saw are probably benign. That is exactly the point: nobody declared them, nobody checked them, and benign-until-it-isn't is not a security posture.

The zero is the story. Agent PRs today are reviewed the way human PRs are — by reading the diff — but agents differ from humans in one reviewable way: their intent is machine-generated and could be machine-checkable. A PR-body contract as small as this would close the loop:

<!-- mergewarden-contract
version: 1
agent: codex
task: update session expiry handling
allowed_paths:
  - src/auth/**
  - test/auth/**
-->

The contract is an untrusted declaration — the base-branch policy stays authoritative — but once it exists, "did the PR leave its declared scope" becomes a deterministic check instead of a reviewer's guess. I'd rather see this become a vendor-neutral convention than one tool's feature; the format above is one concrete proposal.

Every query, date window, and aggregation script is published in the methodology writeup. The scanner (MergeWarden, MIT) runs against any public PR without installing anything:

npx mergewarden scan owner/repo#123

Full methodology and the tool: https://github.com/sjh9714/mergewarden

If you maintain a repo that receives agent PRs and want the scan results for your own recent PRs, open an issue — I'm looking for maintainers to help measure false-positive rates against real-world judgment. And if you've seen an agent PR quietly cross a line in your own repo, I'd love to hear about it in the comments.

── more in #ai-agents 4 stories · sorted by recency
── more on @devin 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/what-2204-merged-ai-…] indexed:0 read:2min 2026-07-22 ·