Stop advertising in your commits

80 points by Aks a day ago on lobsters | 70 comments

technomancy | a day ago

Any tool that adds advertising to my commits or emails or whatever messages is a really bad one.

I mean, this is obviously very accurate, but the solution is to stop using bad tools, not to make your bad tool usage harder to detect.

Personally I appreciate that people who do this are so eager to tell on themselves.

[OP] Aks | a day ago

but the solution is to stop using bad tools, not to make your bad tool usage harder to detect.

I do agree, but I hope some people will stop and think why they suddenly think this behavior is even allowed.

edit: So yes, the real solution is just not to use tools that have advertisement in your product.

liberty | 23 hours ago

Many people find it to be important to avoid LLM-generated code. I don't think any move away from disclosure of LLMs is correct. Putting that information in commit-messages also makes it convenient to determine automatically whether or not codebases include LLM-generated code (such as with slopcheck).

Though I suppose the important thing is disclosure that an LLM was used, not which LLM was used. If those using such tools switched to that approach, it might mitigate the harm from advertising particular products while also accommodating the need for disclosure.

[OP] Aks | 23 hours ago

Yes, if it was just "this was generated by LLM" it would be fine, but now people are just giving free advertising to these companies.

This seems very nitpicky. "This was written by an LLM" both provides people information they might want, and also "advertises" LLMs, in the sense that it draws your attention to them. "This was written by Claude" both provides people information they might want, and also "advertises" Claude in the same sense. I don't think one is very different from the other.

It seems easy to imagine many reasons why someone might be interested in which LLM produced the commit, and I don't see a good reason to intentionally conceal it.

jackdk | 18 hours ago

If the message is "Sent from my iPhone"-tier, that's not detailed enough to be useful to maintainers or later readers and is just an ad. If it's "Handwritten, implementation discussed with Qwen3.6-27B" vs "Implemented by Pi Agent using Qwen3.6-27B" then you can actually do useful stuff with that information (example: if certain models were discovered to be particularly bad at certain changes, that would mean certain commits would warrant additional review).

I wonder if this ends with an LLM version of the Geek Code Block?

I think it depends how norms shake out. If the norm in a project is "everyone takes total responsibility for their own LLM-assisted commits, and understands and endorses them as well as any other contribution" then it's effectively just a normal tool and probably no metadata is important.

On the other end of the spectrum, if the norm is "everyone acts like the non-technical manager of a team of LLM programmers, and takes ~no responsibility for the details of the commit" then there should probably be more metadata about how the commit was created, as you say, since it would enable lots of possible iteration and analysis about what LLM-driven approaches were working and what weren't. (A really obvious one would be a link back to the Claude Code session, or equivalent.)

jackdk | 17 hours ago

I would really prefer the former world, FWIW, and extend that responsibility for one's output tokens to cover prose as well as code.

klardotsh | 14 hours ago

My AGENTS.md tells tools to do exactly that, for exactly this "in case it's discovered that model X does thing Y well/poorly" reason (and also for calling out "hey, this was in some part generated code" - I'm one of those pedants who also writes "this boilerplate generated by create-foo-app in commit messages / pull requests, though, so maybe I'm just overly transparent).

- You may never use the `Co-Authored-By` commit trailer, but you may use
  `AI-Assistant` in a similar manner, for example, if you are Opus 4.6 running
  within Claude Code, you could use: `AI-Assistant: Claude Code (Opus 4.6)`. If
  you are Sonnet 4.5 running within OpenCode, you could use `AI-Assistant:
  OpenCode (Claude Sonnet 4.5)`. Substitute whichever agent tool and model
  combination is being used.

And so recently I've had commits ending with: AI-Assistant: OpenCode (GLM-5.1-FP8) which is minimally invasive in the grand scheme of things (doesn't trigger the stupid avatar thing on sites that show co-author avatars), and moderately interesting for anyone who ever goes digging for that information.

Though the agent harness is pretty well useless information. That'll probably get trimmed out. The model is the interesting part.

ph14nix | 7 hours ago

People who use it regularly seem to have some idea of what models are good for what. Could they use some knowledge of what model was used for a certain PR? And commercial models are tied to a company.

I'd prefer to also see what prompts they produced it from. Prompts are much more digestible than tons of slop they produce. In practice there isn't just one prompt though, it's an interactive session, and I don't know how one would include that.

