delegation as an orchestration primitive
Amplifier's "agents" behavior fixes that: instead of doing all the work yourself, you hand it to specialists and stay lean.
And the handoff isn't vague — it's a real, tunable primitive.
The delegate tool takes context_depth (how much) and context_scope (which content) — three enum values each, confirmed in the source.
This precision ships as one composable bundle.
behavior-agents v2.0.0 packages the delegate tool plus delegation context. Bundles that omit it have zero knowledge agents even exist.
So why was delegation ever a second-class idea?
The legacy behavior-tasks v1.0.0 offloaded work mainly to stop the parent context overflowing — a defensive move about token survival, not orchestration.
The v2.0.0 behavior flips that motive on its head.
Self-delegation (agent="self") is on by default and guarded by a recursion limit (max_depth=3), giving the work a fresh mind without polluting your session.
And you don't have to run one specialist at a time.
Parallel dispatch is a documented pattern: multiple delegate calls in one message with context_depth="none" run independent specialists at once. Each returns a session_id to resume.
Discover, dispatch, resume — that's orchestration.
"You are an ORCHESTRATOR, not a worker."
Pick from foundation's 16 specialist agents and compose a team. Delegation stays top-level by default — spawned agents set exclude_tools:[tool-delegate] and can't further delegate.
You think in team composition, not context windows.
Three things the "agents" behavior gives you — carry these away.
Compose a team; don't manage a context window.
Repository: amplifier-foundation (behaviors/agents.yaml + modules/tool-delegate)
Feature status: behavior-agents v2.0.0, included by default in the foundation bundle; tool-delegate recommended over legacy tool-task (behavior-tasks v1.0.0).
Research performed:
cat behaviors/agents.yaml — bundle name / version / tools / contextsed -n '275,295p' modules/tool-delegate/amplifier_module_tool_delegate/__init__.py — context_depth / context_scope enumssed -n '710,712p' __init__.py — defaults (depth=recent, turns=5, scope=conversation)sed -n '108,110p' __init__.py — self_delegation enabled, max_depth=3grep -n 'session_id' __init__.py — session resume pathgrep -n 'Parallel Agent Dispatch' context/agents/multi-agent-patterns.md — parallel dispatch patternls amplifier-foundation/agents/*.md | wc -l — 16 specialist agentsgrep -n 'exclude_tools' behaviors/agents.yaml — spawned agents can't further delegategit log --format='%an' -- behaviors/agents.yaml modules/tool-delegatePrimary contributor: Brian Krabach (35 commits to agents behavior & tool-delegate); Salil Das (PR #93).
Gaps: tool-delegate __init__.py (1286 lines) was not read line-by-line; "six precise context slices" is narrative framing (code has 3 depth × 3 scope = 9 combinations); "confused results" is narrative characterization of the legacy era, not repo text.