Part 2 · Coordination Contracts

Multi-Agent Systems · ~8 min

Forked vs Fresh Subagents

When you spawn a child, it either inherits the parent's whole mind or starts from a clean brief. The choice trades cache savings and nuance against bias and an injection surface.

Why this, for you: this is a per-spawn decision you make constantly, and the wrong default is expensive in a way that's invisible until it bites — a forked code reviewer rubber-stamps the bug it should catch, because it remembers why every line was written. Knowing which to pick is the difference between a real second opinion and a confirmation echo.

A forked subagent inherits the parent's entire system prompt, tools, and message history. A fresh subagent starts with only the brief the orchestrator constructs. Same axis exists in every harness that spawns children — and it's chosen per task, not globally.

1 The decision table

Spawn fresh when…Spawn a fork when…
The child must question a parent decision (review, audit, adversarial test)The child must extend a parent decision (design variation, continuation)
The parent touched untrusted content and the child has egressThe parent's reasoning is load-bearing and a brief would be lossy
The task is one-off — no siblings to amortize cache warmupTwo or more siblings will run from the same starting point
The child must reset bias to disagreeThe child must preserve nuance to agree intelligently

2 Why forks are cheap — and why that cuts both ways

A fork's first request shares the parent's prefix exactly — same system prompt, tools, and history. The prompt cache matches on exact prefix, so the fork reads from cached tokens and bills only the appended fork directive. Cache reads run at roughly 10% of the standard input rate. A fresh named subagent has a different prompt and tool set, so its prefix doesn't match — no cache hits, and it warms its own cache from scratch.

The mechanism cuts both ways. Forks are cheap precisely because they carry the parent's entire input distribution — which is also why they inherit its biases, blind spots, and accumulated tool results. Fresh subagents reset that distribution; that reset is what makes them useful for adversarial work.

3 Where forking backfires

Enabling fork mode changes two things at once

In Claude Code, CLAUDE_CODE_FORK_SUBAGENT=1 turns general-purpose spawns into forks and runs every spawn in the background. Named subagents still spawn fresh regardless. The manual /fork command works either way — the variable governs automatic forking. A fork cannot spawn further forks.

↪ Your win: fresh to disagree, fork to extend

Retrieval practice — recall, don't peek

Question 1For a security audit of code the parent just wrote, you should spawn…

Question 2A fork's first request is cheap because its prefix…

Question 3A fork is dangerous for a child with egress because it…

Question 4The fork-vs-fresh choice is made…

Question 5 · spaced recall from Lesson 3Fan-out synthesis collapses when the N agents…

Ask me anything. Want a rule of thumb for when a brief is "too lossy" to skip forking, or how the cache math plays out on a heavy parent with several siblings? Next in Part 2: Handoffs and Coordination Contracts — passing work between agents without losing it.
✎ Feedback