Skip to content
Buildeon Labs
Running Ongoing Since 24 July 2026 Observational study

Agentic AI pull requests and how maintainers react

An operator picks issues in public open-source repositories we do not own, with help from agent-driven scouting. An AI coding agent prepares the change, any tests and the pull request description, and the operator directs and submits the work from one public GitHub account, as an outside contributor. The changes range from bug fixes to small fixes such as typos, and not every pull request includes tests. This page counts what happened to those pull requests and how the maintainers on the other side reacted. It is an observational study, not a pre-registered one.

Data as of . Snapshot copied to this page on .

Results so far

Campaign window only: pull requests opened since 24 July 2026 that have been merged or closed. They went to 81 repositories; 50 of them merged at least one.

Counting every pull request the account has ever had resolved, including 18 from before the campaign window, the figure is 270 resolved and a 54.4% merge rate across 87 repositories. If all 120 still-open pull requests were closed unmerged, the campaign merge rate would fall to 39.5%.

How maintainers reacted

Every resolved pull request in the campaign window is in one category. Merged ones are grouped by script from GitHub’s review and comment data. Closed ones are categorised from the evidence in the thread: reviews, comments and the stated closing reason, without keyword matching and without filling in an unstated motive. 29 of the 105 closed pull requests have no current annotation and are shown as reason unknown.

Merged (147)
  • Merged after human review 68

    At least one submitted non-author human review at or before merge.

  • Merged without recorded human response 31

    No recorded non-author human discussion or review, including after merge.

  • Merged human response only after merge 29

    Human messages exist, but all were posted after merge.

  • Merged with pre-merge human discussion 19

    Human discussion or inline feedback before merge, without a submitted human review.

Closed without merging (105)
  • Closed author withdrawn 19

    Author explicitly withdraws or replaces the submission; specific reasons retained per PR.

  • Closed already fixed or superseded 17

    Existing work, a competing PR or another implementation makes the PR redundant; does not imply this patch was reused.

  • Closed no recorded reason 15

    Manual inspection found no stated closure reason; earlier feedback alone is not treated as the cause.

  • Closed reason unknown with human response 15

    No current manual annotation, with a pre-closure human response.

  • Closed reason unknown no human response 14

    No current manual annotation and no pre-closure human response.

  • Closed explicit AI related objection 8

    Closing explanation explicitly objects to AI-generated code, insufficient human oversight or agent commentary; not necessarily a blanket AI policy.

  • Closed incorporated elsewhere 8

    Thread explicitly reports reuse of submitted code/tests in another PR or commit; does not by itself verify the replacement merged.

  • Closed technical or scope objection 8

    Stated technical, design, maintenance-capacity or supported-version objection.

  • Closed process or administrative 1

    Explicit contribution-process rework or administrative deferral.

87 of the 147 merged pull requests had a person engage before the merge: 68 with a submitted review and 19 with discussion or inline comments but no formal review. Of the remaining 60, 29 had a human reply only after the merge, and 31 had no recorded human comment or review at all; who performed the merge was not recorded.

Which agents did the work

The agents worked in different set-ups. In the hybrid one, Claude acted as the manager: it scoped the work, dispatched it, usually reviewed the result and opened the pull request, while Codex acted as the developer and wrote the code. In the Claude-alone set-up (47 of 252 pull requests), Claude did all of it. For 180 of 252 pull requests, the logs don’t show which set-up was used. Who played which role comes from the agents’ logs, which do not reveal every role for every pull request.

The workflow figures come from an earlier snapshot of the study than the counts above, so their totals differ.

Resolved pull requests by workflow Workflow known for 72 of 252 (28.6%); workflow data as of 18 October 2026, 252 pull requests.
  • Claude orchestrating, Codex writing the code 18 merged, 7 closed
  • Claude alone 24 merged, 23 closed
  • Codex alone no pull requests
  • Another mix of agents no pull requests
  • Workflow unknown 105 merged, 75 closed

