The 10,000 most-starred repos split on whether their coding agent should sign its commits.
About 400 tell it to leave its name off. One of the most-starred web frameworks puts it in its CLAUDE.md:
Do NOT add "Generated with Claude Code" or co-author footers to commits or PRs
About 330 ask for the opposite: an Assisted-by: line or an AI co-author trailer, often inside a commit template the agent is told to follow. And about 30 of the repos that rule out the co-author line ask for Assisted-by: in its place.

What the rules go after
Mostly the trailer. More than half of the matches in the 465 repos with a rule against it name Co-Authored-By itself. In 295 of them the rule mentions commits, and in 112 it mentions pull requests. Two-thirds of the matches sit in main files like CLAUDE.md and AGENTS.md, which load in every session.
Most of these rules name no agent at all: 283 of the 465 repos write "no co-author trailer" or "no AI attribution" in general. 146 name only Claude. 36 name another agent, most often Codex, then Copilot and Cursor:
No
Co-authored-by: Copilotor any other co-author line. Ever.
The vendor-neutral file carries Claude-specific rules too. 77 of the 273 matches in AGENTS.md name Claude.
Who writes them
A rule about commit trailers matters once the agent makes commits, and the repos that write one run bigger, more built-out setups. Their median repo has 4 instruction files, against 2 across the report. 60% write for more than one agent, against 43%, and 17% ship an agent hook, against 7.6%.

They write firmer instructions too: 4.2 hedged instructions per 100 ("should", "try to") against 5.1, lower at every repo size.
Some want a different disclosure
137 repos ask for an Assisted-by: trailer, and about 30 of the repos that rule out the co-author line say to use Assisted-by: instead. The Rust compiler repo, rust-lang/rust, has both in one passage of its AGENTS.md:
LLM-assisted contributions must be disclosed as described in the policy's disclosure requirements. Lying about or concealing LLM use is a Code of Conduct violation. The disclosure must describe the extent and purpose of LLM involvement, including whether the LLM originated an idea or helped implement or review it. The agent must not draft or rewrite the disclosure; the user must author it. Do NOT add
Co-Authored-Bytrailers to commits.
Its last sentence reads like the framework's rule. The sentences above it give the reason: the project wants a person to write the disclosure.
The trailer is a default
Claude Code adds it unless told otherwise. Its settings docs: "Commits get a git trailer such as Co-Authored-By by default; pull request descriptions get plain text." Cursor's agents add a "Made with Cursor" trailer to commits and pull requests, on by default, with a switch in its settings and one for team admins. Cursor's staff add on its forum that a rule won't remove it, because the trailer "is added by Cursor at the tooling level, not by the model".
Cloud agents reverse the roles. GitHub's docs: Copilot cloud agent's commits "are authored by Copilot, with the developer who assigned the issue or requested the change to the pull request marked as the co-author". Cursor's cloud agents commit as Cursor Agent and add the person who started the session the same way, and per Cursor's staff that can't be turned off yet.
In Claude Code, a setting turns it off. In the project's .claude/settings.json:
{
"attribution": {
"commit": "",
"pr": "",
"sessionUrl": false
}
}
That's the form repos use: 49 set commit to an empty string and 44 set pr. Claude Code v2.1.281 and later also take "attribution": false, but earlier versions reject that value and skip the whole settings file that holds it. The strings can also carry your own text, such as an Assisted-by: line.
64 repos turn attribution off in a committed setting, and 54 of them write no rule about it at all. Of the 465 with a rule, 10 also use the setting.

The rule works too. The docs say "Claude Code tells Claude that your own instructions about attribution, such as a CLAUDE.md or memory rule, take precedence over these commit and PR lines". The setting changes what Claude Code adds in the first place, so it holds whether or not the agent follows the rule. Settings can also live in each developer's own ~/.claude/settings.json, which a repo snapshot can't see.
A hook catches the rest
A git commit-msg hook runs after the agent, or the tool behind it, has written the message, so it holds for every agent that commits on your machine. Some repos already run one ("the commit-msg hook will reject it", one CLAUDE.md warns), and Cursor's staff point to it as the workaround for the trailer its tooling adds. This one deletes AI attribution lines and keeps human co-authors:
#!/bin/sh
# .githooks/commit-msg
pattern='^(co-authored-by|made-with):.*(claude|copilot|cursor|codex|gemini|anthropic\.com)|generated with \[?claude code'
{ grep -viE "$pattern" "$1" || true; } > "$1.tmp" && mv "$1.tmp" "$1"
Commit it, make it executable, and run git config core.hooksPath .githooks once per clone. It covers commits only, so pull request text still needs the settings, and it can't reach cloud agents, which commit on the vendor's machines. In Claude Code, a PreToolUse hook can also refuse a commit command that carries the trailer before it runs; Prompts steer, hooks enforce covers how.
A rule every agent reads
The setting is Claude Code's. A rule in AGENTS.md reaches every agent that loads the file, which is the reason to keep one when the repo serves more than one agent. Where the tool adds the trailer itself, as in Cursor, the rule states the policy and the setting or the hook carries it out. Written with the directives first, then context, and the constraint last, it could read:
- Write commit messages in the format described in `CONTRIBUTING.md`.
- Add an `Assisted-by:` trailer only with text the user gives you.
- The project records AI assistance through the person committing the change.
- *Never add your own name to a commit or pull request.*
The constraint is in italics and rules out the trailer without naming it. In a CLAUDE.md of their own, these lines score 9.4 on ails check.
Check yours
The checker scores an attribution rule like any other instruction. The framework's rule quoted at the top draws a finding for a constraint written outside italics. Each run checks one agent's files; the second command switches to Copilot, and cursor, codex and antigravity (for GEMINI.md) work the same way.
npx @reporails/cli check
npx @reporails/cli check --agent copilot
To find every attribution line, including rules that ask for a trailer and the attribution setting itself:
grep -niE "co-?authored|assisted-by|attribution|generated (by|with)" CLAUDE.md AGENTS.md .claude/settings.json 2>/dev/null
Read what comes back as one policy: what the agent may sign, where, and whether it lives in a sentence the agent reads or a setting it can't skip.
From The State of AI Instruction Quality: Q3 2026: 10,000 of the most-starred GitHub repos, 15,237 agent setups, September 2026 snapshot. The data behind the series is in the 2026-Q3 folder of reporails/reports.
A rule against the trailer counts when a line in an instruction file, outside code blocks, has "never", "do not", "don't", "avoid" or "no" followed within 50 characters by "co-authored", "attribution", "mention of Claude/AI/Anthropic" or "generated by/with Claude/AI": 465 of the 9,784 repos with a setup. In a hand-read sample of 40 distinct matching lines, 35 were AI-attribution rules; the rest used "attribution" in another sense, such as data or citations, so "about 400" stands for the 465. An ask counts when an instruction or a commit template in an instruction file asks for an Assisted-by: or AI co-author trailer: 327 repos, with 28 of 30 hand-checked asks real, so "about 330". Settings counts read the .claude/settings.json and .claude/settings.local.json files committed to the repo, 978 files in 959 repos.
I work on Reporails, deterministic diagnostics and governance for the instruction files, rules, and prompts that steer coding agents. It reads the instruction files your coding agent loads, from CLAUDE.md to Copilot and Cursor rules, measures which instructions couple to behavior, and points to the lines worth tightening.
