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:
-
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"
}
}
}
}
-
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"
}
}
}
}
-
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) |
Describe the bug
copilot plugin marketplace list(the CLI subcommand) does not applyextraKnownMarketplacesoverrides 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.jsonis 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:
In
~/.copilot/settings.json(user-level), register a marketplace entryunder some name, e.g.
my-marketplace:{ "extraKnownMarketplaces": { "my-marketplace": { "source": { "source": "github", "repo": "my-org/marketplace-base-repo" } } } }In the repository's
.github/copilot/settings.json, override that sameentry to point to a different repo:
{ "extraKnownMarketplaces": { "my-marketplace": { "source": { "source": "github", "repo": "my-org/marketplace-override-repo" } } } }cdinto the repository root (so Copilot can discover.github/copilot/settings.json).Reproduce:
# From inside the repo root: copilot plugin marketplace listActual behavior
CLI (
copilot plugin marketplace list) — repo override is ignored;user-level value is shown:
Interactive (
/plugin marketplace list) — repo override is appliedcorrectly:
Expected behavior
Both surfaces should respect the repository-level
extraKnownMarketplacesoverride when invoked from inside the repository. The CLI subcommand
copilot plugin marketplace listshould show:Additional context
The inconsistency suggests that the
copilot plugin marketplace listcode path does not load or merge.github/copilot/settings.jsonbefore resolving the marketplace list, while the interactive session code path does.