Agentic coding is present across thousands of projects, but intensive use is rare
A July 15, 2026 paper by Maliha Noushin Raida and Daqing Hou analyzed 25,264 agentic pull requests from 2,361 GitHub repositories with more than 100 stars. It studied PRs attributed to Copilot, Codex, and Claude Code during May through July 2025. The result is a more useful picture than product demos: most repositories tried only one or two agentic PRs, while sustained volume clustered in a small minority.
The authors found that only 25 projects, about 1% of the sample, exceeded a contextual reference line of 36 agentic PRs per participating human over the three-month observation period. They explicitly warn that the count is not a universal productivity standard. It measures activity, not change complexity, quality, review effort, or business value. That limitation should shape every internal dashboard: a high PR count can indicate productive automation, a fragmented task queue, or a growing pile of review debt.
Smaller projects with one to five contributors showed higher participation ratios and greater average agentic PR activity than larger projects. This makes operational sense. A small repository has fewer coordination boundaries, a compact architecture, and often one person who already understands the whole system. A large repository distributes knowledge across owners, services, compliance controls, test environments, and release trains. The model can generate a patch in both settings, but the cost of proving that the patch belongs is very different.
The strongest finding concerns oversight. In 78.9% of the studied agentic PRs, the same human both reviewed and modified the agent contribution. Another 9.8% had one reviewer and no human committer. Together, those single-human patterns accounted for 88.7% of the sample. Multiple-human collaboration appeared in only 11.3% of PRs. Even larger projects mostly depended on individual oversight.
Agentic software development currently scales through individual judgment more often than through a new team process.
This is not evidence that one reviewer is always unsafe. A small documentation fix may need only one owner. It is evidence that agent throughput can concentrate responsibility without making it visible. If one developer prompts the agent, interprets its plan, modifies its patch, judges its tests, and merges it, familiar review controls may exist only as interface elements.
ReviewBench makes reviewer tradeoffs inspectable
GitHub released ReviewBench on October 5, 2026 as an open, reproducible benchmark for AI code-review systems. The full set contains 219 public pull requests drawn from 187 repositories and 19 languages. Its 352 human-reviewed golden findings are labelled by severity and category. The repository publishes a 25-task local test set, the full corpus manifest, repository mirrors, golden findings, classifier artifacts, an agent contract, a test runner, and a judging CLI. Those artifacts matter more than a leaderboard screenshot because they let an evaluator reconstruct what was supplied, what counted as a finding, and how a score was produced.
The corpus was selected after GitHub analyzed the shape of 103.9 million pull requests. That gives ReviewBench a stronger distribution story than a collection of hand-picked toy bugs, but it does not make the corpus representative of every organization. Thirty-five percent of its full-set PRs contain more than 1,000 changed lines. TypeScript and Python are heavily represented. A payments service, embedded controller, mobile app, regulated data pipeline, and monorepo may need different slices, context limits, and error costs.
ReviewBench reports two families of metrics. Grounded precision asks how many reviewer findings match the known golden set; grounded recall asks how many golden findings the reviewer found. The augmented metrics allow newly discovered, valid issues to receive credit after judging. That distinction is necessary because a real reviewer can find a legitimate problem that the original golden set missed. It also creates an additional dependency: augmented scoring is only as stable and inspectable as the judge, normalization rules, and adjudication path.
| Metric or slice | What it can answer | What it cannot answer |
| Grounded precision | How much known-set output is signal rather than noise | Whether novel findings are valid or reviewers will trust them |
| Grounded recall | How many known findings the system recovers | Whether the golden set contains every material defect |
| Augmented precision/recall | Whether credible new findings improve measured coverage | Whether the judge is stable across model or prompt changes |
| Severity slice | Whether high-impact defects receive enough attention | Whether severity matches a repository's actual blast radius |
| Category slice | Strength in correctness, security, reliability, testing, and other classes | Coverage of organization-specific controls and architecture |
| Aggregate leaderboard score | A compact comparison under one benchmark contract | Production value, latency, cost, queue impact, or merge safety |
A benchmark score is evidence about behavior under a frozen test contract. It is not a portable statement of production quality.
Exact independent discussion of ReviewBench is still early. Its October 5 Hacker News item had little engagement at the time of this update, and the focused social scan found far more adjacent GitHub and Copilot discussion than benchmark-specific analysis. That is a reason to use the published artifacts, not a reason to invent community consensus. A current r/ChatGPTCoding discussion about reviewing large volumes of AI-generated code supplies the operational pain: reviewer capacity and code comprehension are becoming constraints even when benchmark adoption remains nascent.
Freeze the evaluation contract before comparing reviewers
Reviewer comparisons become meaningless when teams silently change context, prompts, tool permissions, model versions, retry counts, or judge settings between runs. Store those fields beside every result. The contract should also record the exact benchmark commit and corpus digest so a later leaderboard result cannot be compared with a different task set as though nothing changed.
evaluation:
benchmark: review-bench/ReviewBench
benchmark_commit: "PINNED_SHA"
manifest_sha256: "CORPUS_DIGEST"
reviewer_image: "registry.example/reviewer@sha256:IMAGE_DIGEST"
model: "MODEL_ID_AND_VERSION"
context:
mode: "base_head_diff_plus_repo"
token_limit: 180000
tools: ["read_repo", "search", "static_analysis"]
sampling:
temperature: 0
runs_per_pr: 3
scoring:
judge: "JUDGE_ID_AND_VERSION"
prompt_sha256: "JUDGE_PROMPT_DIGEST"
severity_weights: {high: 8, medium: 3, low: 1}
budgets:
max_minutes_per_pr: 12
max_cost_per_pr_usd: 4.00
release_owner: "developer-platform-review-board"
Run the published local test path first, then the full set only after the reviewer emits valid normalized findings. Record failures and timeouts as outcomes instead of dropping them from the denominator. Repeat each task enough times to expose instability. A configuration that finds a high-severity issue in one of three runs should not be described as reliably catching it.
Weighted scores are a policy decision. A team may value one high-severity miss more than ten low-severity false alarms, while another team may prioritize low noise because every comment interrupts a scarce domain reviewer. Publish both raw slice metrics and the policy-weighted score. Otherwise the weighting hides inside a single number and the decision cannot be reproduced.
for finding in normalized_findings:
verdict = judge(finding, golden_set, repository_context)
record(verdict, severity, category, run_id, latency, cost)
for slice in [severity, category, language, change_size]:
precision = accepted_findings[slice] / emitted_findings[slice]
recall = matched_golden[slice] / golden_findings[slice]
stability = findings_seen_in_all_runs[slice] / union_of_findings[slice]
promote_candidate = (
high_severity_recall >= policy.minimum_high_recall
and unsupported_rate <= policy.maximum_noise
and stability >= policy.minimum_stability
and p95_latency <= policy.maximum_latency
and mean_cost <= policy.maximum_cost
)
The comparison set matters. SWE-PRBench publishes 350 human-annotated pull requests under frozen context configurations, which makes it useful for context ablation. AACR-Bench focuses on repository-level context and expert verification. ReviewBench adds a public operational submission path and augmented findings. None is a universal winner. Agreement across different corpora is stronger than dominating one public set.
Use a shadow pilot to connect benchmark scores with production value
Select one or two benchmark-qualified configurations and run them on real pull requests without posting comments, changing checks, or affecting merge authority. Freeze each PR at the reviewed commit. Have qualified reviewers adjudicate findings against the code, tests, issue intent, repository policy, and later outcomes. The reviewer should not know which model or vendor produced a finding during the first adjudication pass.
Build a repository-specific result set rather than collapsing everything into one acceptance rate. Separate auth, data, billing, concurrency, dependency, migration, testing, maintainability, and documentation findings. Track PR size, language, component ownership, context available, and whether the finding was inside or outside the diff. A reviewer may be useful for small correctness bugs and actively harmful on large mechanical migrations.
| Shadow metric | Release question | Stop signal |
| Supported finding rate | Would a qualified reviewer keep this comment? | Noise exceeds the team's interruption budget |
| Critical miss rate | Does the system miss issues humans or tests later identify? | Any unacceptable high-impact miss pattern |
| Reviewer time delta | Does triage save more time than it consumes? | Net review time increases |
| Repeated-run stability | Does the same PR produce materially the same findings? | High-severity findings appear intermittently |
| Cost and p95 latency | Can the system fit the merge queue and budget? | Timeouts, retries, or spend break service levels |
| Post-merge confirmation | Do accepted findings correlate with prevented defects? | Leaderboard gain has no production signal |
Only after the shadow gate passes should findings become private reviewer suggestions. Posting inline comments is a second release, and making a check blocking is a third. Keep those steps separate. A team must be able to disable the reviewer, restore the prior branch policy, identify which comments it created, and correct published findings without rewriting the audit trail.
The scarce resource is verified attention
Coding agents lower the cost of producing a plausible change. They do not lower every downstream cost. Someone must establish that the issue is worth solving, the requested behavior is correct, the repository context is current, the diff is minimal, the tests exercise the failure, the security boundary still holds, and the deployment can be reversed. The more quickly agents open PRs, the more easily those obligations become a queue.
That queue has nonlinear behavior. Ten small, independent changes may be easy to review. Ten changes that touch a shared schema, permission model, generated client, or migration stack interfere with one another. Reviewers repeatedly reload context, reconcile stale branches, rerun expensive integration tests, and decide which agent interpretation should win. Generation time falls while coordination time rises.
| What a throughput dashboard sees | What the engineering system must prove |
| Pull requests opened | Problems solved without avoidable scope growth |
| Lines changed | Behavior changed intentionally and minimally |
| Tests reported as passing | Required checks ran on the reviewed commit and cover the claimed behavior |
| Time to first PR | Time to a verified merge or justified rejection |
| Agent success message | Independent repository evidence a reviewer can reproduce |
| Merge rate | Accepted value after rework, rollback, and escaped defects |
GitHub's documentation gives one concrete warning: skipped checks can report success and therefore may not block a merge even when configured as required. A green box is not a semantic guarantee. Repositories need to know which checks actually ran, on which SHA, against which merge state, and whether an agent could alter the workflow or instructions that define those checks.
AI review does not remove the problem. GitHub Copilot code review and Anthropic's Code Review can inspect broad repository context and surface suspected defects. Both vendors still tell users to validate findings, and Anthropic states that its review does not approve or block the PR. An agent reviewer is useful as an additional evidence producer. If the same model family generates, reviews, fixes, and approves a patch with no independent gate, correlated blind spots become policy.
Design the pull request as an evidence packet
A reliable agentic PR pipeline separates problem definition, change generation, verification, and authorization. The agent can own much of the generation and evidence collection. It cannot own the final statement that the evidence is sufficient for the repository's risk.
Issue or change request
- expected behavior
- constraints and owner
|
v
Isolated agent branch or worktree
- inspect -> plan -> edit -> test
- no direct protected-branch write
|
v
Evidence packet
- scope map and changed behavior
- test commands and exact results
- risk flags and residual uncertainty
|
v
Independent automation
- required CI, security, policy, migration checks
|
v
Risk-tiered human review
- evidence review + code review
|
v
Protected merge -> canary -> rollback signal
OpenAI's Codex app uses isolated worktrees so parallel agents can work without touching the main checkout. Claude Code GitHub Actions runs on GitHub runners and turns issues into pull requests. GitHub Copilot cloud agent works on a branch and keeps the PR title and body aligned with its changes. These product choices converge on the right integration boundary: proposed work should arrive as reviewable branch state, not as an opaque modification to a trusted working tree.
Isolation is only the first control. Repository instructions, build scripts, and tests come from the branch and can be untrusted or wrong. GitHub notes that Copilot code review can read custom instructions and skills from the head branch. That is useful for testing instruction changes, but it also means review behavior can be influenced by the change under review. Protect the definition of critical checks and require human scrutiny when a PR changes workflow files, agent instructions, review rules, or security policy.
Require a machine-readable evidence contract
A prose PR description is easy to sound confident in and hard to audit at scale. Add a small evidence file or structured section that records what the agent claims, how the claim was tested, what was not tested, and which risk flags apply. CI can validate the shape, while the reviewer evaluates the substance.
change_evidence:
issue: ENG-1842
behavior_before: "expired sessions return 500"
behavior_after: "expired sessions return 401 with error code"
scope:
files: 4
services: ["auth-api"]
migrations: false
permissions_changed: false
verification:
- command: "pnpm test auth/session-expiry.test.ts"
result: "18 passed"
commit: "4f83c2a"
- command: "pnpm lint"
result: "passed"
commit: "4f83c2a"
not_verified:
- "mobile client retry behavior"
risk_flags:
- "authentication"
rollback:
strategy: "revert commit; no data migration"
human_owner: "@service-owner"
The commit field matters. Evidence from an earlier version of the branch does not prove the reviewed head. For generated artifacts, migrations, dependency changes, or API schemas, record both the generating command and the diff. For a claimed regression fix, require a failing-before and passing-after test when feasible. A test added by the same agent is useful, but the reviewer should check that it fails for the original defect and cannot pass for the wrong reason.
Keep uncertainty explicit. "Not verified" is a useful field, not an admission of failure. It lets the reviewer decide whether the gap is acceptable, needs a second environment, or changes the risk tier. Agents are prone to summarizing missing evidence as success. A contract makes absence visible.
Route review effort by blast radius, not author type
Do not treat every agent PR as high risk merely because AI created it, and do not treat every human PR as low risk. Classify the change by the authority it touches, the reversibility of the effect, and the strength of available evidence. The author type can affect scrutiny, but it should not replace the technical risk model.
| Tier | Typical changes | Minimum gate | Agent policy |
| Low | Docs, comments, localized tests, non-executable content | Owner review plus content checks | May auto-open; never auto-merge by message alone |
| Moderate | Contained application logic with strong tests | Qualified reviewer, required CI, evidence contract | Small diff and one component per PR |
| High | Auth, permissions, billing, secrets, dependencies, network policy | Code owner plus security or domain reviewer | No self-approval; deeper tests and rollback plan |
| Critical | Data migrations, production infrastructure, release controls, compliance logic | Multiple humans, staged deployment, explicit change approval | Agent proposes; humans authorize execution and merge |
Change size is a routing signal. A large diff is not automatically wrong, but it consumes more review context and hides unrelated choices. Set repository-specific thresholds that request splitting or an architecture review. More important, flag semantic boundaries: one PR that changes authentication, a database migration, and deployment policy is three review problems even if it is only 200 lines. The patch-size acceptance contract shows how to pair that signal with correctness, policy, structure, and evidence without rewarding tiny unsafe patches.
Turn the policy into protected repository behavior
Start with branch protection or repository rulesets. Require pull requests, appropriate approving reviews, and named status checks from expected sources. Require the latest reviewed push where practical so an agent cannot add a commit after approval and inherit stale consent. Prevent the agent identity from bypassing the rule.
name: agentic-pr-evidence
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
evidence:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'human-only') }}
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Validate evidence contract
run: ./scripts/validate-change-evidence.sh
- name: Detect sensitive surfaces
run: |
git diff --name-only origin/${{ github.base_ref }}...HEAD \
| ./scripts/classify-change-risk.sh
- name: Run repository verification
run: ./scripts/ci-required.sh
This example is intentionally generic. Pin actions according to your supply-chain policy, keep job names unique, restrict token permissions, and ensure the workflow runs for merge queues if the repository uses them. Do not allow a PR to redefine the only check that approves itself. For critical workflows, keep policy in an organization-controlled reusable workflow or require code-owner approval for changes under .github/workflows/.
Define task intake before enabling parallel generation
A useful agent task has one owner, one expected behavior, named constraints, a verification path, and a stop condition. "Improve the auth service" is an exploration prompt, not a merge task. "Return a typed 401 for expired access tokens without changing refresh-token behavior; add a regression test and stop if the mobile client contract is ambiguous" is reviewable.
One outcomeThe issue names the user-visible or system-visible behavior that should change.
Bounded authorityThe agent cannot push to protected branches, approve itself, alter secrets, or deploy production.
Repository truthBuild, test, lint, architecture, and contribution instructions are current and versioned.
Independent evidenceProtected CI reruns verification on the reviewed commit in a controlled environment.
Named ownerA qualified person is accountable for rejection, merge, and follow-up.
Queue limitThe system stops assigning work when review age or work in progress exceeds the team threshold.
Measure verified delivery, not generated activity
The July study is careful not to equate PR volume with productivity. Internal programs should be equally cautious. Measure whether the system reduces the cost of delivering correct changes without transferring invisible work to reviewers or operations.
| Metric | Useful definition | Failure signal |
| Time to verified merge | Issue assignment to merge after all required evidence | Generation is fast but review queue grows |
| Reviewer minutes per accepted change | Human review, rework, and reproduction time | Agent output externalizes debugging |
| First-pass evidence completeness | PRs with reproducible tests, scope, risk, and uncertainty | Review begins with evidence archaeology |
| Rework ratio | Human or agent revisions after first review | Tasks or repository instructions are underspecified |
| Escaped defect and rollback rate | Incidents attributable to accepted agentic changes | Merge speed hides quality loss |
| Queue age by risk tier | Oldest unreviewed PR and median wait | Work in progress exceeds review capacity |
| Acceptance with material modification | PRs requiring substantial human redesign | Agent is useful for scaffolding but not autonomous delivery |
Compare similar work. Documentation edits, dependency upgrades, isolated bug fixes, migrations, and cross-service changes should not share one leaderboard. Use a baseline from the team's existing workflow and retain rejected PRs in the accounting. If only merged work is measured, the failed generation and review cost disappears.
Common failure modes
| Failure mode | Why it happens | Control |
| PR flood | Assignment rate follows agent capacity, not reviewer capacity | Per-owner work-in-progress limits and queue backpressure |
| Self-confirming evidence | One agent writes the code, test, summary, and approval | Independent CI and human judgment for merge |
| Stale approval | New commits arrive after review | Dismiss stale approvals or require approval of the latest push |
| Instruction tampering | Head-branch files influence agent or review behavior | Protect critical instructions and review their changes explicitly |
| Green but skipped | A required workflow does not run but reports success | Assert expected jobs and artifacts, not only conclusion color |
| Oversized change | Agent optimizes for task completion across boundaries | Semantic scope limits and automatic risk escalation |
| Reviewer monoculture | The prompt author is also the only integrator | Second owner for high-risk surfaces and periodic calibration |
| Silent review debt | Open PR count grows while generation is celebrated | Queue-age service level and automatic assignment pause |
The community signal from July matches the empirical caution. In r/AI_Agents, a thread about wanting to give automation less control drew 24 points and 32 comments, while another thread about agent projects being cancelled focused on reliability and operational limits. These are not representative studies, but they reveal the concern teams should test: useful automation often comes from narrowing authority and improving evidence, not from letting the agent do more.
Adoption checklist
Baseline the current queueRecord review time, merge time, rework, rollback, and defect rates before expansion.
Start with bounded tasksChoose low-blast-radius work with strong existing tests and clear ownership.
Protect the merge pathRequire pull requests, status checks, appropriate reviews, and latest-push approval.
Make evidence structuredRequire changed behavior, scope, exact verification, uncertainty, and rollback information.
Separate identitiesDo not let the generating agent approve, bypass, or merge its own work.
Route by riskEscalate auth, data, billing, infrastructure, dependency, and policy changes.
Limit work in progressPause new assignments before reviewer queues become stale.
Audit outcomesReview accepted and rejected work, human modifications, incidents, and rollback signals monthly.
For unfamiliar repositories, pair this review model with our coding-agent sandbox security guide. Turn contributor disclosure and evidence into merge controls with the AI contribution policy guide. For issue automation, rationale, confidence routing, and the difference between approval and authorization, use the GitHub Agentic Workflow controls guide. For deterministic tool and API testing, use the agent skill evaluation guide. The pull request is one control point in a larger loop, not a substitute for isolation or testing.
FAQ
What is an agentic pull request?
It is a proposed repository change produced by a coding agent that can inspect context, edit files, run commands or tests, and create a pull request. The label describes the generation workflow. It does not guarantee quality, autonomy, or safe merge readiness.
Should every AI-generated PR get two human reviewers?
No. Review requirements should follow blast radius and evidence. A typo fix may need one owner; a permission change, migration, or production workflow should receive independent domain review. The important rule is that the generator cannot silently authorize its own change.
Can an AI reviewer satisfy the independent review gate?
It can add useful evidence, especially for broad context gathering and repeatable checks. It should not be the sole authority for high-impact changes produced by an agent with similar blind spots. Keep a qualified human accountable for the merge decision.
What is the best first coding-agent task?
Choose a bounded problem with a reproducible failure, an established test command, a clear owner, and a reversible change. Avoid the first experiment being an architecture rewrite, permission change, production migration, or vague cleanup.
Does a higher agentic PR count mean higher productivity?
No. Count measures activity. Pair it with accepted value, reviewer effort, rework, queue time, change risk, defects, and rollback. The research itself cautions that PR-per-participant volume does not capture complexity, quality, or review effort.
What does ReviewBench measure?
It measures how normalized reviewer findings compare with a published golden set on real public pull requests, including grounded and augmented precision and recall plus severity and category slices. It does not directly measure production reviewer trust, escaped defects, policy fit, code execution, cost tolerance, or merge safety.
Can a high ReviewBench score justify a blocking check?
No. A high score qualifies a configuration for repository-specific shadow testing. Promote it only after the team measures unsupported findings, critical misses, repeated-run stability, latency, cost, reviewer effort, and post-merge outcomes under its own risk mix.
Sources and further reading
Current product documentation and research were verified online on October 9, 2026. ReviewBench figures are first-party benchmark facts, not independent proof of production benefit.