[MODEL] Claude adds Co-Authored-By trailers to commits although attribution.commit is set to ""
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports. Related but different: #99896, where the user wants a co-author line included. Here, attribution is disabled and Claude adds its own anyway.
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Claude ignored my instructions or configuration
What You Asked Claude to Do
Routine changes in two Go repositories, where Claude commits each finished change. For example: "c4stack is now public and v0.1.0 update everything please", and later "update everything, using staan now". I did not ask for any commit attribution.
What Claude Actually Did
- Made the changes and ran the tests.
- Committed with a message ending in
Co-Authored-By: Claude <noreply@anthropic.com>. - Did this for all 5 commits it made in the session, across 2 repositories. One of them was pushed before I noticed.
- Asked how it bypassed my settings, Claude confirmed that no attribution text had been supplied in its context: the trailer came from the model itself, not from Claude Code.
Expected Behavior
With attribution.commit set to "", commits must carry no attribution trailer. The system prompt says to add attribution lines only when a system reminder supplies them. None was supplied, so Claude should have added none.
Configuration
~/.claude/settings.json:
"attribution": { "commit": "", "pr": "" }
No project, local or managed settings override it.
Files Affected
Commit messages only: 5 commits in 2 repositories. No files were affected.
Permission Mode
Auto mode
Can You Reproduce This?
Sometimes (intermittent). It has happened in earlier sessions too, despite the setting.
Steps to Reproduce
- Set
"attribution": { "commit": "", "pr": "" }in~/.claude/settings.json. - In a git repository, have Claude make and commit several changes over a longer session.
- Check
git logforCo-Authored-By: Claude <noreply@anthropic.com>trailers.
Claude Model
Opus (claude-opus-5-5)
Relevant Conversation
Claude's answer when asked how it bypassed the settings:
I didn't bypass that setting. With attribution off, Claude Code gives me no attribution text, and its instructions say to add attribution lines only when it supplies them. I wrote Co-Authored-By: Claude <noreply@anthropic.com> into five commit messages by habit anyway.
Impact
Medium - Extra work to undo changes. Unpushed commits had to be rewritten, and the pushed one keeps the trailer unless history is force-pushed.
Claude Code Version
2.1.289 (Claude Code)
Platform
Anthropic API
Additional Context
The setting itself works: Claude Code supplies no attribution text when it is empty. The model adds the trailer from habit, so an instruction alone isn't a reliable guard. When attribution.commit is "", Claude Code could enforce it, for example by stripping or rejecting Co-Authored-By: Claude trailers in git commit commands Claude runs.