# CLAUDE.md Claude Code loads this file automatically and does **not** load `AGENTS.md`. The other harnesses (Codex, Copilot, Vibe) read `AGENTS.md` natively, so this file exists to close that one gap and nothing else. It therefore holds **no rules of its own** - only the imports below. A rule written here would be the second copy invariant 8 forbids, and it would be the copy that drifts, because the harness that reads it is not the harness the rest of the repo is written for. Importing is not that: the rule stays at exactly one place and is pulled in from here, which is the only way a Claude-Code-only instruction can reach a session at all - AGENTS.md would carry it into every other harness too. @AGENTS.md @USER.md @SOUL.md @ENVIRONMENT.md @instructions/claude-code-model-selection.md `USER.md` and `SOUL.md` do not exist until the Personalization step of [instructions/setup-instance.md](instructions/setup-instance.md) has run, so the setup session itself resolves only `@AGENTS.md`. Every session after it gets all three - which is what makes the "Always, every session" rows in AGENTS.md's file-naming table true for Claude Code rather than aspirational. `ENVIRONMENT.md` is the one import that may legitimately never exist. It is optional and gitignored (AGENTS.md ยง Environment), so an unresolved import is its normal absent state, not a broken reference - the same tolerance the two above rely on before setup, used deliberately rather than transitionally. It earns an import rather than a link because what it holds - which MCP server answers which question, which remote `publish` talks to, which harnesses this checkout is shared with - is consulted in passing, mid-task, at the moment nobody would stop to open a document. That is the same bar the last import below clears, and it is the whole test: a session that has to go look the answer up will instead ask the user again, which is the cost the file exists to remove. The last import is the harness-specific one: model and effort selection is decided while spawning a subagent or starting a review, not at a point where anyone stops to open a document, so it is imported rather than linked. That costs standing context in every session, which is the bar a further Claude-Code-only import has to clear too: import what is decided in passing, link what is looked up deliberately.