Skip to content

copilot plugin marketplace list CLI command does not respect repository-level overrides #3088

@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](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-config-dir-reference? versionId=free-pro-team%40latest&productId=copilot&restPage=how-tos%2Ccopilot-cli%2Ccustomize-copilot%2Cuse-byok-models#repository-settings-githubcopilotsettingsjson) 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

    area:configurationConfig files, instruction files, settings, and environment variablesarea:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agents

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions