Skip to content

date: 2026-07-16 tags: [subagents, eval, claude-md, harness] status: active graduated_to:

A non-fork Agent subagent inherits the project CLAUDE.md — it's not a clean room for an A/B control

Symptom — Building an eval to measure a CLAUDE.md rule's effect, the "control" arm (a claude subagent given the task with NO rule injected) still rendered issue numbers as clickable Markdown links — the exact behaviour the rule mandates. Control and treatment scored identically, so the eval measured nothing.

Root cause — Agent-tool subagents run in the project and load its ambient context — CLAUDE.md and the path-scoped .claude/rules/ — even a plain subagent_type: claude that does NOT inherit the parent conversation (cf. 2026-06-14-fork-subagent-inherits-parent-context.md, a different axis: conversation vs repo context). So the rule under test was already in the worker's context.

Fix — For a true control the worker must run without the repo's ambient rules, or the metric must be the delta from a baseline that also carries them, not an absolute. The caveman eval switched to injecting the candidate skill text and comparing against the normal-voice control, accepting that both arms carry CLAUDE.md.

Guard — When using subagents to A/B a harness or behaviour change, remember the subagent is NOT a clean room: it already has CLAUDE.md + the path-scoped rules. Strip them, or design the metric as a with-vs-without delta, before trusting the result.