211 comments

[ 1.1 ms ] story [ 70.0 ms ] thread
Great, now I have to redo my scaffold harness. I guess this agent.md awareness is part of the system prompt?
First feature to borrow after peaking into openai repos? ))
Finally doing something standards-compliant instead of forcing users into a proprietary workflow.
CLAUDE.md: @AGENTS.md
I tried that before, it doesn’t work. Claude will not prioritize AGENTS instructions the same way it did for CLAUDE.

ln was the only thing that worked for me

fwiw, i am with thariq https://x.com/trq212/status/2092302273099796842 in that prompts should be tuned for models and in fact blindly applying agents.md is probably an antipattern unless you want all models to basically converge to some common ill defined of instruction following - good local minima, bad global minima for model diversity and exploration of intelligence.

aka, sometimes it really is too early to force a standard

depends what you're doing. if you've got a specialized agent deployed in prod, of course your evals and prompts will be targeted towards 1 specific version of a model.

on the other hand if it's just a local coding/"use my computer" agent, i highly doubt the effort in maintaining different prompts is worth any gain in performance

That's of course rather nonsensical.

In a "one LLM only" environment, your instructions are by default tuned for said LLM.

In a multi-LLM environment, roughly nobody will keep separate sets of instructions for each. It's not a realistic take.

On top of that: If your LLM is so bad at reading that it can't follow a set of instructions that wasn't specifically written just for that one single precious LLM, I sure wonder what that says about your employers repeated statements that ASI is definitely right around the corner.

By this logic you'd probably be wise to tier your claude.md by model (sonnet/opus) as well as effort level too, considering the varying failure modes
except they have similar pretrain/rlhf data which is the thing u really want to tune for
Hmm I tune for my desired outcomes, not based on model training inputs
YMMV but for me even models in the same family fail in different ways, and every incremental update changes it
I have had very little luck with agents.md. What has worked well for me is a ./docs folder. They seem to just create and update stuff on their own.
If you want this it's trivial to add an AGENTS.md that simply says "if you're Claude read CLAUDE.md, if you're Astra read ASTRA.md". A common entry point is good regardless.
Is it realistic to rewrite your AGENTS.md every six weeks? That's about how often Anthropic releases a new point release of Opus.
You tell Opus to do it.
It looks for Claude.md first so I don't understand what you think the problem is with the standard name as a fallback.
19 out of 20 harnesses supporting the standard isn't "too early".

Tariq is wrong and it's not an antipattern. Reason being that a good AGENTS.md impacts all models in a positive manner. If it affects certain models negatively, it means you're putting the wrong things in it.

I'm honestly not sure if this is tongue in cheek and the "finally" is in the silly way it is often used, but the claude.md variant existed first. Indeed, the agents.md thing was pretty clearly a "that's neat, let's do that with a different name".
There’s also that whole MCP thing.
It's "finally" because people have been asking for it for a long time. No one cares that "claude was first," what they want is for Ant to follow the conventions and not put extra work on us. This was such a minimal thing to do, and considering how much they vibe and claim "coding is solved," we thought it would not be too difficult to respect AGENTS.md, so finally seeing it happen, while nice, is too late for me. I've moved on from Big Ai and only use open weight models now.
Just because something is first, doesn't mean it's the standard. The standard is put in place by how many harnesses use a specific pattern, and that has been AGENTS.md for a long while now. Long enough that Claude Code not supporting it is really just an act of forcing people into a proprietary workflow, because of course it's in their interest to make moving away as painful as possible given how little moat the LLM models themselves have. In fact, I think Claude Code has been pretty much the only one not supporting AGENTS.md. Check out https://agents.md if you want more information on it.
Trying to gatekeep a .md file by changing the name is hilarious
claude.md predates agents.md.
Yeah but .md predates claude.md. I definitely had agent.md files in my repo before Claude tried to act like it's a special protocol.
Standards? In LLM harnesses? I wish
Thanks guys, you did the right thing.
Don’t get too excited, Claude code still won’t detect skills on .agents/skills.
A post-checkout git hook can handle this unfortunate situation.

  mkdir -p ~/.githooks
  git config --global core.hooksPath ~/.githooks

  cat > ~/.githooks/post-checkout <<'EOF'
  #!/usr/bin/env bash
  if [ -d .agents/skills ] && [ ! -e .claude/skills ]; then
      mkdir -p .claude
      ln -s ../.agents/skills .claude/skills
  fi
  EOF

  chmod +x ~/.githooks/post-checkout
