Skip to content

Recipe sessions lose delegate tool when extensions block omits summon #7355

@clouatre

Description

@clouatre

Describe the bug

PR #6964 moved delegate from an unconditional builtin into the summon platform extension. Recipes with an explicit extensions: block that omit summon silently lose access to delegate with no error or warning.

To Reproduce

  1. Create a recipe with an explicit extensions: block that omits summon but uses delegate via inline instructions
  2. Run: goose run --recipe your-recipe.yaml
  3. delegate is unavailable; the agent does not spawn sub-agents

Expected behavior

delegate is available in any recipe session, consistent with pre-#6964 behavior where subagent was registered unconditionally in agent.rs regardless of the recipe's extensions: block.

Additional context

resolve_extensions_for_new_session treats a recipe's extensions: block as exclusive and does not merge with ~/.config/goose/config.yaml. If summon is absent, delegate is never registered.

Commit b01e58b16 auto-injects summon for recipes with a sub_recipes: field but does not cover recipes that invoke delegate via inline instructions.

Workaround: add summon to the recipe's extensions: block:

extensions:
  - type: platform
    name: summon
  - type: builtin
    name: developer

Proposed fixes

  1. Extend ensure_summon_for_subrecipes to cover all recipes, not just those with sub_recipes:
  2. Emit a warning when a recipe session starts without summon loaded
  3. Add a migration note to the recipe authoring docs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions