# Which of my rules did Claude Code actually use?

> Source: <https://gethrbr.com/blog/served-vs-cited>
> Published: 2026-10-06 00:00:00+00:00

Blog

# Which of my rules did Claude Code actually use?

Published: October 6, 2026

The 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.

## What Claude Code shows you: what loaded

- **`/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.
- **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.
- **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.
- **`/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.

To keep a record across sessions, log the hook. This appends one line per file that loads:

```
// ~/.claude/settings.json
{
  "hooks": {
    "InstructionsLoaded": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "jq -c '{file_path, load_reason}' >> ~/.claude/instructions-loaded.log"
          }
        ]
      }
    ]
  }
}
```

A 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.

## What it cannot show: which rule was used

Anthropic'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.

Skills 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.

The 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.

## Two numbers you can count: served and cited

ETH 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.

Harbor records both, per rule:

- **Served** is how many times Harbor handed the rule to an agent.
- **Cited** is how many times an answer referred back to it.

A 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.

## If a rule must hold, do not leave it to a count

A 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.

## Questions

### How do I see which CLAUDE.md files Claude Code loaded?

Run /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.

### Can Claude Code show which rules it followed?

No. 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.

### What does served vs cited mean?

Served 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.