Won’t you have to do it recursively for all child directories?
we shouldn't have to do this on a per-repo basis, Ant can choose to be a reasonable member of the ecosystem or not
Sure, but I have work to do. ;)
This is where I landed when a recent(ish) change broke symlinking for rules files. I didn’t like how hacky it was a first, but now I’m glad I did it. The same hook drives specific rules the non-Claudes get per repo.
I honestly hate .agents it's a big XDGBDS offender. Almost every plugin / lazy platform harness tries to use that dir too so I have to do a bunch of hacks to keep my $HOME clean. Also everyone tries to use a .claude .gemini .codex etc. Annoying that all these tools just completely ignore these things, it's literally like litterers you know it'd be terrible if every tool did this, but you still do it anyway
This allows us to remove our one line Claude.md files that just say "AGENTS.MD"
Only took them a year and a half of everyone complaining to finally do the right thing.

Congrats.

Thank you Tobi Lutke.
Next he needs to tweet about ~/.agents/skills
Caught myself about to praise this, but it's the absolute bare minimum.

Time to delete the symlinks

Anthropic in 2025: We can use our dominant market position to degrade the harness experiences of our competitors because they will never adopt CLAUDE.md

Anthropic in 2026: We are losing our market position. Users who adopted other harnesses have a degraded Claude Code experience because it doesn't recognize their AGENTS.md

Sounds like free market at work to me. I am just glad there is quite a lot of competition in a field that I would have assumed would have huge costs of entry
Building small models is a lower barrier. Think of something like to just train on a corpus of internal corporate data. I've see some small models that do this. It's like a super RAG thing. I think more of that will happen. Excited to see a SLM vendor emerge.
The walls are closing in and the president is gleefully lighting fires he has no intention of putting out. There's a reason they're rushing like mad to an IPO, but as we saw with OpenAI it's easier said than done when your business model is "Lose tons of money to eventually maybe dominate a market with the moat we don't have, but trust us AI is huge give us trillions."
With the "let's stop AI now" statements, can it really be said that they're rushing to an IPO?
> "let's stop AI now"

Pausing AI _training_ would benefit them a lot, as inference is _insanely_ profitable (> 50% margins with maximum demand, afaik)

Basically asking the government to hobble the competition so they can IPO before the music stops.
Pretty typical capitalist moves.
> typical

Cynical. The word is cynical.

No, cynical is what we should be about capitalism.
My view is at the end of 35 years in the industry the current wave of “software” and “systems” engineering coming out of the AI harness community is pretty garbage. But web technology and distributed systems followed a very similar arc, as did protocols and memory management; and microcode before them. But it feels like this is particularly bad because the mistakes being made are plainly obvious to the grey heads who have been here a while. As opposed to before when mistakes were in new domains being explored, these are mistakes made before and have good solutions to.

I feel people too readily blame the LLMs themselves for this, but I’ve found LLMs know the history of computing thought evolution better than anyone I’ve ever encountered. Once you push them in the right direction, ground them in the philosophy of thought of hard won engineering ideas, they are astoundingly precise and accurate in their read and application (keeping every session grounded is the trick!). So it’s not the machines making these same mistakes with ready conceptual frameworks around them, it’s the 22 year old gatekeepers dashing head first into wall after wall, when we painstakingly built the door two feet to the left about the time they were gestating.

> but I’ve found LLMs know the history of computing thought evolution better than anyone I’ve ever encountered

Yeah… that’s… pretty much how these LLMs work and their main selling point, actually. Not sure what the “I’m such a greybeard with 350 years worth of experiencie” preamble gets you here besides just making you look like you barely understand what you are talking about.

Because, knowing what to induce in its behavior is the key - by understanding things like Postels law, I can direct the agentic loop towards patterns of development that avoid the cascade of issues that seem endemic in modern agentic harnesses.

In fact, this is a key insight, so it’s surprising you didn’t get the punchline. Trying to build things in a new way on a machine composed of the corpus of all the old ways is stupid. By eliciting the corpus of tried and true methods over the history of computing and process engineering as the grounding for how to develop and behave in processes, you offload a huge amount of the work in getting software that’s “right” for the domain you’re working in. But not being aware of them and being heedless that the techniques hard won were hard won by people at least or more smart than you facing similar problems is leading to a cycle in software that’s needlessly dumb, making stupid mistakes that are unnecessary.

There was a great Star Trek NG episode where Picard is stranded on a planet with a creature that can only speak in metaphorical language. Every sentence it uses refers to an event in the past and you have to understand it’s history to understand it today. Because LLMs are entirely trained on historical corpus, there is no time in history when all the techniques and processes and system design thinking was more relevant. Like that episode, Darmok, you can elicit a wealth of experience by simply referring to a technique from the past - if you know what it is.

Another way to put it , those that aren’t aware of their history are doomed to repeat it. The sad part of the situation is the coding agent you’re working with is fully trained on it, but unless you intentionally activate the semantic space and bring the concepts into its J-space you won’t maximize the value of that corpus. So, we are using these tools which are mostly crap duct-taped together, which suffer from flaws well understood for decades, mostly because of the driving human being ignorant of the available corpus.

