{"slug": "which-of-my-rules-did-claude-code-actually-use", "title": "Which of my rules did Claude Code actually use?", "summary": "Claude Code offers no way to show which of a user's rules an agent actually followed, only which instruction files loaded, according to a blog post published October 6, 2026. The post notes that Claude Code's /context command, terminal Loaded lines, InstructionsLoaded hook and /memory command report file loads, while the tool Harbor counts per rule how often it was served to an agent and how often an answer cited it, though neither proves a rule was followed. The post cites arXiv:2602.11988 from ETH Zurich, which found a developer-written context file moved success 2.4 points, a gain the authors could not distinguish from noise, at about 20 percent more inference cost.", "body_md": "Blog\n\n# Which of my rules did Claude Code actually use?\n\nPublished: October 6, 2026\n\nThe short answer: nothing shows that today, Claude Code included. Claude Code can show you which instruction files loaded, and when. A tool like Harbor can count, per rule, how often it was handed to an agent and how often an answer cited it. Neither proves the rule was followed.\n\n## What Claude Code shows you: what loaded\n\n- **`/context`** breaks your context down by category. The files under Memory files are the`CLAUDE.md` and rules files that loaded at launch. A`CLAUDE.md` in a subfolder loads later, on demand, so it is not listed there.\n- **The terminal** prints a`Loaded` line with the path when a subfolder`CLAUDE.md` or a rule with`paths` loads mid-session. You see the path, not the content.\n- **The `InstructionsLoaded` hook** fires once for every`CLAUDE.md` or`.claude/rules` file that loads, with the file's path, its scope and the reason it loaded: session start, a subfolder, a matching path, an import or a compaction. It cannot block anything, and it does not fire for an`AGENTS.md` Claude reads directly.\n- **`/memory`** lists where your memory files live, including ones that do not exist yet, and opens them. It is a map, not a load report.\n\nTo keep a record across sessions, log the hook. This appends one line per file that loads:\n\n```\n// ~/.claude/settings.json\n{\n  \"hooks\": {\n    \"InstructionsLoaded\": [\n      {\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"jq -c '{file_path, load_reason}' >> ~/.claude/instructions-loaded.log\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\nA rule with `paths` loads only when Claude reads, writes or edits a file that matches. If its `Loaded` line never appears, the rule never reached the model, and nothing about its wording matters yet.\n\n## What it cannot show: which rule was used\n\nAnthropic's own debugging guide draws the line. If `/context` shows a file loaded and Claude still is not following it, the problem is likely how the instruction is written, not whether it loaded. A `CLAUDE.md` is context, not enforced configuration.\n\nSkills are the one place Claude Code counts use: `/skill-doctor` shows how often each skill is invoked, because a skill is a discrete call. `CLAUDE.md` lines and rules are always-on text, and nothing in Claude Code's docs counts them. `/doctor prompt-audit` reviews the files themselves, not what happened in a session.\n\nThe academic name for the gap is the attribution crisis: agents cite a fraction of what they read. The Always-On Agents survey, covering 400 works, lists “which stored information influenced a specific output” among the field's open problems. Not a solved dashboard. An open problem.\n\n## Two numbers you can count: served and cited\n\nETH Zurich's result is the one to keep in your head. [arXiv:2602.11988](https://arxiv.org/abs/2602.11988): a developer-written context file moved success 2.4 points, a gain the authors could not tell from noise, and cost about 20 percent more inference. The file was served on every run. Almost none of it can have been load-bearing, or the gain would not be that small. Nobody running that study had a count of which lines were which.\n\nHarbor records both, per rule:\n\n- **Served** is how many times Harbor handed the rule to an agent.\n- **Cited** is how many times an answer referred back to it.\n\nA rule served a hundred times and never cited is a rule to question, and the list of those is a list of rules you can probably delete. That is the product: subtraction with a denominator, not a retrieval score.\n\n## If a rule must hold, do not leave it to a count\n\nA count tells you what to cut. It does not make a rule stick. For anything that must never happen, such as a destructive command, use a [hook](https://gethrbr.com/blog/claude-code-hooks) or a deny rule that refuses it before it runs. The figures on the home page's ledger are sample data and labelled as such; we do not publish a benchmark of our own, and any percentage improvement attributed to Harbor did not come from Harbor.\n\n## Questions\n\n### How do I see which CLAUDE.md files Claude Code loaded?\n\nRun /context and look under Memory files for what loaded at launch. A subfolder CLAUDE.md or a rule with paths loads later, and the terminal prints a Loaded line with its path. The InstructionsLoaded hook fires for each one, with the reason it loaded.\n\n### Can Claude Code show which rules it followed?\n\nNo. Everything it shows is about what loaded. Anthropic's debugging guide says that if a file loaded and Claude still is not following it, the wording is the likely problem. Skills are the exception: /skill-doctor counts how often each one is used.\n\n### What does served vs cited mean?\n\nServed is how many times a rule was handed to an agent. Cited is how many times an answer referred back to it. A rule served often and never cited is one to question. A cite is evidence a rule was used, not proof it was followed.", "url": "https://wpnews.pro/news/which-of-my-rules-did-claude-code-actually-use", "canonical_source": "https://gethrbr.com/blog/served-vs-cited", "published_at": "2026-10-06 00:00:00+00:00", "updated_at": "2026-10-20 19:45:43.156948+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-safety"], "entities": ["Claude Code", "Anthropic", "Harbor", "ETH Zurich", "arXiv:2602.11988", "Always-On Agents survey"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/which-of-my-rules-did-claude-code-actually-use", "markdown": "https://wpnews.pro/news/which-of-my-rules-did-claude-code-actually-use.md", "text": "https://wpnews.pro/news/which-of-my-rules-did-claude-code-actually-use.txt", "jsonld": "https://wpnews.pro/news/which-of-my-rules-did-claude-code-actually-use.jsonld"}}