Comment by rickette

4 days ago

The only difference between CLAUDE.md and AGENTS.md is the filename. Do you really need a whole plugin system to support that use case? Feels like this could have been a one line change.

Don't you run bizantine ralph loops on remote environments with codex security checks, coupled with jev, grok, open router and a fully independent openclaw (on a maxed out mac mini inside a caveau in an undisclosed location, with open telegram) to change constants? You're going to be left behind.

  • Not related but I think I finally know how it must have felt to the generation prior to mine, when we tried to explain computers to them; because even as a retired 30 year plus software engineer, I have no idea what the comment says.

    • I felt a little panic when I understood every word of what was meant to be adjacent to scifi-style garbled engineering speak, and I think I'd rather be on your side of the spectrum.

      1 reply →

    • It's almost all related to LLM's, which is fairly new.

      Basically he's describing an LLM assistant setup that does coding on a vps or Mac mini ( some contradiction with Openrouter though) where you can communicate with the assistant through telegram

      4 replies →

    • Unc you're so cooked it's not even funny younger than me but you're out here aura farming in the negatives fr fr. NPC-ahh behavior, 0 aura, -1000 rizz. Couldn't be me

      Sorry couldn't resist ( ・ั ﹏ ・ั )

      Not sure what you didn't understood in their comment though, maybe the raph loop (and jev which was just released)? Isn't the rest completely self explanatory?

The plugin system itself was probably already in the making, and they just chose to implement this tiny feature as a plugin to try it out.

As for the only difference being the file name, that's an untested assumption. Up until now, Claude hadn't supported AGENTS.md, and it's a simple application of Hyrum's Law that somebody, somewhere, was taking advantage of that to give one set of instructions to Claude, and a different set of instructions to some other provider. The correct behaviour in the presence of both files is not obvious, either.

Having a kill switch for the change is a perfectly reasonable safety measure in case something goes horribly wrong.

  • > somebody, somewhere, was taking advantage of that to give one set of instructions to Claude, and a different set of instructions to some other provider.

    I'm this person, I am actively doing this! I have some instructions which the Claude models need and OpenAI models will do by themselves. If the OpenAI models see the Claude instructions, they will go way overboard in a way I don't want.

    Mind, the change does not affect me at all, because when both instructions are present Claude continues to read CLAUDE.md and Codex continues to read AGENTS.md. But if Claude started preferring AGENTS.md, that would be mildly annoying.

    • Within agents.md, an idea. Feel free to steal if you work on this:

          Model.Claude*:
            Do this one thing
      
          Model.Claude.Opus.4.8:
            Extra specific instructions
      
          Model.*:
            This is relevant to everyone
      
          Harness.ClaudeCode*:
            Why not, let’s allow harness specific instructions so you can do things differently depending how you’re working

      5 replies →

  • This "tiny feature" consists of hundreds of lines of code spread across 57 source files, many of which are less than 30 lines long, often contain more comments than code, and have no real reason to exist. It's the very definition of overengineering and overcomplexity.

    That said, I do find it somewhat funny that Anthropic themselves are falling victim to their own model's tokenmaxxing.

  • That line of thought is the reason why everything gets so overengineered.

    Read CLAUDE.md if it doesn't exist read AGENTS.md you don't need to overthink it so much.

    • This line of thinking is something you will quickly be disabused of once you try supporting software that hundreds of millions of people use.

      And I say this as someone that loves the Unix philosophy dearly.

      21 replies →

  • > Having a kill switch for the change is a perfectly reasonable safety measure in case something goes horribly wrong.

    What, exactly, is going to go horribly wrong here ...? The worst case you're proposing is that an Anthropic model acts on AGENTS.md rather than CLAUDE.md. It's not going to be the end of the world; at worst it'll be `git reset --hard HEAD` time. But this wouldn't happen, because:

    > The correct behaviour in the presence of both files is not obvious, either.

    It seems extremely obvious to me: the non-breaking change is the right change here. If both exist, Anthropic models continue to use CLAUDE.md and ignore AGENTS.md. This is not rocket science. Why are we overthinking this?

    • > What, exactly, is going to go horribly wrong here ...?

      Operating anything at scale teaches you that the universe of “things that can go horribly wrong” has a much better imagination than you. That goes quadruple with complex and squishy reasoning models.

      I’ve seen a couple of really good examples of what can go wrong in this subthread, the most straightforward of which is that abruptly changing a fundamental behavior can break existing use cases.

    • Because when you have tons of users ainor fuckuo is a big fuckup and also it's really common to have both claude.md and agents.md and use @ syntax (which lets you reference markdown files when using Claude code, but not other harnesses) so you Claude md looks like

      ```md @AGENTS.md

      [Claude specific stuff]

      ```

      And then what happens if someone now puts @syntax in their agents.md triggering a loop etc. It's all vibe coded - including code from days with dumber models - there's gonna be all sorts of dragons under the hood

  • The Claude sandbox has a slightly different ENV compared to ChatGPT (LC_CTYPE set to C instead of UTF8 I believe) which upsets some scripts we have.

    So in the CLAUDE.MD we tell it about that and then tell it continue reading AGENTS.MD. Not very hard to work around if CLAUDE.MD goes away, but just to support your point that the split did have its uses for some.

  •   > Having a kill switch for the change is a perfectly reasonable safety measure in case something goes horribly wrong.
    

    Having a way for the user to revert the update is a perfectly reasonable safety measure in case something goes horribly wrong.

    Even though Anthropic or any other software provider could technically run anything on our system, there exists a modicum of trust between supplier and user. Anthropic performing arbitrary changes that are tangential but not specific to the premise of delivering a harness to package code files and prompts in context to their LLM breaks that trust for many users.