Its like the Epic Games Store supporting Linux, or [any website] supporting dark mode. You'd think its an easy to implement bare minimum that everyone asks for, but its like pulling teeth to actually get it done.
Linux is basically impossible to support. Valve pulled it off by shipping a complete copy of Ubuntu 12.02 with Steam.
<Platform> is basically impossible to support. <Company> pulled it off by shipping a complete copy of the Chromium browser with <Product> and turning it into a web application.

In any case I don't see how this is materially different from Windows where it's the norm for every game to ship its own libraries and install various redistributables to function.

On Windows those libraries are part of the application package. On Linux they're supposedly part of the OS, they're designed to be part of the OS and the loader is trying to get them from the OS, but is redirected to get them from the wrapper layer provided by the store (neither the application nor the OS!) instead.
> ..or [any website] supporting dark mode. You'd think its an easy to implement bare minimum that everyone asks for, but its like pulling teeth to actually get it done.

At least with dark mode, you can ignore most web developers and get a browser extension to make everything dark, then only webmasters who don't follow standards gets it wrong.

Forced to do something for the users...
They have achieved AGI/RSI internally and it told them "common, let's sort this s..t out, it's embarrasing".
(comment deleted)
The madlads finally did it, now if only I could use my Claude sub in other harnesses without risking getting banned.
yep, all i want is freedom to make a workflow where i don't feel tied to one provider, CC is exactly what i don't wanna get trapped in. I'll happily use claude MODELS, but if it means i have to keep learning two harnesses side by side to keep using one particular provider, then the second i can easily replace it, i am going to(even if its a small drop in performance).
Remember they didn't do this because they wanted to help community, they did it because community was angry and they were losing users to other harnesses.

Doesn't look like Anthropic care about dev community

A for profit company that’s bleeding money, is not profitable and has an unsustainable business model that’s about to burst its banks at any minute does not actually care about the needs of its customers, only their money?

Shocker.

Finally, I can delete `sync-agent-docs.sh`, which recursively symlinked AGENTS.md to GEMINI.md and CLAUDE.md...
My claude.md:

# CLAUDE.md

This project uses `AGENTS.md` as its agent instruction file (kept provider-agnostic). Treat any `AGENTS.md` file exactly as you would a `CLAUDE.md` file — at the root level and in any subdirectory you are working in.

@AGENTS.md

I don't think this will work reliably. Pretty sure it's not the LLM deciding to read the files, it's the harness in Claude Code itself injecting the instructions files based on the paths the model accesses.

Edit: sometimes if Claude lists files in a directory or does a search that shows it an AGENTS.md exists it will decide to read it. But it's not a reliable behavior.

I recently had Claude Fable set up a new project for me and I pointed it at some existing projects to use as a guide on how I like to structure things. It created, unprompted, an AGENTS.md file and a CLAUDE.md symlink to AGENTS.md

I didn't even have that symlink in any other project - it just did it. I think it saw that one of the projects I already had was set up by Codex and that project had an AGENTS.md so perhaps it inferred that I was using both Claude and Codex, so it was politely covering both? Or maybe a recent change made this behavior default?

I was surprised and I hope they continue to seek standards.

Seems agents understand their own bugs now. https://github.com/openai/codex/issues/9252 has 88 thumbs up and a workaround (switch to raw mode with Alt+R) found in a comment. Codex suggested the workaround to me today when I complained about its multi-line bash command being corrupted on paste because of the two-space indent in Codex's code blocks.
Fable didn't want you to blame it for the limitations its creators gave it
Why do you all care so much about this? Weirdos.
You happily putting ads in your repo and being aggravated when that is no longer required by a vendor is perfectly normal and healthy.
I don't need to use LLMs to write code, unlike the unskilled masses who enthuse about it here.
we don't need them, but it does make (some of) us more productive, and if you aren't having agents review your code, you are almost certainly shipping more bugs than you want to
(comment deleted)
yay! /s

Why are people still putting up with this kind of attitude, especially when there are so many good alternatives available?

Still can't read what their models vomit at me.
I cancelled my subscription over this. [0]

0 - https://www.williamangel.net/blog/2026/09/18/i-cancelled-my-...

I’m cancelling my department’s subscriptions over this once we can get more access to Astra.

I canceled my personal subscription the weekend after Astra was released. I was working with our internal IT to swap the whole team when OpenAI turned off new 20x Pro subscriptions, so we’re stuck for now. Everyone is hyper-productive for about 1 day a week on 5x.

Still don't understand the point of the markdown files.

Isn't it literally all just more text you're adding to the prompt. How can you even be sure it isn't just clouding context with nonsense for whatever you're asking for?

For skills, it only reads the summary telling it when to read the rest. So yes if you have too many skills, it can get confused and start reading all them and cloud the context. But if you have a few and they're used tactically, it's better than having to manually paste in prompts that you reuse a lot.

Similar reasoning with claude.md except it always reads the entire thing(?)