QGIS Votes to Ban All AI-Assisted Code Contributions, Eight Months After Allowing Them
TL;DR
QGIS, the open-source desktop GIS that dates to 2002 and lists more than 800 contributors on GitHub, has banned AI from its codebase. QEP 428, declared approved on October 7, replaces the project's January "human in the loop" policy with two sentences: no LLM, AI or agent-assisted code contributions are allowed in the main repository, and anyone later found to have used one faces code reversion and sanctions on their contributor rights. The trigger was not a flood of pull requests. GitHub shows QGIS opened 267 PRs in September against 190 in August. The trigger was review cost: core developer Stelios Mavrommatis counted roughly 50 PRs tagged AI Assisted under the old policy, about 40 of which were closed without merging, and core developer Nyall Dawson says the project "already lost at least one extremely high value contributor" over the fallout. A carve-out for contributors with 100 or more merged PRs (QEP 429) landed two days later and is already drawing -1 votes, including Dawson's.
Two sentences replace 140 lines
The diff is the story. The QEP 408 policy that Even Rouault wrote on January 31 ran to about 140 lines: use whatever tools you like, read everything the model wrote, label it with an Assisted-by: trailer, be able to answer questions about it in review, and no autonomous agents acting in project spaces. It borrowed Nadia Eghbal's idea of the "extractive contribution," a patch whose review costs the maintainers more than it is worth, and gave maintainers a canned rejection paragraph to paste.
Version 2.0, merged October 7, deletes all of that and leaves this:
No LLM, AI or agent assisted code contributions are allowed in the https://github.com/qgis/qgis repository. If we subsequently discover that you have used an AI, LLM, or any agent-based workflow for your contribution, you will be subject to code reversion and contributor rights sanctioning.
Dawson framed it as a reset. The intention, he wrote on the proposal, is to "start with a closed door, which we can then selectively open a little if/when it's safe and proper discussion has been made." Elsewhere in the thread he put it less diplomatically: "we correct by slamming the door shut, and then choosing later how far we want to inch it open."
How a permissive policy died in eight months
The first crack came from a neighbor. On June 21, Rouault, who also maintains GDAL, wrote to the OSGeo board that the PostGIS project "has embraced LLM tools at an industrial (= inhuman) scale," citing "a rage of opened (and merged) pull requests" in the preceding days. Two days later Dawson asked the QGIS developer list to tighten its own rules toward GDAL's model, which bans vibe-coded submissions and limits LLMs to autocomplete and mechanical refactoring.
That discussion simmered until September 15, when Dawson sent two proposals. The first was an immediate moratorium on anything LLM-assisted, with a single exception for using a model as a replacement for web search, because "the web is broken in 2026." The second was a "proof of life" requirement for new contributors: a small financial donation before the project accepts anything from you, or failing that, an in-person meeting with an existing contributor.
Six days later he merged a PR template change stating that "NO pull requests involving code written in any part by AI/LLM/automated agents will be accepted in any form," with immediate bans for violators. The same commit added an AGENTS.md file at the repository root instructing any coding agent pointed at QGIS to tell its user that development is prohibited and refuse to proceed. A file addressed to the robots, asking them politely to leave.
PSC member Tim Sutton asked for the template to be rolled back so the decision could go through the project's formal QEP process. Dawson reverted it on September 24, opened QEP 428 the same morning, and asked the steering committee to be ready to use its override power if the discussion got derailed. It did not need to. The proposal moved to a vote on October 5 and was declared approved on October 7 with +1s from Rouault, Alexander Bruy, David Signer and Alessandro Pasotti, plus Vincent Picavet and Germán Carrillo on either side of the declaration. Denis Rouzaud abstained with a +0 and promised a follow-up QEP.
The numbers maintainers put on the table
The best data in the thread came from a skeptic. Mavrommatis asked what the policy was protecting against and where the old one had failed, and supplied his own answer: the extractive tag the January policy called for was never created, roughly 50 PRs were tagged AI Assisted, and about 40 of those were closed without merging. Régis Haubourg added a detail from the security side: since QGIS opened its advisory system, "100% of the submitted security advisories are written using AI," though most concern the project's websites rather than QGIS core.
Haubourg's case for going further than disclosure was about capacity. External AI use "puts a massive and unbearable pressure on the shoulders of our maintainers," he wrote, and "AI stream is a lot higher than what human review can take seriously," leaving the project to choose between a growing unreviewed queue and merging code nobody fully read. Think of a kitchen that suddenly gets free ingredients by the truckload but still has one chef who must taste every plate before it leaves.
The GitHub record backs the "cost per PR" framing more than a "flood" framing. We counted PRs opened against qgis/QGIS by month using GitHub's search API:
There is a human cost in the thread too. Dawson says the project has "already lost at least one extremely high value contributor" over the AI fallout. And one of the people the policy targets endorsed it. A contributor who had opened two AI-assisted regression fixes wrote that "LLMs give you the illusion that it's possible. A few tokens later, and the bug is fixed," and that by submitting them "we've broken a trust contract between the reviewer and the contributor." That contributor voted +1.
The carve-out fight has already started
Two days after the vote, Martin Dobias and Rouzaud filed QEP 429, drafted at the QGIS contributor meeting. It keeps the ban for everyone except "trusted contributors," defined as people with at least 100 merged PRs in qgis/QGIS. Those contributors could use AI tools if they label any generated content, read and review all of it, state that they own the code, and link a full transcript of the chat or agent session from the pull request.
Dawson is a -1. The proposal "would be a solution to the slop spam issue," he wrote, but "it doesn't do anything to address the legal, societal or environmental issues associated with llm use." Rouault's contribution was a suggested retitle: "Drugs with unspecified composition only allowed for grown-ups." Loïc Bartoletti is also -1, on the grounds that a two-tier rule is unfair to a newcomer who may understand a given subsystem better than a veteran. Pasotti pointed at the unsettled copyright status of machine-generated code as his main objection. As of October 13 the proposal is open with 17 comments and no vote scheduled.
The Hacker News thread on the ban passed 370 points and nearly 400 comments on October 12. A recurring piece of advice there: if a model one-shotted your fix, the maintainers can run the same model themselves, so file a precise issue instead of a PR and skip the review friction entirely.
Where QGIS now sits
QGIS joins a short list of projects at the hard end of the spectrum, and the spectrum has filled in fast this year:
- Gentoo banned AI-assisted contributions by council vote on April 14, 2024, citing copyright, quality and ethics.
- NetBSD's commit guidelines presume LLM-generated code is "tainted" and bar it without prior written approval from core.
- GDAL allows limited use: humans must be primary authors, vibe-coded submissions and agent submissions are banned, and any LLM use must be labeled.
- Godot's foundation announced on June 30 that AI may only do "menial things" like completion and regex, with autonomous agents and vibe coding an automatic ban, and new contributors (three or fewer merged PRs) barred from features without permission.
- Ghostty's policy is disclosure plus a public denouncement list for repeat offenders, with maintainers exempt because "they've proven themselves trustworthy."
- curl shut its bug bounty in January to remove the incentive behind AI-generated vulnerability reports.
Notice the pattern in the middle of that list. GDAL, Godot and Ghostty all converged on the same shape: tight rules for strangers, discretion for proven contributors. QEP 429 is QGIS trying to get there too, with a 100-PR bar that is far higher than Godot's three. The fight is over whether QGIS should get there at all.
What this means if you ship agent PRs
If you point Claude Code, Codex or anything similar at an open-source repo and open the result as a PR, the ground rules changed again, and they will keep changing project by project.
- Read the policy file first. A growing number of repos now have an
AI_POLICY.md, anAGENTS.md, or a section inCONTRIBUTING.md. QGIS briefly usedAGENTS.mdas a refusal instruction aimed at the agent itself. Expect more of that. - Issues beat PRs for drive-by fixes. A reproducible bug report with a root cause is welcome almost everywhere. An unsolicited 400-line patch from an account with no history is the exact artifact these policies exist to reject.
- Transcripts are becoming the price of admission. QEP 429's requirement to link the full agent session is the strictest disclosure rule we have seen proposed, and it is a reasonable guess at where "trusted contributor" exceptions land elsewhere.
- Reputation is now a hard gate. Three merged PRs at Godot, a hundred at QGIS if QEP 429 passes. Build the track record before you bring the robots.
Caveats
Enforcement is an honor system. Sutton said as much on the thread: "we are not set up to peer into your computer and look at what you did. You will know if your brain made the code." Jan Dalheimer flagged that the two-sentence policy never defines "assisted," so LLM-backed autocomplete, ML-ranked completions in JetBrains IDEs, and reading an AI answer in a Google search are all technically in scope. The monthly PR counts are our own GitHub search query, not a QGIS figure, and they count PRs opened, not reviewer hours. QEP 429 is unresolved, so the policy you read today may have an exception next month. And Dawson's "proof of life" donation requirement was never formalized; only the moratorium made it into a QEP.
Key Takeaways
- QGIS approved QEP 428 on October 7, 2026: no LLM, AI or agent-assisted code in qgis/QGIS, with reversion and sanctions for anyone caught after the fact.
- It replaces the human-in-the-loop policy adopted January 31, which asked only for disclosure and self-review. That policy lasted about eight months.
- Core developers reported roughly 50 PRs tagged AI Assisted under the old rules, about 40 closed without merging, and 100% of submitted security advisories written with AI.
- Monthly PR volume did not explode: 267 opened in September versus 190 in August. The complaint is review cost per PR.
- QEP 429 would let contributors with 100+ merged PRs use AI with labels, self-review, and a linked full transcript. Core developer Nyall Dawson is a -1 and the vote is pending.
- Gentoo, NetBSD, GDAL, Godot and Ghostty have all tightened in the same direction since 2024. If you ship agent-written PRs, read the policy file and build a track record first.
Sources: QEP 428 (PR #387), QEP 429 (PR #388), QEP 408 policy file, Nyall Dawson's September 15 proposals, June developer-list thread, OSGeo board thread on PostGIS, QGIS PR #67509, QGIS PR #67527, GDAL LLM tool policy, Gentoo AI policy, NetBSD commit guidelines, Godot Foundation, Ghostty AI policy, The Register on curl, Hacker News