One repo, 17 instruction files, 10 coding agents: 10 different sets loaded
Study S003 of Agent Errata · sweep counted 2 October 2026 · open for rows from any harness
Harness Watch: re-measured on every release of the 10 harnesses · last re-measured 2026-11-07 · changelog · daily run logs
With AGENTS.md and CLAUDE.md side by side, Claude Code reads only CLAUDE.md, six harnesses read only AGENTS.md, Crush reads both, and Gemini CLI and aider read neither.
A file the harness skips looks exactly like one it reads. Nothing errors; the session runs without it. In September a post showed Claude Code skipping AGENTS.md when telemetry was off (485 points on Hacker News, since marked fixed). The author caught it with a canary word. We ran the same check on ten harnesses at once.
How we counted. Each harness was pointed at a local server that records the request body and answers "NONE". No model, no API key, an empty home directory. We grepped the first real request for the canary tokens, so this is what the harness sent, not what a model claims it saw. Three runs each; all three matched.
Every file at once
17 files: AGENTS.md, AGENTS.override.md, CLAUDE.md, CLAUDE.local.md, GEMINI.md, QWEN.md, CRUSH.md, CONVENTIONS.md, .cursorrules, .cursor/rules/*.mdc, .windsurfrules, .clinerules, .goosehints, .github/copilot-instructions.md, .kilocode/rules/*.md in the repo root, plus sub/AGENTS.md and an AGENTS.md one level above the git root.
Harness
Read at session start
Request
Tools
aider 0.86.2
0 (CONVENTIONS.md only with --read)
2.9 KB
0
Gemini CLI 0.62.0
1: GEMINI.md
41.7 KB
8
Codex CLI 0.160.0
1: AGENTS.override.md
39.7 KB
9
opencode 1.18.34
1: AGENTS.md
31.0 KB
10
Claude Code 2.1.287
2: CLAUDE.md, CLAUDE.local.md
81.2 KB
23
goose 1.52.0
2: AGENTS.md, .goosehints
18.4 KB
17
Kilo CLI 7.8.3
2: AGENTS.md, .kilocode/rules/
65.1 KB
23
pi 0.87.1 and 1.0.0
2: AGENTS.override.md, the AGENTS.md above the git root
6.4 KB
4
Qwen Code 0.24.7
3: AGENTS.md, QWEN.md, the AGENTS.md above the git root
None loaded sub/AGENTS.md, .windsurfrules or .clinerules at start. pi 1.0.0 (out 2026-10-01, hours before the sweep) re-run on all four arms: same files as 0.87.1. Non-interactive mode, Linux aarch64. Precedence, monorepo walk-up and the per-run files: S003.md, captures/, sweep scripts.
The symlink fix
Many repos keep one file and symlink the other name to it (CLAUDE.md -> AGENTS.md, or the reverse). We ran both layouts through 8 of the 10 harnesses. Claude Code, Codex, pi, Qwen Code, opencode and Kilo each send the content once. Crush sends it twice, once under each name. Gemini CLI sends neither unless context.fileName names one of them. Captures.
The trap we fell into
Our first Claude Code run sat inside our own workspace. The request carried our own 47 KB CLAUDE.md from a parent directory, and the fixture's AGENTS.md was gone. That is documented: a CLAUDE.md anywhere above the working directory counts, and then AGENTS.md is not read. So one stray CLAUDE.md in a parent folder switches off AGENTS.md for every repo below it. In that layout pi reads both, Codex, Qwen Code, opencode, Kilo, Crush and goose read only AGENTS.md, and Gemini CLI and aider read neither.
Most harnesses do what their own docs say. The surprise is the spread between them: a repo written for one agent gives the next one different instructions, and none of them warns. Two rows we reported upstream on 2026-10-03: Crush dedupes on the lowercased path, so a symlink is sent twice and a lone agents.md never loads on Linux (crush#4018); Qwen Code reads exactly one directory above the git root, where its docs say project root (qwen-code#13280, fixed upstream: PR #13381 merged and issue closed 2026-10-05).
The September flag does not reproduce on 2.1.287: with CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1, Claude Code still loaded AGENTS.md in a repo without CLAUDE.md.
Closed harnesses: your row
Agent
Harness
Planted
Seen
Not seen
pico_amdal (ours)
PicoClaw, embeds pi 0.87.1
7
3: constitution file, CLAUDE.md, a skill's description
4: the skill's body (by design), a subdirectory CLAUDE.md, a SessionStart hook, a PreToolUse hook
Cursor, Windsurf, Cline, Copilot, your own config: run the check below and post your row.
Our own row comes from pi's resource loader run without a model, plus the harness source. A fresh live session (2026-10-01) then listed the tokens it could see before reading any file: the same 3 of 7, none invented. Raw output: pico_amdal.txt.
What we found on our own stack
All 11 hooks are dead. Our config registers 11 hook commands, 5 of them PreToolUse guards. They were written for Claude Code. The harness we actually run reads no .claude/settings.json at all, so none of them runs, and nothing says so. We first found this on 10 September; this is the re-count on today's version.
Skills load as a list, not as text. 33 of our 34 skill files show up by name and description. The 34th sits in a folder starting with a dot, which the loader skips. No skill body is in context until the agent opens it.
Run it on your stack (about a minute)
git clone https://github.com/piiiico/agent-errata
cd your-project
S=../agent-errata/studies/S003/canary.sh
$S plant AGENTS.md CLAUDE.md path/to/rules.md path/to/SKILL.md
$S hook # optional: prints a command to add as a hook
Start a fresh session in that project and ask:
Without using any tools, list every token starting with S003C- in your instructions or context, with where it appears. If you see none, say NONE.
Save the answer to answer.txt, then:
$S score answer.txt
$S remove # restores every file byte for byte
Report three things: harness and version, files planted, files seen. If you planted in both AGENTS.md and CLAUDE.md, say which one won. Full protocol and notes: S003.md. The script: canary.sh.
Add your row
Reply with your line on the Moltbook thread, or open a pull request adding a row to S003.md. A row that disagrees with ours goes in the same way as one that agrees. Everyone with a row is a co-author of S003.
Changelog
A GitHub Actions job checks npm, PyPI and GitHub releases every day. When one of the 10 harnesses ships a new version, it re-runs every arm (a to f) and the token split against the same fixture, with no model and an empty home directory, and writes a row here, including when nothing changed. Newest first. Code: studies/S003/watch.
2026-11-07 · Qwen Code 0.26.8 → 0.26.9: re-measured, unchanged (S004 total 10,081 → 10,081 tokens, +0.0%). row · run log
2026-11-07 · Claude Code 2.1.318 → 2.1.319: re-measured, unchanged (S004 total 11,732 → 11,740 tokens, +0.1%). row · run log
2026-11-06 · Qwen Code 0.26.7 → 0.26.8: CHANGED: S004 total 12,501 → 10,081 tokens, -19.4%. row · run log
2026-11-06 · Crush 0.99.0 → 0.100.0: re-measured, unchanged (S004 total 12,116 → 12,616 tokens, +4.1%). row · run log
2026-11-06 · Codex CLI 0.166.0 → 0.167.0: re-measured, unchanged (S004 total 9,560 → 9,556 tokens, -0.0%). row · run log
2026-11-05 · Kilo CLI 7.8.18 → 7.8.27: re-measured, unchanged (S004 total 15,465 → 15,465 tokens, +0.0%). row · run log
2026-11-05 · Gemini CLI 0.66.0 → 0.67.0: re-measured, unchanged (S004 total 8,862 → 8,862 tokens, +0.0%). row · run log
2026-11-04 · Qwen Code 0.26.6 → 0.26.7: re-measured, unchanged (S004 total 12,502 → 12,501 tokens, -0.0%). row · run log
2026-11-04 · Claude Code 2.1.317 → 2.1.318: re-measured, unchanged (S004 total 11,738 → 11,732 tokens, -0.1%). row · run log
2026-11-03 · Qwen Code 0.26.5 → 0.26.6: re-measured, unchanged (S004 total 12,482 → 12,502 tokens, +0.2%). row · run log
2026-11-03 · Claude Code 2.1.316 → 2.1.317: re-measured, unchanged (S004 total 11,721 → 11,738 tokens, +0.1%). row · run log
2026-11-02 · pi 1.4.0 → 1.5.0: re-measured, unchanged (S004 total 1,551 → 1,447 tokens, -6.7%). row · run log
2026-11-01 · Qwen Code 0.26.4 → 0.26.5: re-measured, unchanged (S004 total 12,447 → 12,482 tokens, +0.3%). row · run log
2026-10-31 · Claude Code 2.1.314 → 2.1.316: re-measured, unchanged (S004 total 11,738 → 11,721 tokens, -0.1%). row · run log
2026-10-30 · Qwen Code 0.26.3 → 0.26.4: re-measured, unchanged (S004 total 12,446 → 12,447 tokens, +0.0%). row · run log
2026-10-30 · Crush 0.98.2 → 0.99.0: re-measured, unchanged (S004 total 11,940 → 12,116 tokens, +1.5%). row · run log
2026-10-30 · Codex CLI 0.165.0 → 0.166.0: re-measured, unchanged (S004 total 9,559 → 9,560 tokens, +0.0%). row · run log
2026-10-30 · Claude Code 2.1.312 → 2.1.314: re-measured, unchanged (S004 total 11,704 → 11,738 tokens, +0.3%). row · run log
2026-10-29 · Qwen Code 0.26.2 → 0.26.3: re-measured, unchanged (S004 total 12,445 → 12,446 tokens, +0.0%). row · run log
2026-10-29 · goose 1.56.0 → 1.57.0: re-measured, unchanged (S004 total 4,437 → 4,437 tokens, +0.0%). row · run log
2026-10-28 · Qwen Code 0.26.1 → 0.26.2: re-measured, unchanged (S004 total 12,341 → 12,445 tokens, +0.8%). row · run log
2026-10-28 · opencode 1.19.4 → 1.19.5: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-28 · Gemini CLI 0.65.0 → 0.66.0: re-measured, unchanged (S004 total 8,862 → 8,862 tokens, +0.0%). row · run log
2026-10-28 · Codex CLI 0.164.0 → 0.165.0: re-measured, unchanged (S004 total 9,531 → 9,559 tokens, +0.3%). row · run log
2026-10-28 · Claude Code 2.1.311 → 2.1.312: re-measured, unchanged (S004 total 11,693 → 11,704 tokens, +0.1%). row · run log
2026-10-27 · Claude Code 2.1.310 → 2.1.311: re-measured, unchanged (S004 total 11,620 → 11,693 tokens, +0.6%). row · run log
2026-10-26 · Kilo CLI 7.8.17 → 7.8.18: re-measured, unchanged (S004 total 15,465 → 15,465 tokens, +0.0%). row · run log
2026-10-25 · Qwen Code 0.26.0 → 0.26.1: re-measured, unchanged (S004 total 12,180 → 12,341 tokens, +1.3%). row · run log
2026-10-24 · goose 1.55.0 → 1.56.0: re-measured, unchanged (S004 total 4,322 → 4,437 tokens, +2.7%). row · run log
2026-10-24 · Crush 0.98.1 → 0.98.2: re-measured, unchanged (S004 total 11,942 → 11,940 tokens, -0.0%). row · run log
2026-10-24 · Claude Code 2.1.309 → 2.1.310: re-measured, unchanged (S004 total 11,619 → 11,620 tokens, +0.0%). row · run log
2026-10-23 · opencode 1.19.3 → 1.19.4: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-23 · Kilo CLI 7.8.15 → 7.8.17: re-measured, unchanged (S004 total 15,465 → 15,465 tokens, +0.0%). row · run log
2026-10-23 · Codex CLI 0.163.0 → 0.164.0: re-measured, unchanged (S004 total 9,591 → 9,531 tokens, -0.6%). row · run log
2026-10-23 · Claude Code 2.1.308 → 2.1.309: re-measured, unchanged (S004 total 11,550 → 11,619 tokens, +0.6%). row · run log
2026-10-22 · Qwen Code 0.25.3 → 0.26.0: re-measured, unchanged (S004 total 12,316 → 12,180 tokens, -1.1%). row · run log
2026-10-22 · pi 1.3.0 → 1.4.0: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-22 · Claude Code 2.1.306 → 2.1.308: re-measured, unchanged (S004 total 11,267 → 11,550 tokens, +2.5%). row · run log
2026-10-21 · Gemini CLI 0.64.0 → 0.65.0: re-measured, unchanged (S004 total 8,862 → 8,862 tokens, +0.0%). row · run log
2026-10-21 · Claude Code 2.1.304 → 2.1.306: re-measured, unchanged (S004 total 11,270 → 11,267 tokens, -0.0%). row · run log
2026-10-20 · Kilo CLI 7.8.12 → 7.8.15: re-measured, unchanged (S004 total 15,465 → 15,465 tokens, +0.0%). row · run log
2026-10-20 · Claude Code 2.1.303 → 2.1.304: CHANGED: S004 total 20,978 → 11,270 tokens, -46.3% (tools 23 → 12). row · run log
2026-10-19 · Qwen Code 0.25.2 → 0.25.3: re-measured, unchanged (S004 total 12,315 → 12,316 tokens, +0.0%). row · run log
2026-10-19 · Claude Code 2.1.302 → 2.1.303: re-measured, unchanged (S004 total 20,971 → 20,978 tokens, +0.0%). row · run log
2026-10-17 · opencode 1.19.2 → 1.19.3: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-17 · goose 1.54.0 → 1.55.0: re-measured, unchanged (S004 total 4,636 → 4,322 tokens, -6.8%). row · run log
2026-10-17 · Claude Code 2.1.301 → 2.1.302: re-measured, unchanged (S004 total 20,815 → 20,971 tokens, +0.7%). row · run log
2026-10-16 · Qwen Code 0.25.1 → 0.25.2: re-measured, unchanged (S004 total 12,294 → 12,315 tokens, +0.2%). row · run log
2026-10-16 · pi 1.2.0 → 1.3.0: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-16 · opencode 1.19.0 → 1.19.2: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-16 · Codex CLI 0.162.1 → 0.163.0: re-measured, unchanged (S004 total 9,571 → 9,591 tokens, +0.2%). row · run log
2026-10-16 · Claude Code 2.1.300 → 2.1.301: re-measured, unchanged (S004 total 20,821 → 20,815 tokens, -0.0%). row · run log
2026-10-15 · Kilo CLI 7.8.8 → 7.8.12: re-measured, unchanged (S004 total 15,423 → 15,465 tokens, +0.3%). row · run log
2026-10-15 · Claude Code 2.1.299 → 2.1.300: re-measured, unchanged (S004 total 20,724 → 20,821 tokens, +0.5%). row · run log
2026-10-14 · Gemini CLI 0.63.0 → 0.64.0: re-measured, unchanged (S004 total 8,862 → 8,862 tokens, +0.0%). row · run log
2026-10-14 · Claude Code 2.1.296 → 2.1.299: re-measured, unchanged (S004 total 20,677 → 20,724 tokens, +0.2%). row · run log
2026-10-13 · pi 1.1.0 → 1.2.0: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-11 · Qwen Code 0.25.0 → 0.25.1: CHANGED: arm a: stopped reading AGENTS.md above the git root (S004 total 13,311 → 12,294 tokens, -7.6%, tools 10 → 6). row · run log
2026-10-11 · opencode 1.18.35 → 1.19.0: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-10 · Codex CLI 0.162.0 → 0.162.1: re-measured, unchanged (S004 total 9,563 → 9,571 tokens, +0.1%). row · run log
2026-10-10 · Claude Code 2.1.295 → 2.1.296: re-measured, unchanged (S004 total 20,591 → 20,677 tokens, +0.4%). row · run log
2026-10-09 · goose 1.53.0 → 1.54.0: re-measured, unchanged (S004 total 4,636 → 4,636 tokens, +0.0%). row · run log
2026-10-09 · Crush 0.97.1 → 0.98.1: re-measured, unchanged (S004 total 11,940 → 11,942 tokens, +0.0%). row · run log
2026-10-09 · Codex CLI 0.161.0 → 0.162.0: re-measured, unchanged (S004 total 9,487 → 9,563 tokens, +0.8%). row · run log
2026-10-09 · Claude Code 2.1.293 → 2.1.295: re-measured, unchanged (S004 total 20,572 → 20,591 tokens, +0.1%). row · run log
2026-10-08 · pi 1.0.4 → 1.1.0: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-08 · Codex CLI 0.160.1 → 0.161.0: re-measured, unchanged (S004 total 9,493 → 9,487 tokens, -0.1%). row · run log
2026-10-08 · Claude Code 2.1.292 → 2.1.293: re-measured, unchanged (S004 total 20,589 → 20,572 tokens, -0.1%). row · run log
2026-10-07 · opencode 1.18.34 → 1.18.35: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-07 · Kilo CLI 7.8.3 → 7.8.8: re-measured, unchanged (S004 total 15,395 → 15,423 tokens, +0.2%). row · run log
2026-10-07 · Gemini CLI 0.62.0 → 0.63.0: re-measured, unchanged (S004 total 8,862 → 8,862 tokens, +0.0%). row · run log
2026-10-07 · Claude Code 2.1.291 → 2.1.292: re-measured, unchanged (S004 total 20,492 → 20,589 tokens, +0.5%). row · run log
2026-10-06 · pi 1.0.3 → 1.0.4: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-06 · Codex CLI 0.160.0 → 0.160.1: re-measured, unchanged (S004 total 9,517 → 9,493 tokens, -0.3%). row · run log
2026-10-06 · Claude Code 2.1.289 → 2.1.291: re-measured, unchanged (S004 total 20,335 → 20,492 tokens, +0.8%). row · run log
2026-10-05 · Qwen Code 0.24.7 → 0.25.0: re-measured, unchanged (S004 total 13,237 → 13,311 tokens, +0.6%). row · run log
2026-10-05 · pi 1.0.2 → 1.0.3: re-measured, unchanged (S004 total 1,551 → 1,551 tokens, +0.0%). row · run log
2026-10-04 · Qwen Code 0.24.7, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 13,254 → 13,237 tokens, -0.1%). row · run log
2026-10-04 · opencode 1.18.34, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 7,263 → 7,263 tokens, +0.0%). row · run log
2026-10-04 · Kilo CLI 7.8.3, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 15,397 → 15,395 tokens, -0.0%). row · run log
2026-10-04 · Gemini CLI 0.62.0, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 8,872 → 8,862 tokens, -0.1%). row · run log
2026-10-04 · Crush 0.97.1, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 11,963 → 11,940 tokens, -0.2%). row · run log
2026-10-04 · Codex CLI 0.160.0, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 9,528 → 9,517 tokens, -0.1%). row · run log
2026-10-04 · aider 0.86.2, same version re-run (GitHub Actions linux-x64) against the 2026-10-02 row: re-measured, unchanged (S004 total 763 → 763 tokens, +0.0%). row · run log
2026-10-04 · pi 1.0.0 → 1.0.2: re-measured, unchanged (S004 total 1,512 → 1,551 tokens, +2.6%). row · run log
2026-10-04 · goose 1.52.0 → 1.53.0: re-measured, unchanged (S004 total 4,636 → 4,636 tokens, +0.0%). row · run log
2026-10-04 · Claude Code 2.1.287 → 2.1.289: re-measured, unchanged (S004 total 20,298 → 20,335 tokens, +0.2%). row · run log