The Right Slice

Context inheritance for delegated agents

The Handoff Problem

Delegation is easy. Handing over what the child needs to know is the hard part.

An Amplifier agent can delegate work to a specialized child agent through the delegate tool. But by default that child wakes up blank-slate — it knows nothing about the conversation that spawned it.

So the real question isn't can you delegate — it's how the child learns what just happened.

The delegate tool shipped in PR #44 — the recommended successor to the legacy task tool.

Merged into microsoft/amplifier-foundation on 2026-01-30 (founding commit b73813b, by Brian Krabach). Its README recommends it over tool-task for new development, for its enhanced context control and bug fixes.

Delegation is real and maintained — which makes the blank-slate handoff a real problem too.

#44
Founding PR (merged 2026-01-30)
31
Commits touching modules/tool-delegate
4
Test files in the module
1,286
Lines in __init__.py

Without inheritance, a spawned child starts from nothing.

With context_depth='none' the tool returns no parent context — a clean-slate child. To brief it, you'd hand-copy the conversation into the instruction string yourself.

Copy-paste is fragile and manual. Inheritance exists to kill it.

# context_depth='none' -> clean slate if depth == "none": return None # the child sees only this: [YOUR TASK] <your instruction> # ...and nothing about the conversation.

context_depth answers HOW MUCH.

The first orthogonal parameter controls the amount of inherited context — from nothing, to a recent window, to the whole history.

That's the amount. Next: which kind of content travels.

context_scope answers WHICH content — independently of depth.

The second orthogonal parameter picks the kind of content. Depth × scope together define exactly the slice to pass, and the two are independent.

Two knobs, though — do you have to think about them every time? No.

Smart defaults mean most delegations inherit the right slice with no parameters at all.

Out of the box: recent, 5 turns, conversation. The two knobs vanish behind defaults — a chore becomes a non-decision.

And when you take the default, here's what the child actually wakes up to.

recent
context_depth default
5
context_turns default
conversation
context_scope default
10
max_turns cap default

The slice is auto-injected as a [PARENT CONVERSATION CONTEXT] block — the child wakes up already briefed.

The selected slice is prepended before [YOUR TASK] right in the child's instruction. The manual copy-paste is fully replaced by automatic injection.

Zero copy-paste — the tool carries the context for you.

[PARENT CONVERSATION CONTEXT] <the auto-selected slice> [END PARENT CONTEXT] [YOUR TASK] <your instruction>
The Pattern

Pass judgment, not transcripts.

Pick the slice by intent — how much (depth) and which content (scope) — and let the tool carry the context. The reusable idea outlasts this one tool: describe what the child needs, don't hand-assemble it.

Shipped & maintained
Sources

Research Methodology

Source: microsoft/amplifier-foundation, modules/tool-delegate (origin verified: git remote -v → origin git@github.com:microsoft/amplifier-foundation.git)

Feature status: Shipped and maintained (founding commit b73813b / PR #44 merged 2026-01-30; continued fixes through 5354fbb, 2026-04-02)

Research performed:

Gaps: Suggested source microsoft/amplifier-module-context-simple was checked and rejected — a source grep for context_depth/context_scope/delegate returned zero matches. The 2000-char truncation is per-message inside the context builder, not the whole block.

Primary contributor: Brian Krabach (bkrabach) — author of founding commit b73813b / PR #44 and composable-agents PR #43.

More Amplifier Stories