bug: 'web'/'search' tool-category aliases silently resolve to no bound tool in headless --agent dispatch
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Description
## Summary
When an agent's frontmatter declares tools using the category aliases `web` or
`search`, those aliases silently resolve to **no bound tool at all** when the
agent is dispatched headlessly via `copilot --agent -p ... --allow-all-tools`.
There is no error or warning — the agent simply has no web-fetch/web-search
capability, which is easy to miss since nothing fails loudly.
Other category aliases in the same position work correctly: `read` → `view`,
`edit` → `edit`, `shell` → `powershell`, `agent` → `task/read_agent/list_agents`.
Only `web` and `search` are affected.
## Environment
- GitHub Copilot CLI 1.0.68 (Windows)
- Invocation: `copilot --agent -p "" --allow-all-tools`
## Repro
Agent frontmatter:
```yaml
---
name: tool-probe
tools:
- read
- web
- search
---
```
Dispatch:
```
copilot --agent tool-probe -p "List every tool you have available to you right now, one per line, then stop." --allow-all-tools
```
**Observed bound tools:** view, skill, sql — no web/search tool at all.
Changing the frontmatter to the literal tool names instead of the category aliases:
```yaml
tools:
- read
- web_fetch
- web_search
```
**Observed bound tools:** view, web_fetch, web_search, skill, sql — correct.
## Impact
Any agent relying on the documented web/search category aliases for web
access has zero web tooling in headless dispatch, with no error surfaced
anywhere. We found this affected 5 of our own agent specs (including a
Chief-of-Staff-style orchestrator whose own web lookups were silently broken)
before switching to literal tool names as a workaround.
## Suggested fix
Category-alias resolution for web/search should map to web_fetch/web_search
in headless --agent dispatch mode the same way shell correctly maps to
powershell and read maps to view.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par suivre la résolution des alias de catégorie pour les outils de frontmatter lors du dispatch headless --agent, en utilisant la reproduction documentée de web/search. Comparez ces alias avec read et shell, puis vérifiez le comportement littéral de web_fetch/web_search. C’est terminé lorsque web et search lient les outils attendus lors du dispatch headless et que l’échec silencieux est couvert par une vérification de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- shell
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 68/100