github / github/copilot-cli

codex models fail with unsupported_api_for_model when model list fetch is rate-limited

Abierto
#1,637 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area:models
Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Descripción

### Describe the bug

When multiple concurrent `copilot` processes use `gpt-5.3-codex`, they fail with `unsupported_api_for_model` because the CLI sends requests to `/chat/completions` instead of `/responses`.

The issue occurs when the `listModels` API call is rate-limited (HTTP 429). A single CLI instance works fine because the model list loads successfully.

**Root cause (from inspecting the 0.0.415 bundle):**

The responses API routing in `KXe.getCompletionWithTools` requires both conditions to be true:

```javascript
U7e(settings, clientOptions) && model?.supported_endpoints?.includes("/responses")
```

- `U7e()` checks `clientOptions.thinkingMode || featureFlag("copilot_swe_agent_enable_responses_api")`
- `model` comes from `chatClient.modelPromise` — a model list fetch from the API

When the model list fetch fails (HTTP 429), `model` is null, so `supported_endpoints?.includes("/responses")` is falsy. The CLI falls back to `/chat/completions`, which rejects codex models. It then retries the same failing endpoint 5 times without re-attempting the model list fetch.

### Affected version

0.0.415

### Steps to reproduce the behavior

1. Run multiple concurrent `copilot -p` processes with `--model gpt-5.3-codex`
2. The `listModels` endpoint gets rate-limited (429)
3. All instances fall back to `/chat/completions` and fail with:
```json
{"error":{"message":"model \"gpt-5.3-codex\" is not accessible via the /chat/completions endpoint","code":"unsupported_api_for_model"}}
```

### Expected behavior

When the model list is unavailable, the CLI should either:
- Handle the `unsupported_api_for_model` error by retrying with the `/responses` endpoint
- Retry the model list fetch with backoff before giving up
- Treat `thinkingMode` alone (without model metadata) as sufficient to route to `/responses`

### Additional context

From the process logs:

```
[ERROR] Error loading models: Error: Failed to list models: 429
```

Followed by 6 consecutive failures on `/chat/completions` with `unsupported_api_for_model`, then exit code 1.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.