Skip to content

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

@brian-kelley-intel

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions