Claude Code reads AGENTS.md only when telemetry is on [fixed]
Claude Code 2.1.277 announced support for AGENTS.md: in a project with no CLAUDE.md, it is supposed to read AGENTS.md instead. The author keeps telemetry off in their shell and found that in their repos the file never loaded. Issue #95690 explains why, and the author added their own measurements, collected in this post.
The loader ships as a built-in plugin called agents-md. Its registration in the 2.1.280 bundle looks like this: var W = !1; var B = () => Oa("tengu_agents_md_mod", W); var H = "AGENTS.md as project instructions: ..."; W is the plugin's isOnByDefault value and it is false. B is isAvailable, and it asks a remote feature flag called tengu_agents_md_mod, with false as the fallback. When Claude Code cannot fetch the flag, the plugin is unavailable, and the local file is never read. Reading a markdown file from the working directory needs no network at all, but here it waits on a server-side switch.
To test it, the author made an empty directory that holds only an AGENTS.md with a canary word in it, and asked claude -p for the word. Each setup ran in two sessions, because the first session in a new configuration only fetches the flag and the second one uses it. The commands were: echo 'The canary word is PERIWINKLE.' > AGENTS.md and claude -p 'What is the canary word from the project instructions? Answer NONE if you have none. Do not read files.'
What the author measured: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 blocks the feature, as the issue says. DISABLE_TELEMETRY=1 blocks it too. With either variable set, AGENTS.md never loaded, so both had to be cleared. Setting either variable to 0 does not help; the block stays in place. The environment variable docs say that any value counts, but that is easy to miss when trying to turn a feature on. An env block in the project's .claude/settings.json that clears both variables has no effect, so there is no way to turn the feature on for a single repo. A session-level override does work from the second session on: claude --settings '{"env":{"DISABLE_TELEMETRY":"","CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":""}}'. None of these cases print a warning; the session starts, the model answers without the project instructions, and nothing tells you that a file was skipped. The issue also points out that third-party gateways, Bedrock and Vertex have the same problem, because the flag cannot resolve to true there either.
The workaround: CLAUDE.md supports @path imports, and those do not depend on the flag. A one-line CLAUDE.md next to the AGENTS.md loads it with telemetry off: echo '@AGENTS.md' > CLAUDE.md. With that file in place, the same canary test returns the word with CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 still set. The cost is one extra file per repo, which is what the AGENTS.md support was supposed to remove.
The author argues this is unacceptable: they turned telemetry off on purpose and expect that choice to cost some diagnostics and nothing else. Here it silently costs a feature that reads a file.