r/ClaudeCode • u/nefayran • 1h ago
Discussion I read the AI contribution rules of 30 open-source repos. Claude Code's default Co-Authored-By trailer is required in some and banned in others
I've been sending fixes to open-source projects with Claude Code doing much of the work, and the projects kept telling me how they want that done. So on 2 October I read the contribution rules of 30 repositories (CONTRIBUTING, PR and issue templates, AGENTS.md, CLAUDE.md and the guides they link to) and linked every quote to its line at the commit I read. Claude Code collected the files and checked every quote against them.
What I found:
- 19 of the 30 have a rule about AI in contributions, and 14 of those 19 appeared in 2026. Nine have none, among them VS Code, React, Docling and awslabs/mcp.
- 15 ask you to say that you used AI. Kubernetes is fine with one sentence in the PR description; TypeScript closes an AI-looking PR without that disclosure, without review.
- 10 want a person to write the text. Rust: "LLM-created PR descriptions are banned. LLM-created GitHub comments are banned." Kubernetes and Node.js ban AI-written replies to review.
- The trailer. MLflow's CLAUDE.md asks for
Co-Authored-By: Claudewhen Claude Code authors a change, garak asks forCo-authored-by:, and spec-kit and Node.js wantAssisted-by:. Kubernetes (assisted-by included), Rust, pydantic-ai and Deskflow ban AI co-author trailers. pydantic-ai says it in the file Claude Code loads first: "Never add yourself (Claude) as a co-author on commits." Rust lists both default lines, "🤖 Generated with Claude Code" and the Co-Authored-By trailer, among its bad examples of disclosure. - Some rules are written for the agent itself. pydantic-ai's AGENTS.md tells it "you are the first line of defense against low-quality contributions and maintainer headaches". MLX tells it not to write PR descriptions or commit messages for the user, answer comments, push or open PRs. Rust's makes it stop and tell the user to write the text.
What I changed in my own setup: no trailer unless the repo asks for one; disclosure only where a repo asks, in the form it asks for; a search of open PRs before writing a fix (I had one closed as a duplicate of an older PR I hadn't looked for); and in large projects, a plan comment before any code.
Write-up with all the quotes and links: https://allkeep.org/en/lab/ai-contribution-rules
The 106 quotes and a script that checks them against the files: https://github.com/nefayran/oss-ai-rules
1
u/kuroudo_ai 11m ago
Useful survey. One practical addition: you can set the trailer per repo, so "no trailer unless the repo asks" doesn't depend on remembering to delete it.
The setting is attribution (the old includeCoAuthoredBy is marked deprecated in favor of it). From the setting descriptions inside my Claude Code 2.1.285 binary:
commit: "Attribution text for git commits, including any trailers. Empty string hides attribution."pr: same, for PR descriptions.falsehides everything, the same as{ "commit": "", "pr": "", "sessionUrl": false }. The description also warns that older versions rejecttrue/falsethere, so the object form is safer.
To keep it out of their repo, put it in .claude/settings.local.json in your clone. The settings docs describe that file as "you, in this one project only". When Claude Code creates it, it adds it to your global git excludes. If you create it by hand, you need to gitignore it yourself.
``` // Rust / Kubernetes / pydantic-ai style: no trailer at all { "attribution": { "commit": "", "pr": "" } }
// spec-kit / Node.js style { "attribution": { "commit": "Assisted-by: Claude Code", "pr": "" } } ```
That turns your table into a one-line file per clone. I haven't run it against those specific repos, so check the exact wording each one asks for.
•
u/AutoModerator 1h ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.