Agent known per role (workflow data as of 18 October 2026, 252 pull requests): orchestrator for 114 of 252 (45.2%); implementer (wrote the code) for 72 of 252 (28.6%); reviewer for 20 of 252 (7.9%); fixer (addressed review comments) for 28 of 252 (11.1%).

Counts are descriptive only: the fixed hybrid vs claude-solo vs codex-solo comparison, chosen after the attribution data was available, is not testable at this sample size (no attributed PRs in: codex-solo). Workflow type is unknown for PRs without both orchestrator and implementer evidence.

Model choice was not randomized: it changed over time as newer models became available and varied by repo/language (e.g. PHP work leaned on different models than Python work at different points in the campaign). A merged/closed difference between models here may reflect which repos or which campaign period a model happened to work on, not the model's own capability. Treat this as descriptive, not causal. Workflow type adds its own confounders: the Claude-orchestrator/Codex-worker pattern was adopted partway through the campaign and used mostly for specific repositories, and the log sources that reveal a role differ by harness, so PRs whose roles are known are not a random sample of all PRs.

Objections to AI-written code

8 of the 105 closed pull requests (7.6%) were closed with an explicit objection to AI-generated code, to too little human oversight, or to agent commentary on the thread. That is 3.2% of all 252 resolved pull requests. An objection like this is not necessarily a blanket AI policy for the project. Whether each pull request said that an AI agent prepared it was neither required nor recorded, so this count cannot be split by disclosure (see the caveats below).

They are concentrated: 7 of the 8 came from the single organization that closed the most of our pull requests (16.2% of closures in the window), from one maintainer on 2 separate days. Leaving that organization out, the campaign merge rate is 61.7%.

Another 15 closed pull requests had no stated closing reason. Some of those threads have earlier comments, but none says why the pull request was closed, so we do not count them as objections of any kind.

What we changed during the campaign

The way pull requests were chosen and submitted changed while the study ran, in response to what happened. These are the main changes, and what we would tell any team pointing AI agents at open source.

Method

Caveats

Data availability

The campaign was run from an internal tracker that remains private. Alongside the working data it holds private account and credential-setup details and an unredacted working history, including notes on individual maintainers who never agreed to appear in a public record. Publishing it would expose that information. We have instead released a cleaned, reusable version of the tool (oss-contribution-tracker) and a sanitized per-PR dataset, in which rows describing objections to our contributions are pseudonymized. The original tracker and the local session logs behind the model attribution are kept intact for verification. Reviewers, researchers or affected maintainers with a legitimate need to check a specific claim can request supervised access to the relevant records. The pseudonymized objection rows keep exact timestamps, durations and counts, so a determined reader could re-identify them from that timing metadata: project names are withheld, but the rows are not anonymous. We accepted that residual risk.

This page itself shows aggregate figures only. The cleaned tool is at oss-contribution-tracker, and the sanitized dataset published there lists individual pull requests: rows closed over an explicit AI-related objection are pseudonymized, and, as the statement above says, can still be re-identified from their timing metadata.

How the data updates

The figures on this page come from an aggregate export of the study’s dataset. Only the counts and percentages the page shows are stored with the site, and the page is rendered when the site is built; it makes no live requests. For now the snapshot is refreshed by hand; each refresh replaces the JSON file. The dates at the top of the page show which one you are reading (data as of 18 October 2026, copied on 19 October 2026).

Want this for your team?

This experiment shows how we run agent workflows, fully autonomous and with a person in the loop, and report honestly on what happens. We can build the same pattern for your own tracker (GitHub, Linear, Jira, Huly or any tool with an API or MCP server): agents pick up issues, raise pull requests, and either wait for your approval before CI/CD deploys or deploy to staging for you to accept or revert after UAT. We do not run open-source contribution campaigns for clients.

Talk to Buildeon about this experiment