Skip to content

copilot plugin marketplace list ignores repo-level extraKnownMarketplaces override in .github/copilot/settings.json #3087

Description

@brian-kelley-intel

Describe the bug

copilot plugin marketplace list (the CLI subcommand) does not apply
extraKnownMarketplaces overrides defined in a repository's
.github/copilot/settings.json. The same override is respected when
running the equivalent slash command inside an interactive Copilot session
(/plugin marketplace list), so the two surfaces are inconsistent.

The docs
state that .github/copilot/settings.json is a repository-level config that
should take precedence over user settings for that repo's context.

Affected version

GitHub Copilot CLI 1.0.40.

Steps to reproduce the behavior

Setup:

  1. In ~/.copilot/settings.json (user-level), register a marketplace entry
    under some name, e.g. my-marketplace:

    {
      "extraKnownMarketplaces": {
        "my-marketplace": {
          "source": {
            "source": "github",
            "repo": "my-org/marketplace-base-repo"
          }
        }
      }
    }
  2. In the repository's .github/copilot/settings.json, override that same
    entry to point to a different repo:

    {
      "extraKnownMarketplaces": {
        "my-marketplace": {
          "source": {
            "source": "github",
            "repo": "my-org/marketplace-override-repo"
          }
        }
      }
    }
  3. cd into the repository root (so Copilot can discover .github/copilot/settings.json).

Reproduce:

# From inside the repo root:
copilot plugin marketplace list
# Also launch an interactive session from the same repo root and run:
# /plugin marketplace list
copilot -i

Actual behavior

CLI (copilot plugin marketplace list) — repo override is ignored;
user-level value is shown:

✨ Included with GitHub Copilot:
  ◆ copilot-plugins (GitHub: github/copilot-plugins)
  ◆ awesome-copilot (GitHub: github/awesome-copilot)

Registered marketplaces:
  • my-marketplace (GitHub: my-org/marketplace-base-repo)

Interactive (/plugin marketplace list) — repo override is applied
correctly:

Registered marketplaces:
  • my-marketplace (GitHub: my-org/marketplace-override-repo)

Expected behavior

Both surfaces should respect the repository-level extraKnownMarketplaces
override when invoked from inside the repository. The CLI subcommand
copilot plugin marketplace list should show:

Registered marketplaces:
  • my-marketplace (GitHub: my-org/marketplace-override-repo)

Additional context

The inconsistency suggests that the copilot plugin marketplace list code path
does not load or merge .github/copilot/settings.json before resolving the
marketplace list, while the interactive session code path does.

Field Value
CLI version GitHub Copilot CLI 1.0.40
OS Linux 5.14.21 x86_64
Shell bash
Related #1309 — Allow configuring custom skill marketplaces (closed; this is a separate regression in the CLI subcommand surface)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions