github / github/copilot-cli

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

未關閉
#1,637 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area:models
主要語言
Shell
星號
11.2k
分支
1.9k
平均合併
14 小時 16 分鐘
30 天內合併 PR
6

描述

### 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.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。