Dynamically registered extension slash commands show `unknown command` even when they execute successfully
- Lingua principale
- Shell
- Stelle
- 11.2k
- Fork
- 1.9k
- Merge medio
- 14h 16m
- PR unite (30g)
- 6
Descrizione
## Summary
When an extension adds a slash command dynamically after session startup, Copilot CLI can show an `unknown command` error in the UI even though the command still executes successfully in the extension.
This looks like the local slash-command validation path is out of sync with the dynamically registered command list.
## Environment
- Copilot CLI: 1.0.25
- OS: Windows
## Reproduction
I reproduced this with a Telegram bridge extension that:
1. joins the session with `joinSession(...)`
2. then registers `/telegram` afterward via a follow-up `session.resume` request with a `commands` payload
3. handles the command through the extension command event path
Relevant pattern in the extension:
```js
await sess.connection.sendRequest("session.resume", {
sessionId: sess.sessionId,
commands: [{ name: "telegram", description: "Telegram bridge" }],
hooks: true,
});
sess.on("command.execute", (event) => {
const { requestId, commandName, args } = event.data;
if (commandName !== "telegram") return;
// handle command...
});
```
Then in Copilot CLI:
1. start the CLI with the extension loaded
2. run `/telegram`
## Actual behavior
Copilot CLI displays an `unknown command` style error, but the extension still receives and executes the command correctly.
So the command both:
- appears unknown in the UI
- and still works as intended
## Expected behavior
One of these should happen consistently:
1. the command is recognized normally with no error, or
2. if dynamically added commands are not supported in this way, the command should not execute either
## Notes
This seems related to extension commands being added after startup rather than being available in the initial command set.
In this case, the extension uses `session.resume` because `joinSession(...)` does not expose a direct way to provide slash commands up front.
That makes this look like either:
- a bug in Copilot CLI command discovery/validation for extension-added commands, or
- a gap in the extension API contract around dynamic slash-command registration.
If helpful, I can provide a reduced repro extension.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Non sono indicati file sorgente né test. Inizia tracciando la validazione locale di slash-command della CLI e il modo in cui la payload session.resume commands aggiorna l’elenco dei comandi registrati; quindi riproduci il problema con il pattern del bridge Telegram. Il lavoro è completato quando i comandi registrati dinamicamente vengono riconosciuti senza un errore dell’UI oppure rifiutati in modo coerente con il loro comportamento di esecuzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript, shell
- Ambito
- api, cli, developer-experience
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100