Skip to content

extensions.discover() omits enabled marketplace-installed plugin extensions on Copilot CLI 1.0.88 #4978

Description

@rioscesar

Describe the bug

An enabled marketplace-installed plugin extension is missing from client.rpc.extensions.discover() both before and after session creation, even though the extension runs in the session, appears in current tool metadata, and its tool executes successfully. In the same isolated environment, discovery does return a user-global extension.

The Copilot SDK extensions.discover() API contract describes discovery of user and enabled installed-plugin extensions from persisted Copilot home state. It also explicitly excludes launch-scoped additional plugins.

Affected version

  • GitHub Copilot CLI: 1.0.88 (Windows x64)
  • Node.js: v24.18.0 in the SDK harness
  • SDK: 1.0.14-preview.1, identified from SDK source-path labels in the CLI bundle. I did not independently verify package-resolution metadata.
  • Reproduction uses a fresh, isolated COPILOT_HOME.

Steps to reproduce

  1. Create a fresh COPILOT_HOME and a local marketplace containing a minimal plugin with one extension and one deterministic tool.
  2. Install the marketplace plugin and confirm it is enabled:
    copilot plugin marketplace add <local-marketplace-path>
    copilot plugin install minimal-discovery@<marketplace-name>
    copilot plugin list --json
    
  3. Configure the SDK client to use the same Copilot home and CLI. Call client.rpc.extensions.discover().
  4. Create a session with extension loading enabled. Call client.rpc.extensions.discover() again, then inspect session.rpc.extensions.list() and session.rpc.tools.getCurrentMetadata().
  5. Execute the plugin’s deterministic tool from the session.
  6. As a control, add a user-global extension to the same isolated home and repeat discovery.

Expected behavior

The enabled marketplace-installed plugin extension should appear in global extensions.discover(), because it is an enabled installed-plugin extension persisted in the same Copilot home used by the SDK client. Launch-scoped additions are excluded by the documented contract; this marketplace fixture is installed in the isolated home, not supplied as a launch-scoped plugin directory.

Additional context

Observed results:

Fixture extensions.discover() Session/tool result
User-global extension Present Running; tool succeeds
Launch-scoped startup plugin Empty Running; tool succeeds
Minimal marketplace plugin Empty before and after session creation Enabled; extension running; tool metadata present; tool succeeds

The launch-scoped result is consistent with the SDK contract. The discrepancy is that the enabled marketplace plugin is also absent from discovery despite being active and usable in-session.

The reproduction observed load_and_augment with an empty discovery list; this does not establish the cause of the discrepancy. The evidence identifies the behavior but not its internal cause.

Related history: github/copilot-cli#3023 concerned plugin extensions not loading properly. In this reproduction, the plugin extension loads and executes; global discovery omits it.

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions