copilot plugin install does not load joinSession() extensions from installed-plugins/
- Vorherrschende Sprache
- Shell
- Sterne
- 11.2k
- Forks
- 1.9k
- Ø Merge
- 14 Std. 16 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
### Describe the bug
Plugins cannot package or distribute Copilot CLI \xtension.mjs\ / \joinSession()\ extensions. The official plugin schema (\plugin.json\) does not include an \xtensions\ field, and \copilot plugin install\ stores files under \installed-plugins/\ which does not appear to participate in extension discovery.
Extensions are only discovered from \~/.copilot/extensions//extension.mjs\ and \.github/extensions//extension.mjs\, per the SDK docs.
This means plugin authors who build \joinSession()\ extensions (with tools, hooks, lifecycle events) cannot distribute them through the plugin system — users must manually copy files to the extensions directory.
### Affected version
1.0.37 (also tested on 1.0.26)
### Steps to reproduce the behavior
1. Create a plugin with a \plugin.json\ and an \xtension.mjs\ that exports \joinSession()\ from \@github/copilot-sdk/extension\
2. Install via \copilot plugin install /\
3. Plugin installs successfully — files copied to \~/.copilot/installed-plugins/\
4. Start a new Copilot CLI session (restart terminal)
5. Tools registered by the extension do not appear
6. Hooks (e.g., \onSessionStart\) do not fire
### Expected behavior
Either:
- \copilot plugin install\ should discover and load \xtension.mjs\ from installed plugins, OR
- The \plugin.json\ schema should support an \xtensions\ field for declaring extensions, OR
- The docs should clarify that extensions are not distributable via the plugin system
### Additional context
- OS: Windows 11, also tested on macOS
- Shell: PowerShell 7, zsh
- Workaround: Manually copy extension to \~/.copilot/extensions//extension.mjs\
**Real-world example:** [copilot-brag-sheet](https://github.com/microsoft/copilot-brag-sheet) is a \joinSession()\ extension that auto-tracks coding sessions into a structured work log. It registers tools (\save_to_brag_sheet\, \
eview_brag_sheet\, \generate_work_log\) and hooks (\onSessionStart\, \onPostToolUse\, \onSessionEnd\). Currently users must install manually because the plugin system can't distribute it.
**Context:** This was flagged by an awesome-copilot maintainer during skill PR review: https://github.com/github/awesome-copilot/pull/1428
Beitragsleitfaden
Rechercherichtung
Beginne mit dem Vergleich des plugin.json-Schemas und der dokumentierten Pfade zur Erkennung von Erweiterungen unter ~/.copilot/extensions/ und .github/extensions/. Reproduziere die Installation mit einer extension.mjs, die joinSession() exportiert, und verfolge anschließend, ob Dateien in ~/.copilot/installed-plugins/ berücksichtigt werden; abgeschlossen ist die Aufgabe, wenn das unterstützte Verteilungsverhalten implementiert oder die Einschränkung klar dokumentiert ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- shell
- Bereich
- cli, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100