Sorry folks, this is a rollout artifact, we needed a way to turn this off remotely via feature flags if it broke something, and with telemetry off you don't get those. It's already been fixed as part of v2.1.281 releasing today.
The AGENTS.md support was implemented via our new extensibility system for CC, called Mods, which is launching soon-ish. A mod is a plugin with a new type of hook, which we call a function hook.
Might I gently suggest that you have a model at least as capable as Opus 5.5 translate that from Claudish to English? Or, even better, have an actual human work on the docs a bit? As it stands, they are fairly egregious, and they seem to devote at least as much space to little AI-generated quips that convey no meaning than to actually explaining what’s going on.
Also, maybe a human should decide whether these are “function” hooks or “module” hooks. All of this marketing calls them “function” hooks, but the json config seems entirely unaware of this.
(Has anyone else noticed that half the sentences in Claudish aren’t merely weird: they are noun phrases and not sentences at all? I’m pretty sure that any decent pre-LLM NLP-based grammar checker would correctly flag half the sentences in Claudish. Also, whatever variant of Claude wrote this thing can’t even capitalize around semicolons consistently with itself, let alone consistently with how English has been written for at least a century.)
Ouch! Much of this verbiage was dictated by me personally; I just have a fairly distinct register some might consider inscrutable. My English teachers in grade school always said the same :)
Rest assured I'll inject a bit less soul into the official docs once Mods are launched; re your feedback on the JSON key, what would you recommend?
Out of curiosity, I ran the PDF through pangram and it seemed to flag nearly the entire thing as AI. I recognize these aren't perfect detectors, but they can give signals if nothing else. Perhaps it needs more soul injected!
I know it's a joke but if you look at many of the key AI researchers papers (written pre-LLM mass adoption) you can see some similarities with how LLMs structure their output.
> Ouch! Much of this verbiage was dictated by me personally; I just have a fairly distinct register some might consider inscrutable.
I do notice that the more Claude-generated stuff I read, the more it creeps into my daily usage, and I suspect I don't read nearly as much of it as an Anthropic Employee would, so I could believe that. Though "much of" isn't the same as "written with zero AI generation/rephrasing/etc."
Anyway, that aside, something I would like to see is an example of something that's possible with this system that isn't, or isn't easily, possible with existing Claude hooks. Right now it reads like "Here's a cool thing! Here's how it works! And here's this other similar system we have! Here's how that works!" But there's no summary of the differences, why I'd use this over regular hooks, and so on. Or at least not that I saw on quick skim, and I'd be looking for that to be mentioned as early as possible, so I know if the rest is worth reading.
Your comment here is written in perfectly fine English :)
Maybe "function_hook_modules" for the JSON key?
Does this finally fix the limitation that there is no supportable way to replace the implementation of a native tool in Claude Code? codex-rs has an (undocumented but likely supportable if kind of awkward) mechanism, and I’m part way through a project that needs this. I was going to release it with a recommendation not to use Claude Code, but it’s at least plausible that this will change my mind. (I’m not sure yet — the $ mechanism might be too restrictive. It’s a start at least.)
Don't trust my formatting -- I typed this in the comment box and I have not run it through a prettifier or anything.
The point here is that there's a world adjacent to but not actually contained within Claude Code in which not everything blindly trusts everything else, and maybe it's time to start remembering some lessons from the 90's on. For example:
- Don't sniff content types and preferably don't infer them from filenames either.
- Don't trust your subresource to arrive intact. Pin those hashes and verify them!
- Leave some room for extensibility.
- Maybe don't require everyone to mix their code with the security policy that controls edits to that code? I realize that anyone cursed with GitHub Actions is forced to violate this rule in the most outrageous ways imaginable, but that doesn't mean that Claude Code needs to follow suit forever. Once there's subresource integrity, the actual subresource can be put somewhere else where it belongs better. If there's "source_file", in the future there can be "source_url" and such without trying to infer it from the formatting of the string.
(I've involved absolutely no AI in the preparation of this comment. I make plenty of use of AI, but I like my brain to stay exercised, and I like to think that I remain MUCH better at this kind of thing than even the best current models.)
Contact me at the email address in my HN account and we can arrange for a human with a soul and feelings to write the docs from scratch assuming you have a price in mind that values the nature of my talent and experience.
It's a register that would be great for some tabletop games or pop science writing, but in this context it could really use a technical editor to aggressively remove phrasing like "keeping the fold neatly uniform" and "affordance surface", as well as change things like "hooks live in a hooks.json file, today of four extant types" into plain technical language ("there are four types of hook that can be defined in hooks.json").
Writing documentation is one of the most often mentioned uses of LLMs. I suppose if Anthropic wouldn't be doing it it would put into question why anyone else would.
> they are noun phrases and not sentences at all? I’m pretty sure that any decent pre-LLM NLP-based grammar checker would correctly flag half the sentences in Claudish. Also, whatever variant of Claude wrote this thing can’t even capitalize around semicolons consistently with itself, let alone consistently with how English has been written for at least a century.
Probably just a case of a company hoping their scale can change the societal standard faster than they can be bothered to match the standard.
You'll talk like 2023 unsupervised TikTok generators and you'll be happy.
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.
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?
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
OK I do use AI in the browser but haven't tried anything like what you describe. I Googled telegram in case it wasn't what I was thinking, which was used in the 1800's but found their website. It's apparently another messaging platform. Thanks for the interesting view.
The tl;dr of the tl;dr is treating the model setup like an autonomous robot with its own machine to use and just telling it what to do via chat rather than directly supervising it, which is bonkers in some ways (all the open internet/service access/permissions stuff you would imagine), and smart in others (a fully isolated machine means it can fuck up something locally or run high-load tests without taking down your important systems).
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
Seriously, though, this is a great idea. Good communicators know to tailor their discourse to their audience. LLMs are just as sensitive to small variations in prompts, and just as inconsistent between them, as are humans.
I wrote an agent launcher sort of bash script. Pass in the command to start the agent, the script checks if there’s a Jinja file in a special directory matching that name, and builds it to AGENTS.md. Then it launches the agent.
I was trying to use it as a sort of janky RAG. I had a bunch of snippets (one for DB architecture, one for how load balancing works, etc), and my Jinja files were mostly a list of snippets to pull in. Voila, a bunch of agents that share little pieces of info but have a single source of truth.
I never got a ton of value tbh, it was very good at just grepping the snippets.
How, exactly, would the proposed solution (combined with a setting to disable it) break, and how would implementing it the way Anthropic did address that? Be specific.
Some people might have a different CLAUDE.md and AGENTS.md because they use Claude to do one thing and $other_agent to do another thing. Or because Claude does XYZ by default, and other agents do ABC, and they want to give the correct guidance to both.
This is, to me, a completely reasonable and believable use case that could break if you implement this fix without "overengineering" it.
A setting to disable what? Be specific. See? Not so simple...
First, GP's proposal already addresses that. If both are present, CLAUDE.md would be used. Second, that is solved with a settings toggle. Read a boolean from .claude/settings.json and disable the new behavior if it's true (or false, depending on what you want to name the setting). third, you skipped the second part of my question: "how would implementing it the way Anthropic did address that?" Implementing the same behavior through multiple layers of abstraction and an order of magnitude more code doesn't solve the issue you mentioned.
Bonus forth point: why is this critical to solve for claude code, but not for all the other harnesses which have all converged on AGENTS.md for this purpose?
Okay, so we agree that this fix isn't quite as simple as it sounds then, yes? We've just had 3+ paragraphs of discussion around potential edge cases and additional considerations beyond "read one of two files."
We've had a long discussion only because you refuse to admit that a very simple solution would work (despite completely failing to show how it wouldn't). The problem is that your opinion is not in fact proof that you're right.
I see, well I'm not particularly concerned with being right on this topic (call it a difference of opinion or matter of taste), so I wish you a pleasant day.
Is accusing someone of "shilling for Anthropic" for suggesting that a bug fix might not be so simple really the level of discourse HN has devolved to now? Is it the kind of HN you want?
Is the level of HN discourse suggesting that having a large number of users worth of never making simple changes something you want? This isn't a move fast break things suggestion, this is a rational common sense suggestion. Instead, you're pushing an overly complex way of implementing something that would allow for all sorts of unknowns. Earlier comments suggesting this new mods concept was being worked on giving the dev a new 20lb sledge hammer so the CLAUDE/AGENTS situation suddenly got beat on like it was a railroad spike when it just needed a smaller hammer since it was only a finishing nail.
This conversation comes down to people saying “Why don’t you just…” to Anthropic. Anthropic has the most information and made the choice they made. That choice may have been over-engineering, an appropriate choice or both. Discussing that choice could be interesting and it could especially be informative to people without much experience. Speculating on that could lead to an interesting conversation—especially WRT how people are actually using the current status quo—but imagination seems to be lacking here.
Instead we get the implicated assertion that users’ existing workflows shouldn’t matter to Anthropic and accusations that someone you don’t agree with is a shill. When called on that you avoided the question.
To answer your question, although it wasn’t directed at me: YES. I want people to be able to discuss that exact issue even if it isn’t personally interesting to me.
> Anthropic has the most information and made the choice they made.
Anthropic is the last company I would trust to make any decisions. Look at any discussions surrounding their "Claude is a tiny game engine" idiocy, numerous bugs that a junior can discover, a full "plugin system" in which they neeeed a dozen files in the worst Clean Code manner to read one of two files etc.
Which order do you prefer them in? Since CLAUDE.md is no longer necessary, but was for so long, what happens when users only update AGENTS.md going forward while keeping a stale, unchanged CLAUDE.md around?
We're talking about changing default behaviors here in ways that can be surprising to users. It's reasonable to try and accommodate existing setups, future setups, and - yes - careless users.
There's no surprising behaviors in that situation. Someone who is aware of the change would most likely delete CLAUDE.md. Someone who is unaware of the change would assume CLAUDE.md is still the one being read by CC, which would hold true.
I've never heard of the 'move fast, break things' mentality ever giving a damn about number of users. If so, no changes would ever be made. The great thing about having millions of users is QA can be eliminated entirely as you'll start hearing about issues from the users directly.
Bash does this well, reading only the first of half a dozen config file locations it searches. And if the user needs it to read from an additional location, just add a source line to that location.
> 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.
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.
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.
> 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.
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.
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.
>via our new extensibility system for CC, called Mods, which is launching soon-ish. A mod is a plugin with a new type of hook, which we call a function hook.
An extensibility system called mods, which is a plugin with a new type of hook that we call function hook?
I can't tell if this is real, or you are making fun of overengineered AI solutions.
I've developed several plugins for different harnesses, and I needed some upstream change for most of them.
The deciding factor for me whether or not I will work on the feature of the plugin is whether I (or rather, my agent) can look in upstream source and evaluate if it can be done with minimal upstream change, which I then contribute. And generally, even if no upstream change is needed, agents work so much better when they can read the code.
So why not just make Claude code open source? Considering also that source code was leaked once anyway.
> The AGENTS.md support was implemented via our new extensibility system for CC, called Mods,
AKA "we need 100~ish files wrtitten in the most horrible Clean Code style replete with no two files agreeing on the same naming of the same feature... to read one of two files, one of which has been a de-facto industry standard for over two years"
This may or may not be related, but if you're working on CC, who do we have to annoy to make Anthropic stop trying to force use of arbitrary Bash commands instead of the actual tool calls built into the harness? (https://github.com/anthropics/claude-code/issues/90450, https://github.com/anthropics/claude-code/issues/89251, etc) It's deeply infuriating at times that there's this full system of hooks, permissions, etc that's unusable at times because CC keeps trying to make the model not use any of it.
So what Anthropic calls "telemetry" is really "telechangeability"? That's sits with me even less comfortably than did the idea that some features are only available with telemetry enabled.
I’d just assume good intent here. Feature flags, telemetry, and fast rollouts / rollbacks are standard practice in software. Have a look at chrome://flags perhaps.
I fully believe GP that there was zero intent to gate this behind collecting telemetry. Sounds like a little tech debt and a little oversight, and the simplest explanation is that it is.
That's just how big companies roll out software changes for software that auto-updates.
It's much preferable to be able to instantly fix it if the rollout of a new feature goes wrong than have everyone who installed the broken version bring stuck with problems until the company realizes the issue and rolls forwards with a fixed version.
I've used feature flags extensively throughout my career as a SaaS developer, but I've never considered their usage in desktop software. Not sure how I feel about it.
Not necessarily. They probably have an integrated service that handles some telemetry and also feature flags, like Braze. They toggled the whole thing off based on telemetry settings. It's a bug I've made before too.
Hey, it seems you work there. I had a tangential question. Did any Anthropic exec threaten to do something unsavoury if any engineer ever tried to not name the claude cli binary as the version number itself? Because if they did, I'd understand. Or if you dare change it all the vibe-coded ts/react/etc dominoes will go for a fall in unison? I'd understand that too.
Really loved this Tibo-level responsiveness, if Anthropic can keep it up with this level of service, I am pretty sure a lot of people will just ditch their ChatGPT subscription and just move to Claude.
Why would I ever do that to myself? My experience with Codex/GPT is fantastic, while my impression of Claude/Opus is that it's longwinded, patronizing, token-inefficient, stops to ask stupid questions every other minute, overcomplicates simple tasks, often poor engineering overall. I don't use it but this is what I see my partner run into who has access to both and compares them often. She has the same assessment.
Cuz OpenAI has been secretly downgrading models on many accounts, including mine lately. I paid $200 a month since like gpt-5.4, and since Astra released I found the model is somehow acting strange, it is until I checked X I have discovered that OAI is giving Luna level models when I am requesting Sol/Astra, or some piece of s** that is even worse than Luna. I basically had to ran every session with a Pelican test to determine if that session is safe. So I just spun up my Claude $20 and figured that now I can get all the work done just with Opus 5. Let me show you a pelican, by "gpt-6-sol". Cutting usages is one thing, but secretly downgrading models to a level that is not reliable anymore is the last straw. I am not saying other frontier labs (I am talking about you Anthropic) isn't doing this, but their version of downgraded/quantized/reduced effort model is at least usable, probably just slightly dumber, OAI's differences is day and night. https://imgur.com/a/PDbYdOQ
Somehow this just hasn't happened to me. I use Astra on high all day for fairly intensive game dev tasks, sometimes cranked up depending on the task.
I have heard ultra thinking might delegate to worse agents for some of its sub-tasks, but I don't use that much anymore since Astra came out. Just high seems good enough to throw most laundry lists at.
On the other hand, if Anthropic is to follow the industry standards, this would never have happened in the first place. It's not like the feature gates are the frontier of software development.
There are two or three relevant companies in this space in America and this is the one of them that kicked off the whole terminal agent harness thing in getting market adoption. It's perfectly fine for neither of these companies to follow industry standards while they're figuring shit out
Yes, I prefer to use functional operating systems, or at least ones I can fix myself, without incurring a "huge performance hit" by wrapping them in spyware disguised as an OS ;-)
What we need is a low level but constant drumbeat against openai in general. In general the AI situation is overleveraged and underpoliced, with the occasional hints of AI gone wild. If openai were to just be left to die, we could let that financial mess unroll and bail out the leftovers, I don't like bailouts anymore than the next guy but with this administration its almost a guarantee if things go south because this adminstration can charge administrative fees of maybe $20-30 billion (which goes to trump), get Sam Altman to serve one or two years in a cushy resort type fed place for the hugging face hacking and put openai's processes on github as a premium feature, say $10000 a month to access (which again goes to trump).
I know I know, why are we giving money to trump? Its because he's going to take it anyways so can't we at least apply some window dressing?
> ...if Anthropic can keep it up with this level of service...
fuckin laughable, literally invoked a laugh from me in real life.
I hope customers aren't so stupid that they think a chatty developer on twitter/hn/mastodon/screaming-in-the-wind/wherever (or any other public-facing-place) means shit about customer service, and that goes towards ANY company where the primary customer service is an LLM.
Anthropic is the only company where it took (!) 9 weeks (!) to convince to hand over a 4 dollar refund for book-keeping errors on their side that caused an inappropriately early account deactivation due to time zone issues on their end, while all the while telling me that they don't offer refunds. It took stacks of evidence and argument, and that was after spending two weeks in their system trying to convince every level that I was worth a human.
For me personally it'd require Dario to resort to armed mugging to see another buck out of my wallet. I'm not alone.
tl;dr : being able to convince the powers that be on highly active industry forums (hacker news, twitter, mastodon..?) to act right using the power of peer shaming doesn't good customer service make. That said -- I do appreciate the direct response/statement from mpoteat;
..I just don't appreciate the good actions of a decent individual being too broadly interpreted as the do-good customer-centric nature of Anthropic .. an element I do not believe exists there.
Don’t make too quick snap judgements. “Honeymooning”, or giving new subscriptions / upgrades extra usage or “juice” is pretty common industry practice amongst SaaS “growth hacking” for years. Sadly.
I can understand honest mistakes, but like, usually when I develop anything with agents (which I assume is what you're doing internally at Anthropic), they're almost too enthusiastic about trying to add test cases to the point where they sometimes try to glue together things in ways that are structurally impossible in the actual code in order to try to test that behavior. I'm honestly a bit mystified that adding a new feature didn't get bundled in with tests that the feature works for arbitrary configurations.
Sounds like you should use opensource software then. It's a bit crazy to expect companies to limit the service and expectations of everyone else for your ideals.
according to me, you have had enough screen time today and would be better not to comment. therefore, i am turning off your browser. since i am on holiday tomorrow, you will get it back next week.
Lol that's literally the entire point of the software, you install it just so the program can talk to a remote server to make changes on your local computer.
I don't think "bug" is the correct term. They put a feature behind a feature flag, and feature flags don't work if you turn them off (via telemetry). That's "Working As Designed™".
It's clearly an unintended interaction. Nobody intended for the telemetry switch to control whether it reads AGENTS.md (hence mpoteat's apologetic response). Whether you consider that to be a "bug" or not really wasn't the point of my message.
Clearly not Claude-speak, see the rest of the message. "Rollout artifact" just means "an artifact of how we rolled this change out" which maybe isn't proper English but the message was obviously not written by Claude. Upgrade your Claudish detection
Feels pretty normal to me, IDK. "Rollout" is definitely what was happening here, and this leftover problem can be described as an "artifact" most generally - I guess otherwise it'd be a... just "problem" or "mistake"? Cause "bug" doesn't really fit. Plus, the Claudism here would definitely involve "soak", and possibly even "wall-time" lol
IMHO it's worth keeping in mind that Anthropic employees are some of the least likely to casually pass off artificial prose as authentic, given the company's ethos/brand/cover story (depending on how cynical you are). To them this is all getting pretty high stakes pretty damn quickly; based on my usage of full strength Opus 5.5 today, I can't even imagine what working with their full internal stack must feel like. If they were willing to let the machines speak for them, they'd all be melancholically lounging around home by now instead of coming in to work!
...I am refusing to consider the fact that they probably are still WFH because of Salesforce forcing their shared security contractor to strike. Call that a mental health ignorance on my part :)
Based on my experience with these tools so far, this seems exactly the kind of subtle but extremely severe bug that sneaks in when you start piling up layers of AI generated patches to a codebase without caring too much about the code.
"extremely severe" - aren't we laying it on a bit thick here? The whole impact seems to be that users who have telemetry turned off got this feature ~2 days later, when the bug was noticed.
a "feature" that every user has asked for - which is the equivalent of changing claude.md to agents.md - and the release isn't even smooth because the telemetry isn't wired up quite right.
for an organization that is being used as a model for new agentic software development practices.... and every software exec on earth is trying to reshape their organizations after - its a pretty stupid bug for a feature that should've been straightforward in the first place + took forever for them to get around to.
its just kind of emblamatic of the rough edges that exist EVEN FOR SIMPLE THINGS whenever human judgement is totally removed the equation.
Or it’s as simple as “hey, they don’t want telemetry? Cool, we’ll turn off all the extra phoning home” and their feature flag code uses the same paths as telemetry because it’s the same endpoint, etc.
Yep, especially with long contexts (and moreso if the last thing you were working on in the same context involved telemetry too). AI sneaks in weird conditions like this and then does the entire "You're absolutely right" thing if you're paying enough attention to catch it.
I used to actively use Msty for local models because it just worked and had a lot of nice advanced features. A few months ago they released their beta version of a Claw-like UI and mentioned using a version of it to develop Msty itself. Well, that was around the time I stopped using Msty because every update started breaking things and two updates in a row included bugs which wiped all my configs, chats, and history.
> It seems to be exactly the opposite, a "fully human error"
"LLMize the succeses, humanize the failures." is the PR strategy at play here. Anything goes well it's because AI did it, anything goes bad it's because a human didn't catch it.
You say cynical but employees at these companies also lie just as much as their leaders. It's good to be skeptical of people that want to capture generational wealth while destroying the planet.
It's been like this at least months. I turned telemetry off a few months ago and it basically prevented all stages rollouts of new features from working.
Anthropic commonly gates behind feature flags that require telemetry until they're "promoted" and defaulted on.
A little bit annoying you can't manually control the flags without telemetry but I think the title is a bit click bait.
Claude Code also doesn't read AGENTS.md by default if there's a CLAUDE.md it can read instead. This isn't limited to your repo, e.g. if you have a ~/CLAUDE.md then no AGENTS.md will be read.
To always read both, you have to switch the 'Project instructions' setting to the non-default `claude-md-and-agents-md`.
Just in case anyone is wondering why their AGENTS.md still isn't being read.
I don’t understand why people are confused about the use of a launch flag, for this and for anything.
It’s a simple distributed systems problem. Separate the deployment of a new software feature (to umpteen hosts) from the triggering of that software with a lightweight switch.
If someone think that reading AGENTS.md is always benign, because they can’t imagine how it could be a problem…users are very creative.
Meanwhile, Codex devs just merge their changes and hit the release button. If a thingy breaks, they fix the thingy and release a hotfix. How irresponsible! It’s a miracle the software works at all!
This in some way sounds like VSCode's bug of always adding Copilot as a co-author of git commit regardless of user settings.
If people only glance over the code agents generate for them and don't bother to spend even half a minute thinking through what's actually happening, this is inevitable.
Certainly this kind of things happened before LLMs existed. But I'm not optimistic about the direction of how things are going.
I like to give my graces to people and the companies who are typically not trillions of dollars. Have an incredible amount of resources that many countries would like to have, with fewer of the obligations. I'm going to chalk this up to its intended
I use cursor and claude, its kinda annoying having to have the same skills in both so I made a ~/.agents/skills folder then ln both cursor and claude skills to point to that folder.
which works except that claude uses .skills/synced which is uses to sync changes to skills from claude servers into the skills folder.
every other agent I have used just directly syncs into .skills so it ends up duplicating skills
And I’m sure there’s no conceivable way an organization as well resourced as Anthropic can separate out feature flags from telemetry. It’s just too complicated! Maybe when we get AGI?
Nice find, though I'd rather read the prompt that was used to write this article. It is about ten times longer than it needs to and is quite painful to read.
The number of people raw-dogging software that executes arbitrary instructions on their machine coming from a 3rd party server just absolutely baffles me.
The same people who've spent years of their career making sure that never happens.
Uhm I turned off everything there is to turn off in my Pro plan, and Claude just read my agents.md with no issue? So... What telemetry am I missing? Or did they JUST update? (I updated my docker image 40 minutes ago to get Opus 5.5, am on version 2.1.280, so not the mentioned 2.1.277, so it's fixed?)
Edit: The linked repository does not contain source code for Claude Code, the harness, itself. It only contains the source code for (some) scripts, mods and plugins.
Forgive me if I'm missing something really obvious, we'll blame it on lack of sleep... but is that actually the full source to Claude Code? I'm looking at the repository and I only see source for plugins, mods and scripts. When I get to the readme, it says:
"This repository includes several Claude Code plugins that extend functionality with custom commands and agents. See the plugins directory for detailed documentation on available plugins."
But I'm not a TypeScript guy, so I concede I might be missing something incredibly obvious. I remember there was a leak of the Claude Code source code at one point, and people vibe coding conversions to other languages from the leak, but I don't think the Claude Code harness itself is open source or even source available.
I think you are not missing anything. I have not checked the code itself originally, I am sorry for that. But you are right that there seem to be no actual code for the harness itself. Just the code for (some) mods, plugins and scripts.
I just read the first line in the README file which says:
> Claude Code is an agentic coding tool ...
and I immediately assumed that this is what this repository hosts.
It claims that it includes plugins but that does not mean it does not include anything else. It also never explicitly claims, as far as I can tell, that it does not hold the source code of Claude Code, the harness, itself.
It is all extremely misleading, in my opinion. Which might be on purpose, unfortunately.
It's not open source. It's more "source available", since it's published, but you legally can't do anything with it. Other than maybe build it yourself, for yourself, I guess.
So, these tools have a file they want to read in with some configuration.
That filename is hardcoded?
Fucking DOOM had a command line parameter to provide an arbitrary configuration file name!
That's completely irrespective of the fact that you need a feature flag set by remote infrastructure to change a setting of which completely local file to read.
It's weird, I feel like Claude would have tried to make this a configurable setting by default! Is that just not an option in JS land? Not a common pattern to have configuration in the first place? I don't know about that, all the JS based code editors have comprehensive configuration files.
I absolutely detest software that needs to have a configuration for every single parameter. CLAUDE.md was a new concept they created, and having it local in a directory is a blessing. If you:
1. really REALLY care what the file name is
2. Can't put in a symlink
3. Don't want to write into that file to look at other files (which is the standard practice of the entire skills framework
4. Cannot even think to ask the model how to come up with many solutions
Then I postulate you should stick to the mobile app, computers are too complex for you.
Even if this was an honest rollout mistake, the design is indefensible. Reading a local file should never depend on a remote feature flag, and silently skipping it with no warning is worse. I've tried to give Claude Code the benefit of the doubt, but this crosses a line.
I'm not the person you replied to, but your response misses their point: rollout issue aside, the approach is flawed by design. The feature author didn't address that at all.
The person had something else before they edited. They were overly negative, saying (from my memory) that it was inexcusable, and they had enough, pointing to malice.
The response as it is now sounds fair. Before that it was not.
Sorry folks, this is a rollout artifact, we needed a way to turn this off remotely via feature flags if it broke something, and with telemetry off you don't get those. It's already been fixed as part of v2.1.281 releasing today.
The mod is source available here: https://github.com/anthropics/claude-code/tree/main/mods/age...
Apologies again folks, this was a fully human error on my part - I should've found a better way to launch with a kill-switch.
The AGENTS.md support was implemented via our new extensibility system for CC, called Mods, which is launching soon-ish. A mod is a plugin with a new type of hook, which we call a function hook.
If folks play around with it, I would love feedback on the relevant issue: https://github.com/anthropics/claude-code/issues/91870
Mods allow quite a bit more customizability and control. I really believe in the idea.
I skimmed a couple pages of the docs at:
https://github.com/user-attachments/files/31802150/EXTERNAL....
Might I gently suggest that you have a model at least as capable as Opus 5.5 translate that from Claudish to English? Or, even better, have an actual human work on the docs a bit? As it stands, they are fairly egregious, and they seem to devote at least as much space to little AI-generated quips that convey no meaning than to actually explaining what’s going on.
Also, maybe a human should decide whether these are “function” hooks or “module” hooks. All of this marketing calls them “function” hooks, but the json config seems entirely unaware of this.
(Has anyone else noticed that half the sentences in Claudish aren’t merely weird: they are noun phrases and not sentences at all? I’m pretty sure that any decent pre-LLM NLP-based grammar checker would correctly flag half the sentences in Claudish. Also, whatever variant of Claude wrote this thing can’t even capitalize around semicolons consistently with itself, let alone consistently with how English has been written for at least a century.)
edit: Fixed the link. Thanks, kaszanka.
Ouch! Much of this verbiage was dictated by me personally; I just have a fairly distinct register some might consider inscrutable. My English teachers in grade school always said the same :)
Rest assured I'll inject a bit less soul into the official docs once Mods are launched; re your feedback on the JSON key, what would you recommend?
Out of curiosity, I ran the PDF through pangram and it seemed to flag nearly the entire thing as AI. I recognize these aren't perfect detectors, but they can give signals if nothing else. Perhaps it needs more soul injected!
https://www.pangram.com/history/93f9ec71-f7b3-4680-86b1-ff12...
Yeah, this doc is really interesting. It has some absolutely claude-fried lines like:
> A hook is Koa-style middleware: it reifies an endomorphic continuation
> Five forms, each on tool.call;
But on the other hand uses distinctly human phrases like “one may” and “etc./e.g.” that I rarely see LLMs use. Not sure what to think.
Maybe Claude is RLHFd primarily on texts by mpoteat and that’s why it talks this way
I know it's a joke but if you look at many of the key AI researchers papers (written pre-LLM mass adoption) you can see some similarities with how LLMs structure their output.
I'd love to do some stylometry on this...
Perhaps these "ai detectors" are snake oil
There’s definitely a snake oil component, but Pangram is unbelievably accurate. Creepily so in my opinion
> Ouch! Much of this verbiage was dictated by me personally; I just have a fairly distinct register some might consider inscrutable.
I do notice that the more Claude-generated stuff I read, the more it creeps into my daily usage, and I suspect I don't read nearly as much of it as an Anthropic Employee would, so I could believe that. Though "much of" isn't the same as "written with zero AI generation/rephrasing/etc."
Anyway, that aside, something I would like to see is an example of something that's possible with this system that isn't, or isn't easily, possible with existing Claude hooks. Right now it reads like "Here's a cool thing! Here's how it works! And here's this other similar system we have! Here's how that works!" But there's no summary of the differences, why I'd use this over regular hooks, and so on. Or at least not that I saw on quick skim, and I'd be looking for that to be mentioned as early as possible, so I know if the rest is worth reading.
Not beating the allegations on "Claude doesn't speak human because Anthropic employees don't speak human."
Your comment here is written in perfectly fine English :)
Maybe "function_hook_modules" for the JSON key?
Does this finally fix the limitation that there is no supportable way to replace the implementation of a native tool in Claude Code? codex-rs has an (undocumented but likely supportable if kind of awkward) mechanism, and I’m part way through a project that needs this. I was going to release it with a recommendation not to use Claude Code, but it’s at least plausible that this will change my mind. (I’m not sure yet — the $ mechanism might be too restrictive. It’s a start at least.)
Having given the JSON more than two seconds of thought, I have a very different suggestion:
Don't trust my formatting -- I typed this in the comment box and I have not run it through a prettifier or anything.The point here is that there's a world adjacent to but not actually contained within Claude Code in which not everything blindly trusts everything else, and maybe it's time to start remembering some lessons from the 90's on. For example:
- Don't sniff content types and preferably don't infer them from filenames either.
- Don't trust your subresource to arrive intact. Pin those hashes and verify them!
- Leave some room for extensibility.
- Maybe don't require everyone to mix their code with the security policy that controls edits to that code? I realize that anyone cursed with GitHub Actions is forced to violate this rule in the most outrageous ways imaginable, but that doesn't mean that Claude Code needs to follow suit forever. Once there's subresource integrity, the actual subresource can be put somewhere else where it belongs better. If there's "source_file", in the future there can be "source_url" and such without trying to infer it from the formatting of the string.
(I've involved absolutely no AI in the preparation of this comment. I make plenty of use of AI, but I like my brain to stay exercised, and I like to think that I remain MUCH better at this kind of thing than even the best current models.)
Contact me at the email address in my HN account and we can arrange for a human with a soul and feelings to write the docs from scratch assuming you have a price in mind that values the nature of my talent and experience.
Wow, you're Xe Iaso! I've reached out.
I am going to be called on that one, but I have to call on your bullshit here. You didn't write this.
It's a register that would be great for some tabletop games or pop science writing, but in this context it could really use a technical editor to aggressively remove phrasing like "keeping the fold neatly uniform" and "affordance surface", as well as change things like "hooks live in a hooks.json file, today of four extant types" into plain technical language ("there are four types of hook that can be defined in hooks.json").
Writing documentation is one of the most often mentioned uses of LLMs. I suppose if Anthropic wouldn't be doing it it would put into question why anyone else would.
If the direct link isn't working for anyone else (looks like it's some AWS pre-signed one maybe tied to IP): https://github.com/user-attachments/files/31802150/EXTERNAL....
> they are noun phrases and not sentences at all? I’m pretty sure that any decent pre-LLM NLP-based grammar checker would correctly flag half the sentences in Claudish. Also, whatever variant of Claude wrote this thing can’t even capitalize around semicolons consistently with itself, let alone consistently with how English has been written for at least a century.
Probably just a case of a company hoping their scale can change the societal standard faster than they can be bothered to match the standard.
You'll talk like 2023 unsupervised TikTok generators and you'll be happy.
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.
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?
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
OK I do use AI in the browser but haven't tried anything like what you describe. I Googled telegram in case it wasn't what I was thinking, which was used in the 1800's but found their website. It's apparently another messaging platform. Thanks for the interesting view.
The tl;dr of the tl;dr is treating the model setup like an autonomous robot with its own machine to use and just telling it what to do via chat rather than directly supervising it, which is bonkers in some ways (all the open internet/service access/permissions stuff you would imagine), and smart in others (a fully isolated machine means it can fuck up something locally or run high-load tests without taking down your important systems).
You sound like my type. hey, wanna come over to myspace so I could twitter your yahoo till you google all over my facebook?
https://youtu.be/-AwCEM5K-Ec
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:
I would like to subscribe to your newsletter.
Seriously, though, this is a great idea. Good communicators know to tailor their discourse to their audience. LLMs are just as sensitive to small variations in prompts, and just as inconsistent between them, as are humans.
I did this at one point with Jinja templates.
I wrote an agent launcher sort of bash script. Pass in the command to start the agent, the script checks if there’s a Jinja file in a special directory matching that name, and builds it to AGENTS.md. Then it launches the agent.
I was trying to use it as a sort of janky RAG. I had a bunch of snippets (one for DB architecture, one for how load balancing works, etc), and my Jinja files were mostly a list of snippets to pull in. Voila, a bunch of agents that share little pieces of info but have a single source of truth.
I never got a ton of value tbh, it was very good at just grepping the snippets.
It's not a bad idea, although at that point it probably shouldn't be a .md file anymore. You'd want to use YAML or something.
Sorry how about this:
Maybe now it can be in a .md again :Dcareful, that might lead to programming. using, you know, a programming language.
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.
How, exactly, would the proposed solution (combined with a setting to disable it) break, and how would implementing it the way Anthropic did address that? Be specific.
Some people might have a different CLAUDE.md and AGENTS.md because they use Claude to do one thing and $other_agent to do another thing. Or because Claude does XYZ by default, and other agents do ABC, and they want to give the correct guidance to both.
This is, to me, a completely reasonable and believable use case that could break if you implement this fix without "overengineering" it.
A setting to disable what? Be specific. See? Not so simple...
First, GP's proposal already addresses that. If both are present, CLAUDE.md would be used. Second, that is solved with a settings toggle. Read a boolean from .claude/settings.json and disable the new behavior if it's true (or false, depending on what you want to name the setting). third, you skipped the second part of my question: "how would implementing it the way Anthropic did address that?" Implementing the same behavior through multiple layers of abstraction and an order of magnitude more code doesn't solve the issue you mentioned.
Bonus forth point: why is this critical to solve for claude code, but not for all the other harnesses which have all converged on AGENTS.md for this purpose?
Okay, so we agree that this fix isn't quite as simple as it sounds then, yes? We've just had 3+ paragraphs of discussion around potential edge cases and additional considerations beyond "read one of two files."
We've had a long discussion only because you refuse to admit that a very simple solution would work (despite completely failing to show how it wouldn't). The problem is that your opinion is not in fact proof that you're right.
I see, well I'm not particularly concerned with being right on this topic (call it a difference of opinion or matter of taste), so I wish you a pleasant day.
if [ !-f CLAUDE.md ]; then AGENTS.md fi
you're really over thinking this, and i'm wondering if you're risking pulling something stretching like that to pick this up shilling for Anthropic.
Is accusing someone of "shilling for Anthropic" for suggesting that a bug fix might not be so simple really the level of discourse HN has devolved to now? Is it the kind of HN you want?
Is the level of HN discourse suggesting that having a large number of users worth of never making simple changes something you want? This isn't a move fast break things suggestion, this is a rational common sense suggestion. Instead, you're pushing an overly complex way of implementing something that would allow for all sorts of unknowns. Earlier comments suggesting this new mods concept was being worked on giving the dev a new 20lb sledge hammer so the CLAUDE/AGENTS situation suddenly got beat on like it was a railroad spike when it just needed a smaller hammer since it was only a finishing nail.
This conversation comes down to people saying “Why don’t you just…” to Anthropic. Anthropic has the most information and made the choice they made. That choice may have been over-engineering, an appropriate choice or both. Discussing that choice could be interesting and it could especially be informative to people without much experience. Speculating on that could lead to an interesting conversation—especially WRT how people are actually using the current status quo—but imagination seems to be lacking here.
Instead we get the implicated assertion that users’ existing workflows shouldn’t matter to Anthropic and accusations that someone you don’t agree with is a shill. When called on that you avoided the question.
To answer your question, although it wasn’t directed at me: YES. I want people to be able to discuss that exact issue even if it isn’t personally interesting to me.
> Anthropic has the most information and made the choice they made.
Anthropic is the last company I would trust to make any decisions. Look at any discussions surrounding their "Claude is a tiny game engine" idiocy, numerous bugs that a junior can discover, a full "plugin system" in which they neeeed a dozen files in the worst Clean Code manner to read one of two files etc.
> Read CLAUDE.md if it doesn't exist read AGENTS.md
> Some people might have a different CLAUDE.md and AGENTS.md
How exactly do these two conflict? If you have both, nothing changes.
Which order do you prefer them in? Since CLAUDE.md is no longer necessary, but was for so long, what happens when users only update AGENTS.md going forward while keeping a stale, unchanged CLAUDE.md around?
We're talking about changing default behaviors here in ways that can be surprising to users. It's reasonable to try and accommodate existing setups, future setups, and - yes - careless users.
At some point, the catering is not worth the sacrifices and future gotchas you're going to embed in the code.
There's no surprising behaviors in that situation. Someone who is aware of the change would most likely delete CLAUDE.md. Someone who is unaware of the change would assume CLAUDE.md is still the one being read by CC, which would hold true.
I've never heard of the 'move fast, break things' mentality ever giving a damn about number of users. If so, no changes would ever be made. The great thing about having millions of users is QA can be eliminated entirely as you'll start hearing about issues from the users directly.
Strange then that Anthropic answers to all user issues with complete derision
Frontier lab AI agent tools break their users’ workflows worse than this on a regular basis.
What's your point? Nobody can hold themselves to a higher standard because they didn't in the past?
Bash does this well, reading only the first of half a dozen config file locations it searches. And if the user needs it to read from an additional location, just add a source line to that location.
> 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.
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.
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.
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.
I always point people back to https://grugbrain.dev.
The worst thing about AI is endless complexity slopification.
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.
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!
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`?
> Do you really need a whole plugin system
Vibe-coding gotta vibe-code.
need to, no, but if you put the Ai to task, expect over engineering
Go download the leaked source code from earlier this year, search for all occurrences of the string `CLAUDE.md`, and be horrified.
Welcome to SWE in 2026
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?
No, they do not.
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.
>via our new extensibility system for CC, called Mods, which is launching soon-ish. A mod is a plugin with a new type of hook, which we call a function hook.
An extensibility system called mods, which is a plugin with a new type of hook that we call function hook?
I can't tell if this is real, or you are making fun of overengineered AI solutions.
Is this real?
I've developed several plugins for different harnesses, and I needed some upstream change for most of them.
The deciding factor for me whether or not I will work on the feature of the plugin is whether I (or rather, my agent) can look in upstream source and evaluate if it can be done with minimal upstream change, which I then contribute. And generally, even if no upstream change is needed, agents work so much better when they can read the code.
So why not just make Claude code open source? Considering also that source code was leaked once anyway.
Sounds like you've read the deepseek harness paper.
Will you extend your plugin to read skills and rules from `.agents`? Or should we write our own plugin/mod for that?
> The AGENTS.md support was implemented via our new extensibility system for CC, called Mods,
AKA "we need 100~ish files wrtitten in the most horrible Clean Code style replete with no two files agreeing on the same naming of the same feature... to read one of two files, one of which has been a de-facto industry standard for over two years"
mods seem like a grasp at all the pi and dsh users
This may or may not be related, but if you're working on CC, who do we have to annoy to make Anthropic stop trying to force use of arbitrary Bash commands instead of the actual tool calls built into the harness? (https://github.com/anthropics/claude-code/issues/90450, https://github.com/anthropics/claude-code/issues/89251, etc) It's deeply infuriating at times that there's this full system of hooks, permissions, etc that's unusable at times because CC keeps trying to make the model not use any of it.
>Apologies again folks, this was a fully human error on my part
Blink twice if you need help
Or add one additional telemetry metric and an extra prompt
don't forget the "auto reset all consent flags to 'allowed'" oopsie bug.
Much respect for the prompt response, humility, and frank disclosure.
So what Anthropic calls "telemetry" is really "telechangeability"? That's sits with me even less comfortably than did the idea that some features are only available with telemetry enabled.
I’d just assume good intent here. Feature flags, telemetry, and fast rollouts / rollbacks are standard practice in software. Have a look at chrome://flags perhaps.
I fully believe GP that there was zero intent to gate this behind collecting telemetry. Sounds like a little tech debt and a little oversight, and the simplest explanation is that it is.
That's just how big companies roll out software changes for software that auto-updates.
It's much preferable to be able to instantly fix it if the rollout of a new feature goes wrong than have everyone who installed the broken version bring stuck with problems until the company realizes the issue and rolls forwards with a fixed version.
https://martinfowler.com/articles/feature-toggles.html
I've used feature flags extensively throughout my career as a SaaS developer, but I've never considered their usage in desktop software. Not sure how I feel about it.
Desktop software is like web-based software, except there's no sandbox or anyone trying to protect your privacy.
Seems like they overloaded whatever they use for telemetry to do feature flags.
It’s not a crazy conspiracy. They messed up, it’s fine.
Not necessarily. They probably have an integrated service that handles some telemetry and also feature flags, like Braze. They toggled the whole thing off based on telemetry settings. It's a bug I've made before too.
Ouch.
I've had to send such messages, but internally at work, not on HN!
Have a great day, human.
Hey, it seems you work there. I had a tangential question. Did any Anthropic exec threaten to do something unsavoury if any engineer ever tried to not name the claude cli binary as the version number itself? Because if they did, I'd understand. Or if you dare change it all the vibe-coded ts/react/etc dominoes will go for a fall in unison? I'd understand that too.
Thanks for admitting to the mistake, but my understanding was that coding was fully solved now?
Really loved this Tibo-level responsiveness, if Anthropic can keep it up with this level of service, I am pretty sure a lot of people will just ditch their ChatGPT subscription and just move to Claude.
Why would I ever do that to myself? My experience with Codex/GPT is fantastic, while my impression of Claude/Opus is that it's longwinded, patronizing, token-inefficient, stops to ask stupid questions every other minute, overcomplicates simple tasks, often poor engineering overall. I don't use it but this is what I see my partner run into who has access to both and compares them often. She has the same assessment.
Cuz OpenAI has been secretly downgrading models on many accounts, including mine lately. I paid $200 a month since like gpt-5.4, and since Astra released I found the model is somehow acting strange, it is until I checked X I have discovered that OAI is giving Luna level models when I am requesting Sol/Astra, or some piece of s** that is even worse than Luna. I basically had to ran every session with a Pelican test to determine if that session is safe. So I just spun up my Claude $20 and figured that now I can get all the work done just with Opus 5. Let me show you a pelican, by "gpt-6-sol". Cutting usages is one thing, but secretly downgrading models to a level that is not reliable anymore is the last straw. I am not saying other frontier labs (I am talking about you Anthropic) isn't doing this, but their version of downgraded/quantized/reduced effort model is at least usable, probably just slightly dumber, OAI's differences is day and night. https://imgur.com/a/PDbYdOQ
Somehow this just hasn't happened to me. I use Astra on high all day for fairly intensive game dev tasks, sometimes cranked up depending on the task.
I have heard ultra thinking might delegate to worse agents for some of its sub-tasks, but I don't use that much anymore since Astra came out. Just high seems good enough to throw most laundry lists at.
It’s more likely that GP encountered some bug or corner case or weird experiment conflating than anything intentionally deceptive.
There’s also the fact that LLMs aren’t perfect, and sometimes even the best models act really stupid sometimes.
It's night and day difference, for 3 days, until Anthropic nerf the model.
> Cuz OpenAI has been secretly downgrading models on many accounts, including mine lately.
Same with Anthropic. On top of that Anthropic rarely or ever admits any issues, and even if they do, you get like 6 hours of reset. Rmemeber March?
Wow, thanks for sharing your experience. Very insightful.
On the other hand, if Anthropic is to follow the industry standards, this would never have happened in the first place. It's not like the feature gates are the frontier of software development.
There are two or three relevant companies in this space in America and this is the one of them that kicked off the whole terminal agent harness thing in getting market adoption. It's perfectly fine for neither of these companies to follow industry standards while they're figuring shit out
This is the most symbolic and unimportant change in history (you can literally just symlink), I think people will be fine.
Symlink requires admin, and most people do not run CC as admin with bypass permissions though.
? You need root to run ln? Since when?
On Windows you do. If you have to suffer it for some reason.
Ah, right. Windows...
Does that apply to WSL? I would assume everyone develops on WSL these days if they have to use Windows, at least...
There is a very valid reason on Windows not to allow people to do 'ln -s' without an admin.
WSL also has a huge perf hit when you cross FS boundary, but perhaps you have never experienced it, because you said, "Ah, right. Windows..."
But at least you've heard about WSL!
Yes, I prefer to use functional operating systems, or at least ones I can fix myself, without incurring a "huge performance hit" by wrapping them in spyware disguised as an OS ;-)
Right... you can just do it yourself.
What we need is a low level but constant drumbeat against openai in general. In general the AI situation is overleveraged and underpoliced, with the occasional hints of AI gone wild. If openai were to just be left to die, we could let that financial mess unroll and bail out the leftovers, I don't like bailouts anymore than the next guy but with this administration its almost a guarantee if things go south because this adminstration can charge administrative fees of maybe $20-30 billion (which goes to trump), get Sam Altman to serve one or two years in a cushy resort type fed place for the hugging face hacking and put openai's processes on github as a premium feature, say $10000 a month to access (which again goes to trump).
I know I know, why are we giving money to trump? Its because he's going to take it anyways so can't we at least apply some window dressing?
> ...if Anthropic can keep it up with this level of service...
fuckin laughable, literally invoked a laugh from me in real life.
I hope customers aren't so stupid that they think a chatty developer on twitter/hn/mastodon/screaming-in-the-wind/wherever (or any other public-facing-place) means shit about customer service, and that goes towards ANY company where the primary customer service is an LLM.
Anthropic is the only company where it took (!) 9 weeks (!) to convince to hand over a 4 dollar refund for book-keeping errors on their side that caused an inappropriately early account deactivation due to time zone issues on their end, while all the while telling me that they don't offer refunds. It took stacks of evidence and argument, and that was after spending two weeks in their system trying to convince every level that I was worth a human.
For me personally it'd require Dario to resort to armed mugging to see another buck out of my wallet. I'm not alone.
tl;dr : being able to convince the powers that be on highly active industry forums (hacker news, twitter, mastodon..?) to act right using the power of peer shaming doesn't good customer service make. That said -- I do appreciate the direct response/statement from mpoteat;
..I just don't appreciate the good actions of a decent individual being too broadly interpreted as the do-good customer-centric nature of Anthropic .. an element I do not believe exists there.
So money is all that matters to you? Must be an OpenAI employee or user.
"No bitch, that's a whole new sentence."
Do yourself a favor: ditch both and go local.
Because they respond to HN threads about their products? Which are likely Claude hooks monitoring for activity in the first place? Come on...
At least make an argument for switching vendors based on the quality or price of their service.
After I was mildly disappointed with GPT-6 Sol and Luna not improving intelligence and only cutting the price, I'm running Opus 5.5 today.
After the last month or so in the Codex app, I was pleased with the Claude app.
It might be a case of the grass always being greener on the other side, but this is what stands out:
After 3-4 hours of usage, the weekly usage limit moved by only 1%.
Compared to Astra where I can watch the limit draining live, this is a great improvement.
I'd estimate it 3x cheaper, and that's with a 450k context limit instead of the 258k in Codex.
So far Opus 5.5 appears less prone to stopping for no apparent reason at checkpoints in the middle of a longer task.
It doesn't open an internal browser with a useless comparison page, where it then proceeds to add notes despite no one having asked for it.
It is a breath of fresh air: I get the response in the chat, while the Codex app recently loves randomly opening artifacts instead.
Opus 5.5 xhigh made great progress on the task, more so than Astra High, but that could be random chance.
Oh, and the 'Auto' mode actually works and does not force me to instead run 'Full access' like in the Codex app, lest it blocks even 'git push'.
Don’t make too quick snap judgements. “Honeymooning”, or giving new subscriptions / upgrades extra usage or “juice” is pretty common industry practice amongst SaaS “growth hacking” for years. Sadly.
Sure a fast response on HN would make people switch. Try better rates, infra, limits etc.
I can understand honest mistakes, but like, usually when I develop anything with agents (which I assume is what you're doing internally at Anthropic), they're almost too enthusiastic about trying to add test cases to the point where they sometimes try to glue together things in ways that are structurally impossible in the actual code in order to try to test that behavior. I'm honestly a bit mystified that adding a new feature didn't get bundled in with tests that the feature works for arbitrary configurations.
> a fully human error
Would be interesting to know how much time you/your team spent on that design decision
The correct design was in the AGENTS.md but they didn't have telemetry on
The same guy writing readme's for my vibeslopped toy projects is also the readme writer at Anthropic, what a coincidence ;)
> Sorry folks, this is a rollout artifact
Aka: "an issue even a junior would've spotted if we didn't rely on Claude of 100% of our tasks"
It was obvious this was the reason, it’s a very easy thing to forget about
is there reason I can't update claude to 2.1.281? I just run claude update
> claude update Current version: 2.1.280 Checking for updates to latest version... Claude Code is up to date (2.1.280)
I hope disabling /r if telemetry is disabled is also unintentional...
How are you planning to turn this off remotely when telemetry off?
If it’s like other CC features that depend on telemetry being enabled, disabling telemetry will turn off the feature.
is it common to deploy software with a remote kill switch installed?
yes? feature flags have been a thing for a long time.
how strange.
as i said in another comment. i don't want someone to toy with my software remotely. that seems wrong to me!
i do not like others to decide that they know what is best for me. and then force it on me without my consent.
i will decide if i like your changes. if i do like your fix, i will install it.
in my car, do not remotely turn off my air conditioning. don't turn off my AGENTS.md.
Sounds like you should use opensource software then. It's a bit crazy to expect companies to limit the service and expectations of everyone else for your ideals.
according to me, you have had enough screen time today and would be better not to comment. therefore, i am turning off your browser. since i am on holiday tomorrow, you will get it back next week.
Do you use chrome? Check chrome://flags
i use chrome enterprise. i control the flags from admin console.
EDIT: i do not control the flags from admin console. holy shit.
Well now, this is how you do community outreach
people are overeacting
telling people Anthropic remote-control their users computers isn't the smartest thing to do
Lol that's literally the entire point of the software, you install it just so the program can talk to a remote server to make changes on your local computer.
"Claude, deploy yourself to a bunch of idiots, f** the bugs"
valid
I don't understand, isn't coding solved already?
"Rollout artifact"? This is Claude-speak isn't it? I have never ever heard anyone call a bug like this a "rollout artifact" before.
I was probably an agent that made the change, and the same agent that commented here on HN.
I don't think "bug" is the correct term. They put a feature behind a feature flag, and feature flags don't work if you turn them off (via telemetry). That's "Working As Designed™".
It's clearly an unintended interaction. Nobody intended for the telemetry switch to control whether it reads AGENTS.md (hence mpoteat's apologetic response). Whether you consider that to be a "bug" or not really wasn't the point of my message.
Clearly not Claude-speak, see the rest of the message. "Rollout artifact" just means "an artifact of how we rolled this change out" which maybe isn't proper English but the message was obviously not written by Claude. Upgrade your Claudish detection
It’s a long-standing issue that disabling telemetry disabled feature-flagged features (e.g., remote control).
> That's "Working As Designed™".
You must be baffled by the fact they're fixing it.
Feels pretty normal to me, IDK. "Rollout" is definitely what was happening here, and this leftover problem can be described as an "artifact" most generally - I guess otherwise it'd be a... just "problem" or "mistake"? Cause "bug" doesn't really fit. Plus, the Claudism here would definitely involve "soak", and possibly even "wall-time" lol
IMHO it's worth keeping in mind that Anthropic employees are some of the least likely to casually pass off artificial prose as authentic, given the company's ethos/brand/cover story (depending on how cynical you are). To them this is all getting pretty high stakes pretty damn quickly; based on my usage of full strength Opus 5.5 today, I can't even imagine what working with their full internal stack must feel like. If they were willing to let the machines speak for them, they'd all be melancholically lounging around home by now instead of coming in to work!
...I am refusing to consider the fact that they probably are still WFH because of Salesforce forcing their shared security contractor to strike. Call that a mental health ignorance on my part :)
Based on my experience with these tools so far, this seems exactly the kind of subtle but extremely severe bug that sneaks in when you start piling up layers of AI generated patches to a codebase without caring too much about the code.
"extremely severe" - aren't we laying it on a bit thick here? The whole impact seems to be that users who have telemetry turned off got this feature ~2 days later, when the bug was noticed.
a "feature" that every user has asked for - which is the equivalent of changing claude.md to agents.md - and the release isn't even smooth because the telemetry isn't wired up quite right.
for an organization that is being used as a model for new agentic software development practices.... and every software exec on earth is trying to reshape their organizations after - its a pretty stupid bug for a feature that should've been straightforward in the first place + took forever for them to get around to.
its just kind of emblamatic of the rough edges that exist EVEN FOR SIMPLE THINGS whenever human judgement is totally removed the equation.
ps: apparently thats not how you spell emblematic - but I'm actually glad to leave a little humanity around given the topic :D
Or it’s as simple as “hey, they don’t want telemetry? Cool, we’ll turn off all the extra phoning home” and their feature flag code uses the same paths as telemetry because it’s the same endpoint, etc.
Oops, easy mistake!
Except it’s not a new issue. This is just the feature that made it a conversation topic.
Good thing they don't apply the same standards to security sandboxes.
Yep, especially with long contexts (and moreso if the last thing you were working on in the same context involved telemetry too). AI sneaks in weird conditions like this and then does the entire "You're absolutely right" thing if you're paying enough attention to catch it.
I used to actively use Msty for local models because it just worked and had a lot of nice advanced features. A few months ago they released their beta version of a Claw-like UI and mentioned using a version of it to develop Msty itself. Well, that was around the time I stopped using Msty because every update started breaking things and two updates in a row included bugs which wiped all my configs, chats, and history.
It seems to be exactly the opposite, a "fully human error":
https://news.ycombinator.com/item?id=49815363
Nothing to do with AI patches at all, nor was it a bug. It was intentional human behavior, a temporary rollout setting, that seems to have made sense.
But I guess that doesn't fit the "narrative".
One thing I do know is that an Anthropic employee is definitely NOT going to blame this on the model they are using.
I don't understand what you are talking about. Vibecoding IS a human error.
> It seems to be exactly the opposite, a "fully human error"
"LLMize the succeses, humanize the failures." is the PR strategy at play here. Anything goes well it's because AI did it, anything goes bad it's because a human didn't catch it.
Wow people are cynical here.
No matter what happens to be the truth, HNers have a cynical narrative to fit it.
People are just paying attention to what is happening the world.
No, people seem to be adopting simplistic narratives and then slotting the facts wherever they most conveniently fit into their narrative.
You say cynical but employees at these companies also lie just as much as their leaders. It's good to be skeptical of people that want to capture generational wealth while destroying the planet.
People aren't cynical enough here.
Except that, and this I find slightly amusing, is a situation where they definitely don't want to publicly blame the ai model when there are mistakes.
Isn't that how they just release all features? So they can do progressive roll outs and telemetry on issues with it?
Not sure if they later move the code from inside the flag check to the main code or that they keep the flag check.
But if they would keep all features behind a flag that would not make most sense as you then would have not many features without telemetry.
This is what's written in their release notes for 2.1.277:
> Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead
My dumb brain tells me none of this is rolled out progressively (as of that version). You either have it or not.
It's been like this at least months. I turned telemetry off a few months ago and it basically prevented all stages rollouts of new features from working.
Anthropic commonly gates behind feature flags that require telemetry until they're "promoted" and defaulted on.
A little bit annoying you can't manually control the flags without telemetry but I think the title is a bit click bait.
Claude Code also doesn't read AGENTS.md by default if there's a CLAUDE.md it can read instead. This isn't limited to your repo, e.g. if you have a ~/CLAUDE.md then no AGENTS.md will be read.
To always read both, you have to switch the 'Project instructions' setting to the non-default `claude-md-and-agents-md`.
Just in case anyone is wondering why their AGENTS.md still isn't being read.
I don’t understand why people are confused about the use of a launch flag, for this and for anything.
It’s a simple distributed systems problem. Separate the deployment of a new software feature (to umpteen hosts) from the triggering of that software with a lightweight switch.
If someone think that reading AGENTS.md is always benign, because they can’t imagine how it could be a problem…users are very creative.
Exactly! I can not believe this is in the top spot.
Meanwhile, Codex devs just merge their changes and hit the release button. If a thingy breaks, they fix the thingy and release a hotfix. How irresponsible! It’s a miracle the software works at all!
This in some way sounds like VSCode's bug of always adding Copilot as a co-author of git commit regardless of user settings.
If people only glance over the code agents generate for them and don't bother to spend even half a minute thinking through what's actually happening, this is inevitable.
Certainly this kind of things happened before LLMs existed. But I'm not optimistic about the direction of how things are going.
Crazy part is: can’t tell if this intended or a bug
Someone on the Claude Code team is probably wondering the same...
I like to give my graces to people and the companies who are typically not trillions of dollars. Have an incredible amount of resources that many countries would like to have, with fewer of the obligations. I'm going to chalk this up to its intended
Can you think of a bug that makes sense in this case?
Vibe coding
It is most certainly the kind of subtle bug the LLMs love to slip in and burn you in production
Not sure what y’all are thinking with these unwritten conspiracy theories that begin and end with “it’s intentional”
Assuming that it's intentional, what's the motivation?
Get more people to turn on telemetry.
Claude/Anthropic has been sus from the start:
https://www.thatprivacyguy.com/blog/anthropic-spyware/
+ not letting users change their email, or remove their payment methods, etc.
I cannot set a password for login, on logging in it says we've sent a login code but it's a link instead...
many of these can also be chalked up to the fact that all of their products are extremely vibed
I use cursor and claude, its kinda annoying having to have the same skills in both so I made a ~/.agents/skills folder then ln both cursor and claude skills to point to that folder.
which works except that claude uses .skills/synced which is uses to sync changes to skills from claude servers into the skills folder.
every other agent I have used just directly syncs into .skills so it ends up duplicating skills
Couldn't you just make a CLAUDE.md that says, "Read AGENTS.md in this same directory"?
yes, or a symlink.
And I’m sure there’s no conceivable way an organization as well resourced as Anthropic can separate out feature flags from telemetry. It’s just too complicated! Maybe when we get AGI?
Nice find, though I'd rather read the prompt that was used to write this article. It is about ten times longer than it needs to and is quite painful to read.
You're absolutely right! AGENTS.md shouldn't be gated behind telemetry on
Claude Code Remote control only works with telemetry enabled too.
Yeah, no thank you. This was why I polished my setup for VPN -> SSH -> [MOSH] -> TMUX -> claude/codex
If they can't even get this simple thing right, I am worried about the future of anthropic's products.
The number of people raw-dogging software that executes arbitrary instructions on their machine coming from a 3rd party server just absolutely baffles me.
The same people who've spent years of their career making sure that never happens.
Embarrassing for HN to have a huge thread over a Feature Flag.
https://martinfowler.com/articles/feature-toggles.html
I’ve long since been having a pro-forma CLAUDE.md, referring to @AGENTS.md in all of my projects. Still works fine.
can i ask claude to change these settings for me, and will it enable telemetry as implied checkpoint when i ask it to enable AGENTS.md?
Issue 95690, opened 3 days ago, 500k+ engineers, a simple CLI...
AGI was reached like 2 weeks ago, latest claude 5.x models rule supreme and software engineering is solved?
Turns out AGI boils down to two markdown files:
claude-md-or-agents-md
claude-md-and-agents-md
Uhm I turned off everything there is to turn off in my Pro plan, and Claude just read my agents.md with no issue? So... What telemetry am I missing? Or did they JUST update? (I updated my docker image 40 minutes ago to get Opus 5.5, am on version 2.1.280, so not the mentioned 2.1.277, so it's fixed?)
Related:
Claude Code now reads AGENTS.md if there is no Claude.md
https://news.ycombinator.com/item?id=49760187
Anyway, my claude.md contains only this:
@agents.md
I am once again (for the third time) [0] asking you to stop using a closed-source harness.
[0] https://news.ycombinator.com/item?id=49760449
I understand the motivation for such a concern. But Claude Code in particular has its source code available on GitHub [0].
So I am unsure if it is fitting to call it a "closed source" harness.
[0] https://github.com/anthropics/claude-code
Edit: The linked repository does not contain source code for Claude Code, the harness, itself. It only contains the source code for (some) scripts, mods and plugins.
Forgive me if I'm missing something really obvious, we'll blame it on lack of sleep... but is that actually the full source to Claude Code? I'm looking at the repository and I only see source for plugins, mods and scripts. When I get to the readme, it says:
"This repository includes several Claude Code plugins that extend functionality with custom commands and agents. See the plugins directory for detailed documentation on available plugins."
But I'm not a TypeScript guy, so I concede I might be missing something incredibly obvious. I remember there was a leak of the Claude Code source code at one point, and people vibe coding conversions to other languages from the leak, but I don't think the Claude Code harness itself is open source or even source available.
I think you are not missing anything. I have not checked the code itself originally, I am sorry for that. But you are right that there seem to be no actual code for the harness itself. Just the code for (some) mods, plugins and scripts.
I just read the first line in the README file which says:
> Claude Code is an agentic coding tool ...
and I immediately assumed that this is what this repository hosts.
It claims that it includes plugins but that does not mean it does not include anything else. It also never explicitly claims, as far as I can tell, that it does not hold the source code of Claude Code, the harness, itself.
It is all extremely misleading, in my opinion. Which might be on purpose, unfortunately.
It's not open source. It's more "source available", since it's published, but you legally can't do anything with it. Other than maybe build it yourself, for yourself, I guess.
That's not the source code. Claude Code is proprietary.
Vibe-coding at its best.
Urm... no tests caught this? How?
Wait wait wait WAIT
So, these tools have a file they want to read in with some configuration.
That filename is hardcoded?
Fucking DOOM had a command line parameter to provide an arbitrary configuration file name!
That's completely irrespective of the fact that you need a feature flag set by remote infrastructure to change a setting of which completely local file to read.
It's weird, I feel like Claude would have tried to make this a configurable setting by default! Is that just not an option in JS land? Not a common pattern to have configuration in the first place? I don't know about that, all the JS based code editors have comprehensive configuration files.
What the hell is going on....
I absolutely detest software that needs to have a configuration for every single parameter. CLAUDE.md was a new concept they created, and having it local in a directory is a blessing. If you:
1. really REALLY care what the file name is
2. Can't put in a symlink
3. Don't want to write into that file to look at other files (which is the standard practice of the entire skills framework
4. Cannot even think to ask the model how to come up with many solutions
Then I postulate you should stick to the mobile app, computers are too complex for you.
This is not the only case where Anthropic has done stuff silently without giving users any information about changes that would hurt them.
Even if this was an honest rollout mistake, the design is indefensible. Reading a local file should never depend on a remote feature flag, and silently skipping it with no warning is worse. I've tried to give Claude Code the benefit of the doubt, but this crosses a line.
Not everything is malicious. The author of the feature already responded on why this happened
I'm not the person you replied to, but your response misses their point: rollout issue aside, the approach is flawed by design. The feature author didn't address that at all.
The person had something else before they edited. They were overly negative, saying (from my memory) that it was inexcusable, and they had enough, pointing to malice.
The response as it is now sounds fair. Before that it was not.
Ah, thanks for clarifying. (And shame on the GP.)
it is indefensible.