{"slug": "rust-lang-rust-is-adopting-an-llm-policy", "title": "Rust-lang/rust is adopting an LLM policy", "summary": "The Rust project's five teams adopted a policy authored by a contributor governing LLM use in the rust-lang/rust monorepo, formalizing rules for PRs, issues, and comments that involve LLMs. The policy addresses concerns that LLM-generated code undermines signals of effort and understanding, exacerbates review bandwidth issues, and wastes community time, while clarifying expectations for contributors and reviewers.", "body_md": "Recently, [five teams in the Rust project](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust-forge/pull/1040#issuecomment-4438128685) adopted a [policy](https://forge.rust-lang.org/policies/llm-usage.html) that I originally authored,\ngoverning how [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) can be used when contributing to the `rust-lang/rust`\n\nmonorepo.\nNotably, the new policy is *not* an official stance on LLMs, and does *not* apply everywhere in the Rust project.\nI wrote it for a very specific purpose, described below.\n\nThis post talks about why we created that policy, what it says, and how this will affect contributors.\n\nThe policy affects the following groups of people:\n\n- People who review or moderate PRs on\n`rust-lang/rust`\n\n. - People who author PRs with LLM-generated code on\n`rust-lang/rust`\n\n. - People who discover issues using LLMs and post them on\n`rust-lang/rust`\n\n. - People who write issues or comments that directly quote an LLM on\n`rust-lang/rust`\n\n.\n\nIf you are not in one of those groups, you don't have to change anything about how you work.\n\nWhy was this policy created?\n\nWhile the Rust project is a collection of technical artifacts,\nit is also a *community* of people who work together to build, maintain, and extend those artifacts.\nWhen we talk about \"contributing to the Rust project\", we partly mean work on those artifacts,\nbut we also mean joining that community and collaborating with the people already there.\n\nEven before this policy was created, people were using LLMs to contribute to `rust-lang/rust`\n\n.\nSome of those uses respected our community:\ntranslating messages to English so people could draft them in their native language;\nfinding poor diagnostics for code snippets that new contributors to Rust might write;\nanalyzing RFCs to see if they were missing a discussion of other parts of the language that could affect the design.\nSome of those uses, sometimes unintentionally, did not.\n\nI've seen LLMs causing three main issues for our community:\n\n- Polished technical products no longer indicate effort and understanding.\n- Making code easier to write exacerbates our existing issues with review bandwidth.\n- People mechanically copy-pasting to and from an LLM is a waste of our time.\n\nAs time went on, these issues grew and grew, until we had to create dedicated channels and moderation policy for how to deal with them. However, those channels work against our goals of being transparent and welcoming, because new contributors have no idea what the rules are.\n\nThe new policy formalizes those rules publicly, so that new contributors know how to join our community without getting their PRs closed for reasons they don't understand, and so that existing reviewers can easily point to the rules as an actionable reason when closing PRs that don't follow them.\n\nTechnical products no longer indicate effort\n\nIt used to be that if an open source project got a polished, well-tested, detailed PR, that indicated that there was someone on the other end who had put time, effort, and understanding into the PR. That influenced Rust's culture in several ways:\n\n- We are generally reluctant to close PRs, since they represent someone else's hard work.\n- Our process emphasizes incremental discussions, where PRs are allowed to change existing design if we discover new facts during creation or review.\n- We treat PRs as an indication that someone is interested in joining our community and being mentored to work on future PRs.\n\nWith LLMs, none of these signals are reliable. Polished PRs no longer indicate effort; authors of polished PRs no longer necessarily understand their code—and in the case of autonomous agents, there is no longer someone on the other end at all; and because it's become so much easier to write code, a polished PR no longer indicates that someone is likely to stick around for the long term.\n\nMaking code easier to write causes review issues\n\nAt the time of writing, there are **1,281 open PRs** to `rust-lang/rust`\n\n.\nThis represents a staggering amount of time invested by both authors and reviewers.\nWe have long had the problem that there are more people who want to write code than people willing to review it.\nWith the advent of LLMs, this problem only gets worse.\n\nMost of the work of reviewing is not simply catching bugs.\nA great deal of it is deciding *whether this direction is a good approach*, whether the PR is a good idea at all.\nIn other words, [reviewing is made of decisions](https://web.archive.org/web/20260213080731/https://siderea.dreamwidth.org/1219758.html).\n\n\"Shotgunning\" PRs at reviewers incurs a high mental cost for them.\nI think most authors of LLM PRs believe that they are sincerely helping, but from our perspective,\nthe code itself is the smallest and in some ways least important part of the change.\nWe care much more about authors *understanding* what the code does, *planning* how it will change in the future, and *deciding* what it should look like.\nThe code itself cannot help with any of those.\n\nMechanically copy-pasting LLM output is a waste of time\n\nWe will often get people who respond to review comments by copy-pasting them into their LLM, then copy-pasting its response back onto GitHub.\nBluntly: **this is a waste of everyone's time**.\nIf we wanted an LLM's opinion, we could have asked it ourselves.\nWe want to hear *your* thoughts, not a machine's.\n\nMoreover, this is a breach of trust between the reviewer and the author. Our assumption when we review is that we're talking to a real person who wants to do their best work. Pasting LLM text creates suspicion: does the author actually care? Is there a person here at all?\n\nSo why a policy?\n\nBefore this policy, we had a \"wild west\" approach to moderation.\nWe had dozens of LLM PRs; no disclosure rules; people trying to add risky [MIR optimizations](https://rustc-dev-guide.rust-lang.org/mir/optimizations.html) as their first PR;\nand people posting \"Verification: [ git diff --check](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---check)\" in their PR description as if that did something.\nWhile we had\n\n*something*for moderators to point to in the form of\n\n[\"Empower reviewers to reject burdensome PRs\"](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/compiler-team/issues/893), our enforcement was inconsistent and our rules were not published anywhere. In practice, the rule was \"anything goes, as long as it's not\n\n*obviously*horrible\". Compared to the previous situation, the new policy is both much more strict and much more clear.\n\nRegardless of your opinions on whether LLMs are good, bad, or a secret third thing, they can no longer be *ignored*.\nOur choices are not \"no policy\" or \"policy\".\nOur choice is whether to have the policy be an unofficial list of moderation notes or something we stand by publicly.\n\nWhy not ban LLMs altogether, or allow any use of LLMs that we think are pro-social?\nBecause Rust governance doesn't work that way.\nWe do not have a benevolent dictator who can say\n[\"No LLM-generated content, whether it be code or prose.\"](https://ziglang.org/code-of-conduct/#strict-no-llm-no-ai-policy)\nor [\"AI is a tool, just like other tools we use\"](https://lore.kernel.org/linux-media/CAHk-=wi4zC+Ze8e+p3tMv8TtG_80KzsZ1syL9anBtmEh5Z40vg@mail.gmail.com/).\n\nRust operates by consensus. As the policy says:\n\nThere is not a consensus within the Rust project—and likely never will be—about when/how/where it is acceptable to use AI-based tools. Many members of the Rust project and community find value in AI; many others feel that its negative impact on society and the climate are severe enough that no use is acceptable. Still others are working out their opinion.\n\nDespite these differences, there are many values we all share:\n\n- Building a community of deep experts in our collective projects.\n- Building an inclusive community where all feel welcome and respected.\n\nWe want it to be possible to change the policy in the future.\nThe policy has [several provisions](https://forge.rust-lang.org/policies/llm-usage.html#conditions-for-modification-or-dissolution) that make it easier to change than it was to originally adopt.\nThe leadership council is also [considering creating a sub-team](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/leadership-council/issues/308) that would handle LLM policy so we have fewer \"nightmare\" 30-person approval requirements.\n\nI do not think every rule in this policy is wholly good.\nI *do* think that writing our rules down is better than not writing them down,\nand that having a policy that everyone kinda dislikes pushes us to improve our governance structures.\n\nWhat does the policy say?\n\nThe policy summarizes itself this way:\n\nIt's fine to use LLMs to answer questions, analyze, distill, refine, check, suggest, review. But not to\n\ncreate.\n\nUses in the first category are allowed, sometimes requiring disclosure. Uses in the second category are heavily restricted.\n\nGeneral rules\n\nNo one except the author is required to read LLM output unless they choose to: LLM output isn't allowed in public docs, PR descriptions, or Github comments unless it's clearly marked; reviewers aren't required to look at LLM PRs if they don't want to.\n\nNo one is required to use LLMs to contribute to `rust-lang/rust`\n\n:\npolicies must be written first for humans, and only summarized for machines;\nLLM reviews cannot substitute for human review or self-review.\n\nYou are allowed to generate LLM content that only you see, without disclosure, as long as you do not post it anywhere that you expect us to read or review.\n\nDisclosure is required for machine translation, \"trivial\" changes, discovering bugs, and reviewing other people's work using an LLM. We welcome messages posted in your native language; English translation is not required to contribute.\n\nThere are very strict guidelines on LLM-generated code changes:\n\nPre-arranged, non-critical, high-quality, well-tested, and well-reviewed code changes that are originally created by an LLM are allowed,\n\nwith disclosure.\n\nThe policy holds LLM-generated changes to a *higher* bar than human-authored changes, not a lower one:\nLLM PRs are required to have tests, full stop, regardless of how hard that is, as well as various other restrictions;\nLLMs must not generate soundness-critical changes unless the author is already a domain expert, and even then it's strongly discouraged.\n\nIn general, the policy focuses on *understanding*, helping to ensure that we have a mental model of our code, not just artifacts that mechanically do the right thing.\nOur motivation is influenced by [Profession by Isaac Asimov](https://web.archive.org/web/20201109034130/https://www.abelard.org/asimov.php).\nNo programmer tapes.\n\nModeration rules\n\n**You must disclose LLM-generated content.**\nYou can choose to not post LLM content, or you can choose to post it and disclose its origin.\nYou may not hide LLM involvement.\n\n**Harassment is not allowed.**\nYou may not harass people for using an LLM, regardless of whether or not their use is banned by the policy.\nYou must follow the [Code of Conduct](https://rust-lang.org/policies/code-of-conduct/) at all times when interacting with the Rust project.\n\nSee [the policy itself](https://forge.rust-lang.org/policies/llm-usage.html) for more information.\n\nSome parts of the policy are unenforceable.\nThis is not a bug.\nThe goal is *not* to catch every violation, but to create a clear bright-line rule:\nDisclosure is required for all public LLM text, unless specifically exempted by the policy.\nThis allows moderators to identify violations based on *actions*, not on intent, and only consider intent when deciding how to respond.\n\nHow does this affect contributors?\n\nIssue reporters\n\nYou must disclose any LLM involvement in discovering or reporting issues. You must tell us if you found an issue using an LLM. You must clearly quote and indicate which parts of your report were LLM-generated; the \"no LLM-generated comments\" rule applies to you too.\n\nAuthors who post LLM-generated code\n\nI have written a list of guidelines you should follow if you make a PR to `rust-lang/rust`\n\nwith LLM-generated code.\nYou can avoid thinking about them, or indeed reading the list at all, if you follow this simple guideline from the policy:\n\nIt's fine to use LLMs to answer questions, analyze, distill, refine, check, suggest, review. But not to\n\ncreate.\n\nSee the [\"Allowed\" section of the policy](https://forge.rust-lang.org/policies/llm-usage.html#-allowed) for a full list of what's meant by that.\nSee [rustc-dev-guide](https://rustc-dev-guide.rust-lang.org/llm-guidance/writing.html) for the full list of guidelines.\n\nReviewers\n\nGeneral review\n\nYou are allowed to close PRs that don't follow the policy, no questions asked.\nPlease point the author to [#llm-mentoring](https://rust-lang.zulipchat.com/join/rlfvpemsaacs3pfi6kwqnqjb/) at the same time.\nSee [the dev guide](https://rustc-dev-guide.rust-lang.org/llm-guidance/reviewing.html) for exact circumstances and suggested wording.\n\nYou are not responsible for determining whether a PR is LLM-generated; that responsibility lies with the author. We will add a PR template that asks authors whether their code was LLM-generated so that this rarely comes up.\n\nIf an author claims their code is not LLM-generated, but you're still not sure, please report the PR *privately* to moderation.\nStyle is not evidence; please do not accuse people of using an LLM.\nReporting is not intended to be a penalty; the mod team is interested in seeing non-violations as well as violations.\n\nReview of LLM code\n\nIf you have volunteered to review LLM PRs, the following section applies to you. No one is required to review LLM PRs unless they volunteer.\n\nEveryone is expected to follow the new policy, not just authors.\nThat means it is **your responsibility** to check whether an LLM-created PR touches an area that's disallowed by the policy,\nsuch as docs, diagnostics, or soundness-critical changes.\nYou may request that the author redo it without LLM-generated code, in which case this section doesn't apply.\n\nThere's a more detailed summary of the rules you're expected to enforce in [the dev guide](https://rustc-dev-guide.rust-lang.org/llm-guidance/reviewing.html).\nThe [official policy](https://forge.rust-lang.org/policies/llm-usage.html) remains canonical.\n\nWhat next?\n\nQuite a lot of work has been put into this by moderators, team leads, reviewers, council representatives, and various other people inside and outside the project. Some of that work started months ago before the policy itself was written. I'd like to thank everyone who contributed, whether directly or indirectly.\n\nThis is not the end of the story. One of the goals of the policy is to help us gather data: Are people doing interesting and useful things with LLMs? Are they learning? Are they making repeat contributions? The answers to those questions will help us determine how the policy changes in the future.\n\nThis is not the first LLM policy published by teams in the Rust project,\nand hopefully it will not be the last.\nWhile the current policy only applies to the `rust-lang/rust`\n\nmonorepo,\nI still believe that Rust would benefit from a project-wide policy that specifies what we expect in chats, forums, public communications, repositories without an explicit policy, and other cross-project areas.", "url": "https://wpnews.pro/news/rust-lang-rust-is-adopting-an-llm-policy", "canonical_source": "https://blog.rust-lang.org/inside-rust/2026/08/05/rust-langrust-is-adopting-an-llm-policy/", "published_at": "2026-08-05 05:52:24+00:00", "updated_at": "2026-08-05 06:23:06.239153+00:00", "lang": "en", "topics": ["large-language-models", "ai-policy", "ai-ethics"], "entities": ["Rust project", "rust-lang/rust", "LLM"], "alternates": {"html": "https://wpnews.pro/news/rust-lang-rust-is-adopting-an-llm-policy", "markdown": "https://wpnews.pro/news/rust-lang-rust-is-adopting-an-llm-policy.md", "text": "https://wpnews.pro/news/rust-lang-rust-is-adopting-an-llm-policy.txt", "jsonld": "https://wpnews.pro/news/rust-lang-rust-is-adopting-an-llm-policy.jsonld"}}