The brief is everything

Lesson 2 of 5 in Subagents and Context Isolation: The Delegation Move.

Here is the fact that sinks more delegations than any other: a subagent knows only what you tell it. It was not in the room. It has not seen the parent’s conversation, the user’s clarification from turn three, the constraint discovered at step six, or the two approaches already tried and abandoned. Its entire universe is one message: the brief.

This is the flip side of isolation. The same wall that keeps the subagent’s mess out of the parent keeps the parent’s knowledge out of the subagent. You cannot have the first without paying the second — so every delegation is an act of compression: you are squeezing everything the subtask needs through a single message, and whatever doesn’t fit through effectively never happened.

A brief that survives compression has three load-bearing parts:

The goal — the actual question, with success criteria. Not “look into the auth code” but “determine which of the 40 route handlers in src/routes/ lack an auth-middleware check; done means a definitive list, not an impression.”

The constraints — scope boundaries, things not to touch, and known findings. What the parent has already ruled out is a constraint: without it, the subagent cheerfully re-investigates the dead end you spent twenty steps escaping.

The return format — the exact shape of the answer, specified up front, so the parent can integrate the report without re-reading the material the delegation existed to avoid. Structured output specs, length caps, and “include your uncertainties” all live here. The return format is not politeness; it is the contract that makes the compressed report usable.

A bad brief

“Look into why checkout is failing.”

The subagent doesn’t know: which service is in scope, that the user said it only happens under load, that the database was already ruled out, or what shape of answer is wanted. It will spend its whole budget rediscovering the parent’s first hour — and return an essay the parent must mine for the one relevant sentence.

A good brief

Goal: find the root cause of intermittent 500s on POST /checkout under load (>100 rps). Done = a specific cause with evidence, or a ranked shortlist with confidence. Constraints: payments service only — the legacy monolith is out of scope. Read-only: modify nothing. Already ruled out: database connection pool (metrics were clean). Return: ≤1 page — root cause (2–3 sentences), evidence as file paths with line numbers, one suggested fix, and anything you weren’t sure about.”

What comes back

“Root cause: the retry decorator on charge_card() (payments/handlers.py:212) retries on all exceptions, including timeouts that already succeeded server-side — under load this double-charges, trips the idempotency guard, and surfaces as a 500. Evidence: handlers.py:212, idempotency.py:88. Fix: retry only on connection errors. Uncertain: I could not confirm which client timeout applies in production.”

Four sentences, integrable at a glance, with the uncertainty flagged — because the return format demanded exactly this shape.

Interactive sorting exercise: Sort each fragment of a delegation brief into the part it belongs to — or flag it as noise that earns no tokens.

Key terms: delegation brief, telephone game, structured outputs, context isolation

Interactive checkpoint quiz (2 questions) — open this page in a browser to take it.