docs: document summon extension requirement for delegate and load tools (#9231)

Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
Douwe Osinga
2026-05-16 10:41:15 -04:00
committed by GitHub
parent 3cf0bcdec7
commit 3254d442c9
3 changed files with 29 additions and 0 deletions
@@ -176,6 +176,18 @@ The `extensions` field allows you to specify which Model Context Protocol (MCP)
- **`frontend`**: Frontend-provided tools called through the frontend
- **`inline_python`**: Inline Python code executed using uvx. Requires `code` field; optional `dependencies` for packages.
:::note Summon Extension and Subagents
The `delegate` and `load` tools are provided by the `summon` platform extension. When a recipe specifies an explicit `extensions` block, only the listed extensions are available — default platform extensions like `summon` are not automatically included. If your recipe needs subagent delegation, add `summon` to your extensions list:
```yaml
extensions:
- type: platform
name: summon
```
Recipes that define [`sub_recipes`](/docs/guides/recipes/subrecipes) have `summon` auto-injected and do not need to list it explicitly.
:::
#### Example Extensions Configuration
<Tabs groupId="format">
@@ -28,6 +28,10 @@ When the main recipe is run, goose generates a tool for each subrecipe that:
Sub-recipe sessions run in isolation - they don't share conversation history, memory, or state with the main recipe or other subrecipes. Additionally, subrecipes cannot define their own subrecipes (no nesting allowed).
:::note
Recipes that define `sub_recipes` automatically get the `summon` platform extension injected, so the `delegate` tool is available without needing to list it in `extensions`.
:::
### Parameter Handling
Parameters received by subrecipes can be used in prompts and instructions using `{{ parameter_name }}` syntax. Subrecipes receive parameters in two ways: