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 摘要。