I've seen people commit the plan.md Claude used to write code with the PR. I think, this is the most sensible way to do it if you vibecode.

JulianSildenLanglo | 23 hours ago

I'd be pretty pissed if Visual Studio started tacking on "Made using Visual Studio" on my commits.


Sent using
Firefox 140.10.2esr (64-bit)
Debian GNU/Linux 13 (trixie) x86_64
Linux 6.12.86+deb13-amd64
Using locally sourced electricity from free range waterfalls

bitshift | 18 hours ago

As LLMs get more and more integrated, maybe someday we'll see:

Method names suggested by Microsoft IntelliSense (R) and Pyright (TM)
Grammar and spelling corrections by Apple Intelligence (R)

MoonlitKnight | 9 hours ago

Music by Stig Baasvik

Based on melodies originally whistled by Garth Marenghi

wbolster | 5 hours ago

thanks, i needed this. from now on, reading llm output will sound like marenghi in my head:

The accent comically undermines the often pretentious, absurd and grandiose things the character says. […] Marenghi displays a general ignorance of many subjects of which he claims knowledge.

very fitting indeed 🙃

bsandro | 11 hours ago

...

Typed with QWERTY keyboard layout.

Used 10 fingers attached to hands.

Used 2 hands attached to a body.

...

Now playing: "Never Gonna Give You Up" by Rick Astley (01:13/03:33)

moltonel | 7 hours ago

That's not a good comparison: what editor you used or what you were wearing that day is unlikely to affect the content of your commit, how it should be reviewed, or its legal/ethical/environmental status. But whether an LLM was used (and which one) does.

I don't like advertising, but I see these commit tags primarily as responsible disclosure. Many projects require them.

hugoarnal | a day ago

I totally see where you're coming from however I kind of disagree with one part.

I agree on the part that it's completely free advertising from the AI companies and I hate how they're invading open source software with this.

I disagree on only disclosing in merge request. Not everyone looks at merge requests and I shouldn't have to depend on anything else than the git history to know if this commit is trustworthy or not.

Rexxar | 21 hours ago

It’s useful to have the name of the tool in the code when the tool generates code deterministically (like Protobuf), as it helps with debugging and managing upgrades. For LLM-generated code, I don’t really see the point. I don’t mind if a tool like Dependabot signs its commits: if something goes wrong, it’s useful information for fixing the problem and preventing it from happening again.

bsandro | 23 hours ago

What if I write "Proudly typed in nano" or something? :D

pyfisch | 22 hours ago

"edited with sed - the modern stream editor for filtering and transforming text"

[OP] Aks | 22 hours ago

I am often thinking of adding "assisted-by: my pet lizards" because I talk to them sometimes when I'm trying to figure out an issue.

sjamaan | 8 hours ago

co-authored-by: rubber ducky

skade | 17 hours ago

That’s unnecessary, because everyone knows ed(1) is the standard text editor, it’s kind of implicit. Wasted bytes.

owent | 22 hours ago

"Sent from my iPhone"

hoistbypetard | 20 hours ago

Whoa there! Some FOSS projects already want to ban nano users. Now you’re suggesting a way to enable them.

Maybe same reason why people wear shirts that say "Nike" or "Adidas" on it.

I asked my grandfather why he never wore anything with a logo on it, and he told me something like "If someone wants me to advertise for them, they can pay me."

radex | 22 hours ago

I always found it baffling that people are willing (even eager) to do that.

marcecoll | 20 hours ago

who cares?

[OP] Aks | 19 hours ago

I do!

marcecoll | 6 hours ago

The idea to find baffling a choice like wearing a logo on a t-shirt you like is what's baffling to me. My god, I've never seen such high horse behaviour on such absolutely trivial things.

People have different interests, worries, lifes, ideas, energy or problems. If they like the fucking t-shirt, they like the fucking t-shirt. That it baffles you says more about yourself that about them.

[OP] Aks | 3 hours ago

I find it baffling that you find it baffling that we're baffling about this in the comment sections.

Chill out, friend.

Comment removed by author

[OP] Aks | 22 hours ago

Yeah I never understood those, they're not even good looking clothes.

tomhukins | 22 hours ago

Right now I am wearing a shirt that says "London Perl Workshop 2017" on it and I realise I don't remember anything specific about that year's event. Maybe I should go for sportswear instead.

