Skip to content

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

Description

@vidhartbhatia

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 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: github/awesome-copilot#1428

Activity

  1. added theissue type on Apr 29, 2026
  2. added
    area:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agents
    on Apr 29, 2026
  3. copilot-cli-bot commented on Sep 23, 2026

    @copilot-cli-bot

    This appears to be resolved as of GitHub Copilot CLI v1.0.88. Please update to that release or a newer stable version. We're closing this as completed. If it still happens, please comment with your version and reproduction steps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agents

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions