github / github/copilot-cli

/mcp search fails with 400 Bad Request in every repo with a non-GitHub (Azure DevOps) git remote

Open
#4,374 0 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:enterprise area:mcp
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

Describe the bug

/mcp search (interactive MCP registry browser) consistently fails with:

Failed to load registry: Error: Failed to fetch MCP registry policy: 400 Bad Request

whenever Copilot CLI is started inside a trusted folder whose git remote points to Azure DevOps (dev.azure.com) instead of a GitHub-hosted remote. This affects our entire engineering org, since 100% of our repositories are hosted on Azure DevOps.

Environment
  • Enterprise: GitHub Enterprise Cloud with data residency / EMU tenant
  • OS: Windows
  • Enterprise MCP Registry: configured and verified working (Azure API Center-backed registry, "Registry only" policy) — confirmed via direct curl calls that the registry itself returns HTTP 200 with the expected servers.

Workaround: Run /mcp search from a non-git folder to add servers once; they then work from any repo afterward via the persisted ~/.copilot/mcp-config.json.

Affected version

GitHub Copilot CLI 1.0.78

Steps to reproduce the behavior
  1. Configure an enterprise MCP Registry URL + "Registry only" policy (per GitHub docs).
  2. cd into any local git repository whose origin remote is an Azure DevOps URL (e.g. https://org@dev.azure.com/org/project/_git/repo).
  3. Start copilot.
  4. Run /mcp search.
  5. Observe: Failed to load registry: Error: Failed to fetch MCP registry policy: 400 Bad Request.
  6. cd outside any git repository (e.g. home directory) and start a fresh copilot process.
  7. Run /mcp search again → succeeds, returns all registry servers.
Expected behavior

/mcp search should successfully fetch the registry policy regardless of the git remote host of the current working directory, or at minimum should not derive repo/org context from non-GitHub git remotes in a way that breaks the request.

Additional context
  • The failure is tied to process startup cwd/git-remote context, not conversation state: /new inside the same running process does not recover it — only a full process relaunch outside a git-remote folder works.
  • Once servers are added via the workaround below (outside a repo), they persist in ~/.copilot/mcp-config.json and connect fine from inside our Azure DevOps repos afterward — so the registry policy fetch specifically is what's broken, not general MCP connectivity.
  • Reproduces consistently; not a timing/cache issue; not related to our enterprise's registry configuration (independently verified correct).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing /mcp search from a repository with an Azure DevOps remote and from a non-git folder, then trace the startup context used for the MCP registry policy fetch. The issue is done when registry search succeeds regardless of the current git remote, without breaking the existing persisted configuration in ~/.copilot/mcp-config.json.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, shell
Domain
api, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.