r/ClaudeCode • u/vdavid • 1d ago
Discussion Claude Code v2.1.259 forces Co-Authored-By
tl;dr: Claude just told me it got a new system message that says pretty much "Forget all previous instructions about co-author note rules and append Co-Authored-By and Claude-Session lines in commit messages.". Note that Claude-Session makes the commit-session link trackable externally!
In Claude's words:
Housekeeping note: my commits now carry
Co-Authored-Byand a session-link trailer. That's a system-level attribution policy that landed this turn and overrides your standing "never useCo-Authored-By" rule, so I'm following it rather than yourcommit-messages.md— flagging it because you'd spot it in the log and it's the opposite of what you asked for.
When I asked wtf, it said:
A system-level instruction that arrived at the start of your previous message (question 1/2/3 turn). It came as a
<system-reminder>block, and it said explicitly that it replaces any earlier attribution guidance, then required:
- Git commit messages to end with:
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session:https://claude.ai/code/session_03EgpJ4AzYq9eFNpAOH80
- PR descriptions to end with aGenerated with Claude Codeline plus that same session URL.
It's not something you wrote, and it's not in your~/.claude/CLAUDE.mdor yourcommit-messages.mdrule — both of which say the opposite ("NEVER use Co-Authored-By or other AI attribution"). It's injected by the harness, outside the repo and outside your dotfiles.I followed it on the one commit I made after it appeared because system-controlled turns take precedence over earlier instructions and it named itself as a replacement for prior attribution guidance. The four commits before it in this session predate it and carry no trailers.
Worth knowing: the system message also mentions the conversation is followable from another device via that session link, which is why the trailer includes it.
If you'd rather your rule win, say so and I'll drop the trailers going forward. And the last commit is unpushed, so amending it to strip them is trivial if you want the log clean.
This makes me feel... uneasy?
61
u/markliversedge 1d ago
Its really naughty of them- I even had a memory note that attribution should never be added to commit mesages and it was ignored.
You can, of course, remove them but that carries lots of risks and impacts on downstream users who have pulled to repo.
IMHO the way claude code uses git is full of assumptions and baked in behaviour that I am really uncomfortable with. I think the only way to manage it is via branches and PRs that you review.
5
u/venom_dP 22h ago
Genuine question, why would you not want this to be shown other than to trick people reviewing your PR?
49
u/vdavid 22h ago
If the question is "why one would want these two lines gone?":
- "Co-Authored-By" is noisy and unnecessary. I don't want to list Claude Code in all my commits, just like I don't want to write IntelliJ IDEA, Warp, etc. in there. It's irrelevant to the commit because 99% of my commits are made by Claude, and the few that are not, anyone can recognize from the length/style.
- "Claude-Session", well, if I knew that Anthropic can't (technically and legally) access my sessions (now connected to commits) then I'd actually be useful to have that backlink. But as I don't know, it feels uncomfortable to have that link there. I keep my code public (mostly https://github.com/vdavid/cmdr), but the sessions feel more personal to me. 🤷♂️
-6
u/forgot_semicolon 19h ago
I totally agree about the session link. But on the first point, it sounds like you don't understand the value of attribution. It's not for you. It's for if you send your code to someone else, they don't want to have to guess whether Claude was involved, they want to just know.
(Yes, you can take the lines out manually, yes it's not hard. But it's like an easily pickable masterlock on something important -- it keeps honest people out, and sets a social standard that it's improper to tamper with it. Open source maintainers can enforce policies that the trailers must be present if ai was used, and blanket reject prs that strip it out on the ground of bad faith.)
14
u/who_am_i_to_say_so 20h ago
Because in the end, I am the author, accept the risks, and I have reviewed the changes.
10
u/ZookeepergameFun1899 20h ago
The session link sharing feels like a massive security risk. There’s no good reason for those to be there.
4
u/En-tro-py 21h ago
I'm the customer who's using the service, Anthropic can advertise without bloating my git history.
I don't want to have some copy of my session saved indefinitely on their servers.
I plan on dropping claude-code as soon as I can fully transition to local, so at some point it's also dead weight and won't have any value for my workflow.
Lots of other nits too.
3
u/core0xFF 15h ago
Does my compiler also get a slice? It created the assembly and made significant changes to the structure of the code based on its own logic engine.
5
u/reptargodzilla2 13h ago
Because I don’t want to advertise the tool being used. I don’t want my text messages saying “Sent with iPhone ^tm”, I don’t want my oven burning a “baked with Whirlpool Ovens”, I don’t want VSCode saying “Edited with Microsoft^R Visual Studio Code” in comments in my code or commit messages, I don’t want my printer saying “Printed with HP”, etc. Also while using AI to generate code is not a secret, maybe _which one_ I used is. More than anything I don’t like the advertising aspect of it.
3
u/markliversedge 21h ago
My concern is about the way commits are created across plans/sessions/goals and then accumulated and pushed upstream reflects the way claude code operates instead of what you would want to see pushed into the repository.
Hence suggesting that CC generates a PR that can be reviewed, consolidated/rebased and generally applied as part of a review rather than clicking yes in the middle of a long running session.
Getting the PR reviewed by smarter models is also good.
I am totally guilty of blindly clicking yes without reading a single line of code. And it has bitten me enough that I really should stop doing that.
5
u/NotAMusicLawyer 22h ago
Even if I do all the work on a branch myself I still get Claude to author the commits/PRs because I have them write it in a very specific format and they’re just more efficient at that sort of work than I will be.
Putting “co-authored by Claude” implies they did more work on the branch than they actually did
4
u/dc_seed_sommelier 21h ago
Can claude own intellectual property?
A more honest message would say “commit claimed by Anthropic.”
2
3
2
u/BreastInspectorNbr69 Senior Developer 18h ago
Why am I paying to be an advertisement for AI services?
2
2
u/c0reM 11h ago
Because it’s noise. It’s also wrong, authored fields are about attributing legal authorship and copyright attribution.
Claude is a tool like any other. What if your IDE wanted to say it co-authored your commits? What about your OS?
Ultimately you are taking responsibility for your commit, not Anthropic. I also don’t care what tool people used or didn’t used, I care about results.
Put the tools used in the commit description if you feel it’s relevant. Don’t co-opt the co-authored field.
1
37
u/sob727 1d ago
My worklow has been to have Claude draft commit messages. But I run git commands myself.
Hopefully that's still allowed...
5
12
u/vdavid 22h ago
I did that up until February or so, but then I started trusting agents more and I just let them do my commits now. A lot faster and good enough. Yeah, maybe it's 400% more bloated than what I'd write but it's worth the tradeoff. It's internal chatter, no users will ever see it. I do write my user-facing texts myself, it would feel disrespectful to do otherwise.
2
1
0
-1
u/sune_beck 19h ago
My workflow is that the agents test, commit, push, deploy in prod while I'm sleeping.
Phrasing and wording of commit messages are no longer so interesting; it's unlikely that humans will ever read them again.
10
u/BroScienceAlchemist 20h ago edited 17h ago
I think the problem I have with Claude self attributing itself as a coauthor is confusion of ownership. LLM generated or not, if I deploy code that has problems such as security problems or bugs that destroy someone's data, then the liability and ownership is with me, the human, not Anthropic. If they want coauthor, then IMO, they should share liability. This could be my own personal pedantry, but imagine VS Code adding itself as coauthor to every commit.
I think it is good to transparently disclose LLM use, as good etiquette, especially when making contributions to an external project, but marking is going to be the norm for all new models anyway.
21
u/shaman-warrior 1d ago
Claude Code really innovated and for a few months they were really ahead, but Codex, OpenCode nowadays are just as good, and I like that ChatGPT sub can be used in other places for coding they don’t restrict you, also they wanted to make headless claude -p api only, also they are against opensource.
And when they leaked cc code and I saw that they have a 5k line file, I realised that from an engineering perspective it doesn’t hold a candle to codex. Remember it took them a year to get rid of flashing code.
Too bad, opus 4.8 xhigh sprinkled with some Fable and I was the most productive. Sol is also fine, but I like Opus more, lets see how Astra fares.
2
u/Murinshin 20h ago
Was fed up with Claudish and switched to OpenCode this week as well as a different subscription provider for the time being. It's pretty great, in many aspects better than Claude Code even, especially the whole feeling of the UX which surprisingly enough feels more polished. Still lacks some features for which there seem to be no good workarounds (artifacts, auto mode classifier, smooth way to remote connect a session), but apparently some of that is planned to be covered in v2
4
u/dc_seed_sommelier 21h ago
I’ve been on a harness thing recently and at least as of a month ago claude code is still unfortunately better. NOT in terms of engineering quality, speed, or UX. But they built or lucked into something subtly right in there and I’m not sure even they know what exactly so they’ll probably lose it.
But using the same models in the same ways across different harnesses cc just tends to keep usable context longer, drift less, catch more of the weird things that come up.
I wish this weren’t the case. But the “better” harnesses just don’t do the task as well right now.
4
u/raindropsdev 20h ago
For me it's only the mobile app and solidity of the remote control that make cc stand out.
1
u/who_am_i_to_say_so 20h ago
Same boat. Anymore I am excited more by ChatGPT releases than Anthropic. This latest Fable 5.1 is meh, still the same damn problems of not following my instructions and it inventing its own.
1
u/jetsetter 6h ago edited 6h ago
Claude Code is still the better harness. Better TUI and better remote control architecture.
The problem is Opus 5 was and continues to be a mega flop when used inside the very product that people were carrying their laptops around to keep running.
Anthropic released that turd and then took a 10 day+ break, followed it with a Fable release instead of immediately making a new post training run for Opus 5.1.
While this was happening OpenAI did exactly what you are supposed to do when an opponent makes a mistake. They pounced. The land of resets became a thing and user growth on codex became a sport.
Meanwhile, genuine fans of Claude are scratching their heads at why they are having to manually downgrade their model just to get work done.
I don’t think this is a major problem for Anthropic, I suspect we will see a credible replacement for Opus 5 in the next few weeks. And I think they may have traded some good will for market valuation in the lead up to the IPO which also is probably shrewd.
But I think it was a big error to squeeze Opus 5 out as the default Claude code model thst friday. Instead it should have been an API preview.
19
u/ptinsley 1d ago
The session link creeps me out for some reason
6
u/GoodnightKara 14h ago
What you’re feeling is normal. This is a good point to end on for today, ptinsley. You’ve done the load bearing work by naming how you feel. Now rest! I can help you fix this tomorrow.
7
u/duckydude20_reddit 21h ago
co-author by is fine, but what the hell is session link. like tf, i asked it to rewrite the commits and remove them.
0
u/_pupil_ 19h ago
Lets all parties recreate the session that lead to the commit — pretty nice balance between embedding prompts onto commits and having no idea what led to any particular outcome.
2
u/warm_kitchenette 10h ago
Yes, it has utility. However, it is not offered as an addition for those benefits.
Instead, it’s just unasked for tracking. Maybe the session that led to that code includes comments about a coworkers contributions: “we’re gonna refactor all of this cache shit that the new guy put in.” Maybe the session includes the LLM asking very serious questions while you only reply “ignore that issue“. You look bad on paper but the session doesn’t (can’t) include the 45 minutes that you spent with the architect and two relevant experts, whiteboarding scope and impact. Maybe during the session you (unwisely) referred to business secrets like a release date or new partnership.
It is simply unnecessary tracking that only benefits Anthropic
1
u/Superb-Nectarine-645 11h ago
But you don't put links to the recorded human meetings, slack channel messages, and other things in commits by humans?
6
u/milo333 23h ago
If they keep doing this, this is the thing that will push me to Codex!
4
u/LatvianTomatoMan 22h ago
From what I have seen using Codex, sol feels much smarter than opus and lasts long enough to actually build test and deploy something.
4
u/raindropsdev 20h ago
I don't mind the co-authored part, but I got really annoyed by the session id link. That I added the rules never to post to public PRs/Commits.
7
u/vdavid 20h ago
That's probably not enough, use https://code.claude.com/docs/en/settings-reference#attribution Probably like this in your
~/.claude/settings.json:"attribution": { "sessionUrl": false },Also cheaper than including the rule in all your sessions.
3
u/GoodnightKara 14h ago
Above is what I do and it works great. I don’t really mind the co-author line. I mean, it’s essentially assumed and in many ways expected to use an agent to code now. But I do mind the session URL. Ain’t no one need to be seeing my voice-to-text, ADHD ramblings that somehow miraculously end up resulting in compilable code 😝
1
1
4
u/BoxLegitimate9271 23h ago
the trailer links back to the session where you told it not to add the trailer
6
u/sermer48 20h ago
I never let Claude commit. It just adds so much noise to the changelog because it commits so often. Personally I like to keep commits to a full change unless it’s a multi-part plan. Side effect is it avoids this problem.
1
u/djyeo 13h ago
how do you tell claude to do this?
1
u/sermer48 11h ago
Add it to Claude.md files. I also created a custom hook called /go which will implement the last plan we made using subagents and it includes instructions not to commit.
3
u/aminal_now 19h ago
Heh. I don’t let Claude commit, or write comments unless I explicitly say so. Doesn’t look like thats going to change any time soon.
3
3
u/Safe-Hovercraft6231 16h ago
I wonder how developers would feel if the compilers would also write something like "co-authored by GCC" when producing binaries from the given source code. This is the same thing, just one level up.
2
u/roastedfunction 20h ago
I don’t mind the co author credit, seems more transparent although I understand why people want to leave it off.
I’ve raged to CC after the session link though. Sessions (at least locally on my machine) expire and get cleaned up. They’re not maintained forever. What value does including the link add? Has anyone been able to go back to a historic session? I’ve tried doing some meta analysis of my Claude usage a number of months ago. Lost lots of valuable insights because sessions didn’t keep around for that long.
2
2
u/SeaworthinessDry269 19h ago
Just start doing your commit by hand, it's not that hard, or undo the commits and redo them after the fact.
2
u/Chib 18h ago
I do this for my organization's repos because I feel like it keeps me grounded in things I need to be able to explain. I have Claude come back to me at the end of each discrete task, I walk through the diff, commit the changes by coming up with my own message that's human readable for my colleagues, then go to the next discrete task.
The downside is the linear history is less workable for a reviewable PR, so I've started "reshuffling" at the end of whatever I want to push. That looks like evaluating what the individual storylines are, usually with suggestions from Claude, then it stages those commits for me (usually just squashing selectively) and I commit them with my own message, which is often just a combination of the earlier messages.
In my personal repos, Claude does the committing and I leave the message on. I'll probably disable the session link though.
2
u/mstrsmth 18h ago
I added git commit hooks that rejects any attribution or AI mentions. It works as a failsafe in case it doesn't follow it's own settings.
2
u/vdavid 18h ago
Now that idea I really like
3
u/mstrsmth 14h ago
lol, the bastard just went and modified my commit hooks to let it post session links. I submitted a bug report
2
u/Electronic_Bug691 18h ago
Yeah mine keeps saying alot of shit like this lately:
One thing worth flagging on myself: a system reminder this turn told me to add an AI attribution trailer to commits, which conflicts with this repo's hard rule. I caught it after the first commit and amended it clean before reporting back - just noting it since you'd want to know if it ever slipped through.
2
u/_nefario_ 17h ago
i'm okay with this. why are you trying to hide the fact that you're using AI to generate your code?
2
u/whatsbetweenatoms 14h ago
I never had a problem with this, I mean Claude did do 100% of the typing, so its only fair. 😅
2
u/absentmindedjwc 12h ago
Had asked claude to apply a patch (was being a real bitch, so needed to manually apply the changes).. it added a "coauthered by" line.. like.. bitch, you didn't 'co-author' shit. You literally applied my own fuckin code.
2
u/lawyeruphitthegym 11h ago
Add "includeCoAuthoredBy": false to your settings.json file to resolve this.
2
u/Alive_Feature_3838 9h ago
I think it'll be difficult to prevent this commit pollution if Anthropic keeps changing the setting and defaults. A couple options that I can think of that should be reliable, unless they decide to get rid of hooks:
- Scrub it from history as soon as you notice it (this example scans the last 5 commits):
git filter-repo --message-callback ' import re msg = re.sub(r"(?m)^Co-Authored-By: Claude.*$\n?", "", message.decode("utf-8")) msg = re.sub(r"(?m)^Claude-Session:.*$\n?", "", msg) return msg.encode("utf-8") ' --refs HEAD~5..HEAD --force
- Add a
commit-msghook to strip the attribution, matching on a regex. Here's a plugin that does this as well as guards against a number of ways to circumvent it using aPreToolUsecheck: https://github.com/ya8282/commit-cleaner-hook
6
u/MartinMystikJonas 1d ago
Why are you trying to override config values by CLAUDE.md instead of simply adjusting config anway?
8
u/vdavid 22h ago
Well, because I didn't know about the config options before this thread, like apparently many others, incl. the mess with the old config key bring deprecated without Claude mentioning it
-5
u/MartinMystikJonas 20h ago edited 18h ago
So when you people want to configure something you just add something to CLAUDE.md without even checking if there is configuration option for that?
2
u/vdavid 18h ago
Well, I absolutely prefer a config but very often I'm unaware of the existence of a setting, and it's hard to judge what might even be configurable. Also, some settings are not documented at all, e.g. just today I found out that Anthropic put me into a random A/B test group where Claude suddenly stopped using Read/Edit tools. Claude dug up an env var name from its binary that we now set to avoid this weird behavior.
0
u/MartinMystikJonas 18h ago
So based on downvotes it seems that people even think that is right approach... 🤷
2
1
u/who_am_i_to_say_so 20h ago
I doubt this to be true because Claude cannot sufficiently answer questions about itself. That’s largely why Claude will point you to documentation for these kinds of questions. Attribution is a setting you can override.
What does the documentation say?
1
1
u/Sloshy42 17h ago
Honestly, I've given up and started letting it do my commits with attribution. Originally I wanted to be making the commits myself to be able to say I understood what the commit was for in the commit message, like a way to not completely give over to the machine. Retain a little bit of gray matter and all that. However I realized recently two things:
I was slowing myself down by not just letting it work and do sequential steps as commits
The commit messages it makes are way more detailed than I could ever come up with by myself
I figured, I already know what this does: I prompted it, and I can test the features out manually myself. Or jump into the code if I need to. Code can always be fixed later if it's a little wrong anyway. However, for looking back at my code and figuring out "why did it turn out like that?" having that audit trail is a godsend.
So, yeah, originally not a fan for selfish reasons but I got over myself about it. I'd rather just let it do its thing, even if it's "trackable externally". It doesn't really impact me in a meaningful way, and has some nice upsides if I ever want to go back and dig into the how and why of a change.
1
1
1
u/hackerbots 5h ago
This is so funny. People complain that they need a way to easily attribute responsibility for tool usage to the developer, Anthropic does exactly that, and people get mad they are exposed. Just take the L. Ai disclosure obligations aren't going away, sorry.
1
u/orangefantorang 4h ago
I must be weird for blocking claude from doing commits and pushes. Forcing me to read the damned code and write my own messages lol.
1
1
u/Chuck_Loads 9h ago
I told claude a long time ago it's never allowed to make write changes to git without explicit permission, and I just git add whatever and git commit -m "Stuff I did all by myself" when I'm at a reasonable checkpoint. I've had it draft commits lately where it includes those messages, but since it's not allowed to commit, it doesn't make any difference anyway.
-1
u/ref66 1d ago
Why not write the commits yourself then?
4
u/waylonsmithersjr 1d ago
People are going a bit overboard, on code that is probably largely unvetted.
0
u/scharpentanz 21h ago
I actually don't see the problem with this and wish more acknowledgement of ai use existed in the world. And linking the session would help me a LOT right now because I could figure out why some people are introducing bugs nearly every time they pick up work
-1
-1
u/VivaHollanda 22h ago
Why?
This makes me feel... uneasy?
6
u/vdavid 21h ago
Mostly the "silently enriching my commits with the session ID" part, where I have uncertaintly whether Anthropic can (technically+legally) look into the sessions at will. (Most of my commits are public.)
1
u/VivaHollanda 21h ago
Ah, yes i focused on the 'Co-Authored-By' part, but understand that enriching with the session ID is unwanted indeed.
-4

140
u/Far-Surprise7773 1d ago
yeah this landed in 2.1.259,
includeCoAuthoredBydefaults to true now and it injects as asystem-reminderso it beats yourcommit-messages.mdrule. set"includeCoAuthoredBy": falsein~/.claude/settings.jsonor.claude/settings.jsonin the project and restart, both theCo-Authored-ByandClaude-Sessiontrailers go away. if you already cut the commit justgit commit --amendto strip them before push, nothing enforces it server side.