If I pair with someone and I commit, their name goes in the co-authored-by. I think the contribution of LLMs when I program is significant enough to the commit that it is worth recognizing. I am committing the code, I am responsible for the code, but I am not the sole author of the code.

[OP] Aks | 23 hours ago

It's not a real person, you're just advertising a company.

How, if at all, do you think coders should disclose use of AI tools?

zladuric | 19 hours ago

In projects where this is relevant, say "I've used AI tool.".

In projects where it isn't, I agree how this can be just free advertising so your don't need to add it.

singpolyma | 19 hours ago

I don't see how the contribution of the LLM is different than the contribution of vim, or your IDE autocomplete, or Google search results. Yet I've never seen people rush to add "consulted Google when writing this and hit tab complete 4 times in xcode" to their commits.

spc476 | 11 hours ago

vim won't write your code for you. The IDE requires a bit of typing before the autocomplete will actually complete the rest of the name or coding structure. The comparison to Google search results is probably the closest, and yes, I do add links to webpages (or even books) for code where I've researched an approach. Maybe I'm unique in that.

fleebee | 11 hours ago

Vim or IDE autocomplete don't provide code without the mental effort and input by the author. Search engine results (e.g. StackOverflow code snippets) and LLMs do, so it makes sense to disclose those.

brendan | 9 hours ago

Regarding stack overflow and other links to blog posts, papers, etc, I think these are incredibly valuable for future reference. To the extent that I'm often putting these in comments directly in the code.

fedemp | 18 hours ago

Those who received the code may be have a moral concern about the use of LLMs, or may be worried about how much the submitter understands the submitted code.

singpolyma | 18 hours ago

Sure. I'd have concerns if code was written using Visual Studio also and for the same reasons.

fedemp | 16 hours ago

Is it because Visual Studio enables Copilot by default?

zladuric | 19 hours ago

I'm not certain that it fits with the issue so far.

You bootstrap a spring project. Or generate stuff with echo or cobra cli for Go. Boilerplate-build some laravel stuff. Many languages have generators.

You never add "co-authored by X tool".

I know it's not the same but it is similar. You're adding tooling meta into your changeset. You shouldn't need to. Add relevant business concept. Add disclaimers about technical decisions.

No need to mention tools.

viraptor | 14 hours ago

Those tools don't result in any decisions made. Using LLMs does, which is why we treat them differently. People do want to know about both the technical and social choices here and there are so many who will feel cheated if you don't write all the code in the commit.

brian | 15 hours ago

What is authorship?

Sanity | 9 hours ago

It at least involves responsibility, thought, context, planning, involvement and accountability. An author can be sued for slander and defamation. An author can receive compensation for their work. An author can claim copyright. An author can be asked to explain and defend their thought process (and actually try to remember their thought process, not just pretend to).

Sanity | 10 hours ago

What about the contribution by your compiler, linter, RAM and CPU, the coffee machine that woke you up etc etc.?

No, the author is the person you look for to ask why this commit is like it is, the person who can be held accountable by the commit. A computer can never be held accountable, therefore a computer must never be the commit author.

hongminhee | 15 hours ago

I've been using the Assisted-by trailer from the Linux kernel's coding assistant guidelines. I used Co-authored-by for this before, but stopped once I thought about it: that trailer is for human collaborators, and an LLM isn't one.

viraptor | 19 hours ago

"generated by LLM" does not get easily shown on GitHub for a commit. I wish there was a dedicated icon for that. Until then, the only way I can satisfy people who want to know how the code was authored is the co-authored-by. There's no way to satisfy everyone at the moment, so "ads" it is.

It may be actually useful one day in case we discover model Foo was failing in some specific way and want to review all the commits.

Ideally what I'd like is:

  • mark the actual level of involvement (advice, agentic coding, vibed)
  • have the forges support that annotation in the UI

I am very anti-advertising, but the reason I am anti-advertising isn't because I never want anyone to notice or use any consumer products. It's because I want people to have accurate, unbiased information about consumer products.

