Skip to content

local plugin passed to Copilot CLI with --plugin-dir does not work #4882

Description

@zendu

Describe the bug

Describe the bug

A local plugin passed to Copilot CLI with --plugin-dir is discovered during startup, including its skills, but those skills are not available to the model in the active interactive session. The plugin is also absent from /env and /plugin list.

This is not only a display problem: requests to use the plugin's skills do not work, and the model's available-skill list does not contain them.

Affected version

GitHub Copilot CLI 1.0.86-0, Windows x64.
Observed September 16, 2026.

Steps to reproduce the behavior

The failing session was launched with local plugin directories supplied explicitly. Below is a privacy-sanitized equivalent of the relevant Copilot CLI arguments; names and paths have been replaced:

copilot --no-auto-update `
  --log-dir "C:\temp\copilot-plugin-logs" `
  -C "C:\work\scratch" `
  --add-dir "C:\temp\session-plugins" `
  --plugin-dir "C:\temp\session-plugins\team-workflows" `
  --plugin-dir "C:\temp\session-plugins\support-tools"

The affected plugin has this layout:

team-workflows\
  .claude-plugin\plugin.json
  .github\plugin\plugin.json
  skills\
    example-skill\
      SKILL.md
    ...six other skill directories...

Both manifest locations contain the same manifest. Its relevant fields, with identifying text replaced, are:

{
  "name": "team-workflows",
  "description": "Team workflow skills",
  "version": "1.1.0",
  "skills": "skills/"
}
  1. Launch an interactive session with --plugin-dir and --add-dir as above.
  2. Inspect /env and /plugin list.
  3. Ask the model to use one of the plugin's skills.
  4. Compare the active session's available skills with the startup skill-discovery telemetry.

These commands describe the relevant configuration of the observed failure, not an independently verified minimal reproduction. The original session had additional plugins and MCP configuration. A clean session with a synthetic plugin has not yet been tested.

Expected behavior

Skills successfully discovered from an explicitly supplied plugin directory should remain available to the model during the session and appear in the loaded environment.

If the runtime rejects or disables the plugin, it should explain why. A difference between installed-plugin inventory and session-only plugins should not make the session-only skills unavailable.

Actual behavior and diagnostic evidence

  • The plugin directory and skill files remain present on disk.
  • Copilot startup telemetry lists all seven skills from the affected plugin, with the expected plugin name and version.
  • Their discovery records have userInvocable: true and disableModelInvocation: false.
  • The aggregate skills_loaded record reports total_skill_count: 16, plugin_skill_count: 12, skill_error_count: 0, and skill_warning_count: 0.
  • Despite this, the affected plugin is absent from the reported environment/plugin views and its seven skills are missing from the model's available skills.
  • Plugin reconciliation/reload activity occurs during startup. The log also contains No connection accepted a host event {"kind":"PluginCachesInvalidated"}. This is a diagnostic clue only; it has not been established as the cause.

The discrepancy suggests a problem between startup discovery and active-session plugin/skill registration, but the exact cause is not yet known.

Additional context

  • The working directory is not a Git repository.
  • Multiple --plugin-dir arguments were supplied.
  • No confirmed workaround yet. /skills reload was suggested, but its outcome has not been verified.
  • Possibly related: Plugin skill silently dropped from /skills list despite "Installed N skills" confirming load #3546, which also reports a discrepancy between discovered and available skills. That report concerns a different version and installation path, so this is not assumed to be the same bug.
  • Full logs are not attached because they contain private configuration. The evidence above omits identifying plugin content, paths, and repository information.

Affected version

No response

Steps to reproduce the behavior

No response

Expected behavior

No response

Additional context

No response

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

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions