github / github/copilot-cli

copilot plugin install does not load joinSession() extensions from installed-plugins/

未關閉
#3,023 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area:plugins
主要語言
Shell
星號
11.2k
分支
1.9k
平均合併
14 小時 16 分鐘
30 天內合併 PR
6

描述

### 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

貢獻指南

開啟貢獻指南

研究方向

首先比較 plugin.json schema,以及文件中記錄的位於 ~/.copilot/extensions/ 和 .github/extensions/ 下的擴充功能探索路徑。使用匯出 joinSession() 的 extension.mjs 重現安裝流程,接著追蹤 ~/.copilot/installed-plugins/ 中的檔案是否會被納入考量;當支援的散佈行為已實作,或限制已清楚記錄時,即表示完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
shell
領域
cli, tooling
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
冷清
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。