github / github/copilot-cli

CIMD declares callback port 33418 but Copilot CLI uses an ephemeral port

Ouverte
#4,793 1 commentaire 2 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

triage
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

Describe the bug

Copilot CLI’s Client ID Metadata Document declares a fixed loopback callback port, but the CLI sends a different ephemeral port in the OAuth authorization request.

Client metadata: https://github.com/copilot/cli/client-metadata.json

{
  "client_id": "https://github.com/copilot/cli/client-metadata.json",
  "application_type": "native",
  "redirect_uris": [
    "http://127.0.0.1:33418/"
  ]
}

The authorization request generated by Copilot CLI instead contains a callback such as:

  redirect_uri=http://127.0.0.1:60005/

My authorization server rejects the request with:

  unauthorized_client: Callback URL mismatch.
  http://127.0.0.1:60005/ is not in the list of allowed callback URLs
Affected version

GitHub Copilot CLI 1.0.83

Steps to reproduce the behavior
  1. Configure a remote MCP server protected by an Auth0 authorization server.
  2. Register Copilot CLI in Auth0 using: https://github.com/copilot/cli/client-metadata.json
  3. Add the remote MCP server to Copilot CLI.
  4. Start authentication.
  5. Inspect the generated /authorize request.

The request uses an ephemeral loopback port rather than the 33418 port declared in the metadata document.

Expected behavior

The redirect URI used by Copilot CLI should be compatible with its published metadata.

Either:

  1. Copilot CLI should bind to the declared callback:

      http://127.0.0.1:33418/
    
  2. The metadata should declare a portless loopback callback compatible with ephemeral ports:

      "redirect_uris": [
        "http://127.0.0.1/"
      ]
    

There should not be a requirement for every MCP server operator or Copilot user to configure a callback-port override.

Additional context
  • Operating system: macOS 26.5.1
  • MCP transport: Streamable HTTP
  • Authorization server: Auth0
  • Client registration: Client ID Metadata Document

For reference, Claude Code also uses an ephemeral loopback but its metadata document declares port-less loopback callbacks:

  "redirect_uris": [
    "http://localhost/callback",
    "http://127.0.0.1/callback"
  ]

The same Auth0 authorization server accepts Claude Code’s runtime callback while rejecting Copilot CLI’s callback because Copilot’s metadata explicitly pins port 33418.

Claude's metadata: https://claude.ai/oauth/claude-code-client-metadata

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le client-metadata.json publié et le flux d’autorisation OAuth de Copilot CLI qui génère la requête /authorize. Comparez l’URI de redirection déclarée avec le callback loopback à l’exécution et déterminez quel comportement doit être aligné ; le travail est terminé lorsqu’un serveur d’autorisation accepte le callback sans remplacement du port par utilisateur.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
authentication, cli
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
58/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.