Yes, but at the same time, it’s also a good, simple use case to test a new plugin system. I can totally understand that.

At $FAANG, ~all changes go through feature flags.

There are processes to make changes outside of feature flags, but they have enough friction that it's easier to just use a feature flag.

This level of paranoia is consistent with the blast radius of changes breaking Claude users.

  • I'd love to hear more about this. Though I usually write bespoke software for specific clients, I'm about to release my first general-availability application. It's a rust application with Python GUI on the desktop (Linux, Mac, Windows) and a skinny Android application that wraps the rust on mobile. I'm going to be gating features starting probably next week. I'd love to hear tips and experience for implementing feature flags, for both the desktop and mobile space.

    Thanks!

    • To the guy who asked but his comment is dead:

        > Are you gating by license or user, or just by percentage of installs?
      

      I'm gating by version. I want to dogfood features personally before releasing them to all my users.

I'm not sure why they didn't just extend plugins, but having mod support is definitely a plus for everyone.

AGENTS.md seems to simply showcase what mods are capable of.

We've just had a file called `.rules` that is symlink as `AGENTS.md`, `CLAUDE.md`, etc to support the 3 or so common ones used around our projects.

With apologies for not just testing this myself (currently AFK), doesn't it still work to have a CLAUDE.md file containing just `@AGENTS.md`?

Go download the leaked source code from earlier this year, search for all occurrences of the string `CLAUDE.md`, and be horrified.

One line change? Pffft. That means you're still looking at the code, you're behind the times.

> The only difference between CLAUDE.md and AGENTS.md is the filename. Do you really need a whole plugin system to support that use case? Feels like this could have been a one line change.

I don't think this is a reasonable assumption. The document format in CLAUDE.md is whatever Anthropic specifies, where AGENTS.md is a common ground format that is expected to be supported by any agent, be it from Anthropic or not.

https://agents.md/

You might argue that differences are small or negligible, but that is just an expectation.

  • It's not a format though is it? it's literally just an extension to the system prompt in plain markdown.

    There is no rhyme or reason to the structure of this file, just like with most things in AI. It's best effort human language.

  • I think you're giving these files too much credit. There are no specs, they are freeform text. In this sense they are the same. The expectation of what could be in it by each vendor means nothing unless it's enforced.

  • > The document format in CLAUDE.md is whatever Anthropic specifies

    Q: Do Anthropic actually specify a document format?

    • Nope! Claude is even able to understand AsciiDoc just fine (which is a blessing). But it will always insist on the Markdown extension.

  • There is no "specification", it's literally just a text file that gets loaded into context. You don't even need to write markdown. It's not that hard man.