bug(summon): unmatched extension filters silently spawn tool-less workers
- Lenguaje dominante
- Rust
- Estrellas
- 54.2k
- Forks
- 6.2k
- Merge medio
- 3 d 4 h
- PR fusionados (30 d)
- 240
Descripción
## Summary
An explicit delegate extensions filter compares strings only against ExtensionConfig.name and merely logs unmatched names. A config key such as exasearch therefore creates a child with zero tools when the extension name is Exa Search.
## Reproduction
With an enabled entry keyed exasearch and named Exa Search, extensions set to exasearch starts a child with zero tools while Exa Search exposes the tool. Platform names add another shape: developer works while Developer does not.
## Source evidence
build_task_config in crates/goose/src/agents/platform_extensions/summon.rs retains entries with filter.contains(ext.name()). Unmatched names produce only an internal warning. ExtensionConfig.key and name_to_key already define a normalized key shape.
## Expected
Accept normalized keys and names consistently. Any unmatched explicit extension should fail before provider or session work begins and list available names. An empty list should still mean no extensions.
## Verification
- display name and normalized key select the same extension
- unknown names return a visible error and spawn no child
- mixed valid and invalid filters fail
- empty disables all and omitted inherits
Guía de contribución
Línea de trabajo
The issue is in crates/goose/src/agents/platform_extensions/summon.rs, specifically the build_task_config function. Start by examining ExtensionConfig.key and name_to_key to understand the normalized key shape. Then, modify the filter matching logic to compare against both name and normalized key, and ensure unmatched names produce a visible error before spawning a child. Run existing tests to verify the changes.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rust
- Área
- cli, tooling
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Activo
- Claridad
- Bien especificado
- Aptitud para principiantes
- 65/100