I don't think that putting this info in a commit is introducing bias, because it's straightforwardly true that Claude, or Copilot, or whatever, is doing the commit, and a lot of people reasonably care about knowing that in context (where they don't care that e.g. the commiter used Emacs.) It's not just in there for no reason.

If you don't like it, tell your user agent not to print it.

zladuric | 19 hours ago

But you also don't add other meta and tooling info. E.g. you don't add the fact that you used Emacs for a commit either.

dulaku | an hour ago

Presumably the use of Emacs did not materially influence the content of the commit. Presumably, a generative AI tool did, or it wouldn't have been worth using.

pyfisch | 22 hours ago

btw I am not sure if the webserver is overloaded, misconfigured or has classified me as a bot, but I need to wait ~30 seconds for a HTTPS connection.

[OP] Aks | 11 hours ago

The site was posted on HN and my poor webserver could not keep up.

I really wish people stopped posting my site there.

JulianSildenLanglo | 10 hours ago

You could try blocking based on the referrer header?

[OP] Aks | 3 hours ago

I tried that once, they just removed the referrer.

lcamtuf | 4 hours ago

Here's the thing: no one seems to be upset that The North Face puts their name on a hoodie or that Toyota puts their logo on a car. In fact, we often like it?... As a woodworker, I want you to know that my Laguna bandsaw is pretty good. As a photographer, I use Canon and I don't mind the world knowing. And I'm pretty sure that the main point of owning a Rolex watch is for others to notice.

But many folks seem upset when their AI tools "out" the fact they are using AI tools (or that someone else calls them out on that). Which tells me that... using an LLM is not a point of pride? In fact, most of the LLM-generated text and code I see online makes an effort to conceal the fact it's not written by a human.

moverest | 21 hours ago

I kinda like like it as it's a good signal. It's a nice way to see the amount of effort (or lack thereof) that was put into the code.

schell | 16 hours ago

Though I agree that it is kinda annoying, it’s actually pretty useful and honest to disclose not only the LLM model and version, but to also append the transcript in the PR description.

Also, this is the standard disclosure required by some funding programs, like NLNet, etc.

These tools are here to stay, for better or worse. We’re all in it together. I’d rather not have an argument about (the illusion of) purity and instead just be upfront about tradeoffs.

valdemar | 13 hours ago

Tbh I am a fan of FreeBSD's use of the Sponsored-By trailer even though it advertisement, it's not only that. It also shows who actually pays for the commits something I find that Linux sometimes lack.

Both pro and anti AI users benefit from quickly identifying that an LLM was used for a specific commit, especially which model. If you’re saying it should “just be in the PR”, it sounds like you actually agree this disclosure is beneficial.

PRs are largely terrible stores of information. GitHub has proven this over and over again, with this year’s failures showing that even the PR is not sacred for GH and any information in there WILL disappear at any time.

radex | 7 hours ago

PRs are largely terrible stores of information

Agreed. I've come to believe that any important context about commits that is not present in the code itself should be placed in the commit description. This came from an experience using Gerrit for a project, which kind of forces this to be the case. Regardless, it makes offline search, bisecting, switching to a different git forge all much easier

borntyping | 8 hours ago

I can see an argument for disclosing the use of AI, even maybe a specific AI tool, but the hijacking of Co-Authored-By and the implication that these tools are people with an identity really annoys me - for readers of git repositories it's adding a lot of noisy spam/advertising in a field that was previously pretty free of it. The Linux and Kubernetes project use Co-developed-by instead, which at least clearly delineates these tools from actual people.

tadzik | 6 hours ago

I'm wondering what point is there to it being a structured, standardised-ish header. Are there any tools taking advantage of that? Is someone using it to gather stats? My instinct tells me "probably not" since people would often hide the fact that they vibecoded the thing, but maybe?

Unlike a Sponsored-By or this feat(foo): bar commit format, they don't seem to serve any practical purpose. And if you wanted to provide information to the reviewer, this is already insufficient IMO: was it entirely vibecoded? Bugfixed? Style-adjusted? Co-Authored-By tells me nothing about it.

So perhaps it is just advertising. And maybe not unlike the Nike logo on the t-shirt, it's advertising you as the hip, trendy programmer moreso than the tool itself. And having a "standard header" is just there to legitimize it as a standard practice.

oceanhaiyang | 7 hours ago

Your writing is trying really hard to be edgy and it takes away from the points you try to make.

[OP] Aks | 3 hours ago

Oh I'm all about that "all edge, no point" -lifestyle.

When someone is writing on their own blog, they should write in whatever style is natural to them. They don't have to write in a style that you approve of.

For what it's worth, I found the OP's post completely on point and I wouldn't want them to change their writing style at all.

toastal | 14 hours ago

Comment removed by author