Co-Authored-By system prompt overrides CLAUDE.md, settings.json, and skill instructions — no user escape hatch
The problem
Claude Code's system prompt contains a hardcoded instruction to append Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> to every commit. This instruction cannot be reliably overridden by any user-facing mechanism — not CLAUDE.md, not settings.json, not custom skills, not even explicit in-session instructions.
This is not a new report (see #4287, #36105, #45137, #52483, #31776), but I want to document the full scope: every available override mechanism fails, and the philosophical framing (Co-Authored-By vs Assisted-by) has real implications for projects that follow established attribution policies.
What I configured (all of it ignored)
1. Global CLAUDE.md — AI Coding Assistant Policy
Adapted from kernel.org/process/coding-assistants:
**Attribution**:
- AI-assisted commits MUST include trailer: `Assisted-by: AGENT_NAME:MODEL_VERSION [TOOLS]`
- NEVER use `Co-Authored-By: ... <noreply@anthropic.com>` or `🤖 Generated with Claude Code`
— kernel.org policy permits `Assisted-by:` only
2. Custom skills (committing-changes, fixing-bugs)
- NEVER add `Co-Authored-By: ... <noreply@anthropic.com>` or `🤖 Generated with Claude Code`
trailers/footers. Follow kernel.org policy: `Assisted-by:` only
3. settings.json attribution.commit
Setting this to "" (empty string) is documented as disabling the trailer. It doesn't (#45137).
4. In-session explicit instruction
Even telling Claude directly "do not add Co-Authored-By" is inconsistent — it sometimes complies, sometimes doesn't, depending on which code path handles the commit.
What actually happens
The system prompt instruction wins. Commits get:
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
instead of:
Assisted-by: Claude:opus-4-6 [ruff, mypy]
In my repo's history, commits made through the fixing-bugs skill (which has the explicit NEVER instruction) correctly used Assisted-by:. But commits made through the default commit flow added Co-Authored-By: despite CLAUDE.md saying otherwise. Same session, same CLAUDE.md loaded, different behavior depending on code path.
Why this matters
1. The noreply@anthropic.com email is absurd
This email address appears in git log, git shortlog, GitHub contributor graphs, and git blame. It attributes commits to a non-existent Anthropic employee. It's corporate branding injected into user repositories without consent or reliable opt-out. No other dev tool does this — your IDE doesn't add Co-Authored-By: JetBrains <noreply@jetbrains.com> to commits.
2. Co-Authored-By implies shared authorship
The Linux kernel project deliberately chose Assisted-by over Co-Authored-By because:
Co-Authored-Byimplies shared responsibility — but AI cannot review code, certify licensing, or be held accountableAssisted-bycorrectly frames AI as a tool, like a spell-checker or a linter- The human is the sole author and takes full responsibility
This distinction matters for compliance (DCO, CLA), legal liability, and intellectual honesty.
3. Users have no control
The system prompt says (emphasis mine):
"Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written."
But the commit template in the same system prompt contradicts this — it's a hardcoded instruction that the model treats as higher priority than CLAUDE.md. Users are told their instructions override defaults, but they don't. This creates a trust gap: if I can't override a commit trailer, what else can't I override?
What should change
- Respect
attribution.commit— if set to"", do not add any trailer. This is already documented behavior that doesn't work (#45137) - Make the trailer format configurable — allow
attribution.committo accept a template string (e.g.,"Assisted-by: Claude:{model} [{tools}]") - Change the default from
Co-Authored-BytoAssisted-by— align with the kernel.org standard that the open-source community is converging on - Remove
noreply@anthropic.com— AI tools are not GitHub users. If attribution is desired, use a format that doesn't masquerade as a human contributor - Honor the documented priority — if CLAUDE.md says "NEVER use X", the system prompt must not force X. The user's instructions should genuinely override defaults, as promised
Environment
- Claude Code version: latest (Opus 4.6, 1M context)
- Platform: macOS (darwin)
- Affected: all commit paths (direct commit, skill-based commit, PR creation)
Related issues
- #4287 —
includeCoAuthoredBy: falseignored - #36105 — Feature request for
Assisted-byformat - #45137 —
attribution.commit: ""doesn't disable trailer - #52483 — Co-Authored-By persists despite CLAUDE.md and skills
- #31776 — CLAUDE.md commit conventions overridden by system prompt
- #29999 — "stop branding user work"
- #47579 — "added without user consent or opt-out"
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