CLAUDE.md vs AGENTS.md
On 18 September 2026, Claude Code 2.1.277 shipped this line in its changelog:
Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead; change it under “Project instructions” in
/config(not yet on Bedrock, Vertex or Foundry)
That is a real step toward one instruction file for every tool, and it retires a pile of symlink
and @AGENTS.md include hacks. It is also narrower than most of the reaction suggested. This page
is what the fallback actually does, where it surprises people, and which parts of a modern agent
setup no standard covers yet.
It is a fallback, not a merge
The distinction matters because most repos that care about this already have both files.
By default, Claude reads
AGENTS.mdonly when you have noCLAUDE.mdin your working directory or above it.
So if both exist, AGENTS.md is ignored entirely. It is not appended, and it is not merged. Which
files trigger that, per Anthropic’s memory docs:
| File | Effect on AGENTS.md |
|---|---|
CLAUDE.md in the working directory or above | Disables it |
.claude/CLAUDE.md in the working directory or above | Disables it |
CLAUDE.local.md in the working directory or above | Disables it |
~/.claude/CLAUDE.md (your user memory) | Loads alongside it |
Your organization’s managed CLAUDE.md | Loads alongside it |
.claude/rules/ files | Load alongside it |
Five things it does not do
- There is no user-level
AGENTS.md.~/.claude/CLAUDE.mdhas no cross-tool equivalent. Your personal preferences stay Claude-specific. - There is no managed or enterprise
AGENTS.md. Under a managed-only policy, everyAGENTS.mdis left out. .agents/is not read at all. NeitherAGENTS.local.md, norAGENTS.override.md, nor anything under a.agents/directory.- Directories added with
--add-dirdo not contribute one. TheirAGENTS.mddoes not load. - It is invisible to your tooling.
AGENTS.mdfiles are not listed in/memoryor/context, andInstructionsLoadedhooks do not fire for them.
It is also not available on Amazon Bedrock, Google Vertex AI, or Microsoft Foundry, nor in any
session that skips feature-flag fetching, which includes sessions with DISABLE_TELEMETRY,
DO_NOT_TRACK, or CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC set, and the first session after an
install or upgrade. Teams on a cloud provider get CLAUDE.md behavior regardless of what their
repo contains.
Opting into a merge
The behavior is a built-in mod with an instructionFiles option, reachable from /config under
Project instructions, or in settings:
{ "pluginConfigs": { "agents-md@builtin": { "options": { "instructionFiles": "claude-md-and-agents-md" } } }}The four values are claude-md-or-agents-md (the default fallback), claude-md-and-agents-md
(read both), claude-md (ignore AGENTS.md), and managed-only.
What the standard actually standardizes
Less than its adoption implies. agents.md is a website and an FAQ rather than a versioned specification. It carries no version number, no date, and no normative language. Its own description:
Think of AGENTS.md as a README for agents: a dedicated, predictable place to provide the context and instructions to help AI coding agents work on your project.
There are no required fields. It is plain Markdown, and the nearest file to the edited one wins.
That is the whole contract, and for what it covers it works: of the 33 tools AgentsMesh generates
for, 17 read a root AGENTS.md, and Claude Code now makes 18.
Rules were always the easy part.
The part no standard covers
Agent Plugins 1.0.0, backed by maintainers from Amazon, Cursor, Microsoft, OpenAI and Vercel, is the most serious attempt at a portable package format. It defines exactly two component types, skills and MCP servers, and is explicit about why it stops there:
Other proposed component types — such as commands, hooks, agents, rules, and LSP servers — remain too client-specific for a stable portable contract and are outside the v1 format until their formats converge.
Permissions are excluded separately: v1.0.0 “does not define a trust model, permission system, or sandboxing requirements for plugins.”
So the standards map looks like this:
| Surface | Cross-tool standard today |
|---|---|
| Instructions / rules | AGENTS.md, informal but widely read |
| Skills | Agent Skills (SKILL.md), adopted normatively by Agent Plugins v1 |
| MCP servers | The Model Context Protocol, plus Agent Plugins v1 packaging |
| Slash commands | None. Explicitly out of scope |
| Subagents | None. Explicitly out of scope |
| Hooks | None. Explicitly out of scope |
| Permissions | None. Explicitly deferred |
| Ignore files | None |
Even the two solved rows have gaps. Agent Skills standardizes the SKILL.md format but not where
skills live on disk, which is why Claude Code reads .claude/skills/ and the proposal for a shared
.agents/skills/ location is still open.
A shared directory is frequently described as settled. It is not.
How fragmented the rest really is
Measured across the 33 tools AgentsMesh supports, counting only native support:
| Feature | Tools with native support |
|---|---|
| Rules | 33 of 33 |
| Skills | 31 of 33 |
| MCP servers | 27 of 33 |
| Subagents | 21 of 33 |
| Hooks | 18 of 33 |
| Permissions | 11 of 33 |
Permissions are the clearest case. Claude Code has a real allow and deny model; most tools have
something weaker, something differently shaped, or nothing at all. There is no portable way to say
“never run terraform apply” and have every assistant on the team honor it.
What to do about it today
Independently of any tooling:
- Pick one instruction file and delete the other. Since the default is a fallback, keeping both means the
AGENTS.mdis dead weight that reads as if it were live. If you want both, every developer has to opt in individually. - Check for stray
CLAUDE.local.mdfiles when a teammate reports that the agent is ignoring a rule everyone else sees. - Do not assume a cloud deployment behaves like the desktop. On Bedrock, Vertex or Foundry,
AGENTS.mdis not read. - Treat hooks, permissions, subagents and commands as per-tool for now, and keep them somewhere you can regenerate from, because they will keep changing shape.
Where AgentsMesh fits
This project exists for the rows in that table with “None” in them. One canonical .agentsmesh
directory holds rules, commands, subagents, skills, MCP servers, hooks, permissions and ignore
patterns, and agentsmesh generate writes each tool’s native files, including a root AGENTS.md
and a CLAUDE.md that cannot drift from it. Where a tool has no native slot for a feature, it is
embedded with round-trip metadata rather than dropped, so re-importing reconstructs the original.
If your fragmentation is limited to instructions, you may not need it: one AGENTS.md is now
genuinely enough for a lot of teams, and that is a good outcome. If you maintain hooks, permissions
or subagents across more than one assistant, none of that is standardized, and something has to
keep the copies honest.
Start with the existing-project guide, or see the supported tools matrix for native versus embedded support per tool and feature.
Sources
- Claude Code v2.1.277 release and CHANGELOG
- Claude Code memory documentation
- agents.md
- Agent Plugins specification
- Agent Skills specification