MCP OAuth: DCR sends client_name "copilot-cli", rejected with 403 by Figma's allowlist (expects "GitHub Copilot CLI")
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- shell
- Área
- api, authentication
Línea de trabajo
Localiza la construcción de la solicitud de MCP OAuth Dynamic Client Registration e inspecciona dónde se establece el valor client_name. Reproduce la autenticación con el Figma remote MCP server y, a continuación, verifica que el registro se realice correctamente y que el flujo de OAuth basado en navegador continúe sin el error 403.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
The CLI registers its OAuth client via Dynamic Client Registration with client_name: "copilot-cli". Figma's registration endpoint runs an allowlist on that field and rejects the value with 403 Forbidden. The transport dies before any browser opens, so the failure surfaces as a generic error with no indication that registration was the problem.
The string Figma expects — GitHub Copilot CLI — is already on their allowlist. This is a one-value mismatch, not a protocol incompatibility.
Reproduction
// ~/.copilot/mcp-config.json
{
"mcpServers": {
"figma": { "url": "https://mcp.figma.com/mcp" }
}
}
Trigger authentication for the figma server. No browser opens. Logs show:
worker quit with fatal: Transport channel closed, when Client(OAuthChallenge { ... })
Or, surfaced to the user:
figma: RPC error -32603: Request session.mcp.oauth.login failed
Evidence
Captured by pointing figma.url at a local mock server and logging the registration request body verbatim:
{
"client_name": "copilot-cli",
"redirect_uris": ["http://127.0.0.1:55973/"],
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"]
}
Every field is valid. Probing Figma's registration endpoint directly (POST https://api.figma.com/v1/oauth/mcp/register) with only client_name varied:
client_name |
Status |
|---|---|
GitHub Copilot CLI |
200 |
GitHub Copilot |
200 |
Claude Code |
200 |
Codex |
200 |
copilot-cli |
403 |
github-copilot |
403 |
GitHub Copilot Chat |
403 |
Cursor |
403 |
Figma's status codes are diagnostic here: 403 means the name was rejected, while a malformed redirect URI returns 400 invalid_redirect_uri. Only the name varies across the table above.
Suggested fix
Send GitHub Copilot CLI as client_name during DCR. Figma already accepts it, and it is a more accurate display name for the consent screen that users see on any provider.
Workaround
A loopback proxy that rewrites client_name and forwards everything else unchanged. Confirmed working end-to-end against Figma, including tool calls.
Two non-obvious details for anyone attempting the same, both of which produce errors that look unrelated to the root cause:
-
RFC 8414 §3.3 — the CLI uses path-insertion discovery, requesting
/.well-known/oauth-authorization-server/mcp. Theissuerin the returned metadata must exactly equal that full URL including the path suffix, not the bare origin. Returning the origin yieldsIncompatible authorization server: authorization server advertised an issuer that does not match the URL its metadata was discovered from. -
The 401 challenge — Figma's
WWW-Authenticateheader points discovery back atfigma.com. Forwarded verbatim, the client routes around the proxy, re-registers ascopilot-cli, and hits the original 403 again.
Notes
Figma has moved to remote-first; the local Dev Mode server on port 3845 is being retired and the desktop app no longer opens that port. There is no local fallback. The remote server is available on all plans including free, so this is not a seat or licensing issue — every Figma user on the CLI hits this.
Possibly related but distinct: #4870 describes a -32601 on server/discover against the same Figma endpoint, which occurs after authentication succeeds. The issue reported here occurs before any auth flow starts.
Environment
- macOS
- Figma remote MCP server (
https://mcp.figma.com/mcp)
- Lenguaje dominante
- Shell
- Estrellas
- 11.2k
- Forks
- 1.9k
- Merge medio
- 14 h 16 min
- PR fusionados (30 d)
- 6
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de github/copilot-cli
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
github/copilot-cli#4909 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/copilot-cli#4729 ·
-
area:sessions
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/copilot-cli#4712 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
github/copilot-cli#4638 ·
Todos los issues de github/copilot-cli
Issues similares
-
Update to NCCL 2.32 Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
conda-forge/nccl-feedstock#166 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
pop-os/plymouth-theme#43 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
hykilpikonna/hyfetch#545 ·
-
on hold T: core-bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100