gpt-6-astra is served as gpt-5.6-luna (runtime model substitution) on a Plus account, plus 47 spurious "Selected model is at capacity" errors
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
On this ChatGPT Plus account (ChatGPT auth), Codex Desktop and the Codex CLI request gpt-6-astra but the server
serves gpt-5.6-luna. The substitution is deterministic (all traced runs, all reasoning efforts), while
gpt-5.6-sol, gpt-5.6-luna, gpt-5.6-terra and gpt-5.5 are served correctly in the same minutes on the
same machine and network.
Concurrently the account received 47 Selected model is at capacity. Please try a different model. errors over
2026-09-17..2026-09-19 while quota was at 1-3% of the 5-hour window.
Environment
- Codex Desktop: OpenAI.Codex 26.915.4065.0 (MSIX, Windows x64), bundled core
codex-cli 0.155.0-alpha.9.2 - Account: ChatGPT Plus (masked account id
2ad83b05..aca2) - Transport: since the 2026-09-18 update, sampling uses the websocket transport (no HTTP
x-oai-request-id)
Evidence A - requested vs served model
Captured from the raw websocket frames the client receives (RUST_LOG=trace). The model field of the server
response object is the model that was actually served.
| Local time (UTC+08:00) | Requested | Served (server response object) | Response ID |
|---|---|---|---|
| 2026-09-19 19:30:14 | gpt-6-astra | gpt-5.6-luna | resp_0cf037ec2ca05ffc016aae724b73c487d0bab5f9eece9d7690 |
| 2026-09-19 19:19:01 | gpt-6-astra | gpt-5.6-luna | resp_000cb07482a11305016aae6fa8923c87d09f63874702692059 |
| 2026-09-19 19:13:40 | gpt-6-astra | gpt-5.6-luna | resp_0a1d2160dd2ec118016aae6e6732fc87d0a796f6b48cacf18a |
| 2026-09-19 14:12-14:17 (low) | gpt-6-astra | gpt-5.6-luna | resp_0ead3613c3edb4d6016aae289a922887d09932f686526a7d36 |
| 2026-09-19 14:12-14:17 (medium) | gpt-6-astra | gpt-5.6-luna | resp_05c8daf3309878ac016aae28a9d4d487d0abae831de1db0cfd |
| 2026-09-19 14:12-14:17 (high) | gpt-6-astra | gpt-5.6-luna | resp_0f1abcf89c482a74016aae28c36d6487d0ba73b7646a861823 |
| 2026-09-19 14:12-14:17 (xhigh) | gpt-6-astra | gpt-5.6-luna | resp_003936d7bea4c58c016aae28d9cccc87d0bfeadf6d38509871 |
Control group, same account / machine / network:
| Local time (UTC+08:00) | Requested | Served | Response ID |
|---|---|---|---|
| 2026-09-19 13:30-13:34 | gpt-5.6-sol | gpt-5.6-sol (correct) | resp_09b43d209c0af1de016aae280fc1d887d0821a41ee640be40a |
| 2026-09-19 13:30-13:34 | gpt-5.6-luna | gpt-5.6-luna (correct) | resp_0b8ebef5973051fe016aae281f2f8087d0bb469f1bbe3f90bc |
| 2026-09-19 13:30-13:34 | gpt-5.6-terra | gpt-5.6-terra (correct) | resp_011eb02907ae72d0016aae286531b087d084fff8d13b328bff |
| 2026-09-19 13:30-13:34 | gpt-5.5 | gpt-5.5 (correct) | resp_0e3355198b2b60fd016aae2875dfe087d09d775d24ebcbd57a |
Verbatim server frame for the high run above (request made with -m gpt-6-astra):
{"type":"response.created","response":{"id":"resp_0f1abcf89c482a74016aae28c36d6487d0ba73b7646a861823",
"object":"response","created_at":1789798595,"status":"in_progress","error":null,
"model":"gpt-5.6-luna","moderation":null,"output":[],
"reasoning":{"context":"all_turns","effort":"high","mode":"standard","summary":null},
"service_tier":"auto","store":false}}
The same responses also carried these headers:
x-codex-safety-buffering-enabled: true
x-codex-safety-buffering-faster-model: gpt-5.6-luna
gpt-6-astra is still listed as selectable in the model catalog (visibility: list, supported_in_api: true,
context window 272000), so this is a runtime substitution, not a missing entitlement.
Evidence B - "Selected model is at capacity" while quota was intact
- 47 occurrences across 23 threads: 2026-09-17 (44), 2026-09-18 (2), 2026-09-19 (1)
- First: 2026-09-17 19:06:09 (+08:00) = 11:06:09Z; last: 2026-09-19 13:31:42 (+08:00) = 05:31:42Z
- Models involved: gpt-5.6-sol 25, gpt-5.6-luna 13, gpt-6-astra 6, gpt-5.5 1
- Quota headers returned during the failures:
x-codex-primary-used-percent: 1-3(5h window),
x-codex-secondary-used-percent: 34-67(weekly),x-codex-plan-type: plus - The log contains zero HTTP 429s: the rejection is delivered inside an HTTP 200 stream
- HTTP-transport request IDs from that window (before the websocket switch):
2237d65a-98b6-40a7-84a6-9df66a1af920(2026-09-17 20:59:53 +08:00),
d34cce49-59bb-45b6-be2a-d31612110785(20:59:55),
7d949d1b-6f13-43ab-afe2-641d1423533f(21:00:10)
Reproduction
$env:RUST_LOG='trace'
codex exec --skip-git-repo-check -s read-only -m gpt-6-astra "Say hi in one word." *>&1 | Out-File trace.log -Encoding utf8
Select-String -Path trace.log -Pattern '"model":"' # -> "model":"gpt-5.6-luna" (served)
Select-String -Path trace.log -Pattern 'model=gpt-' # -> gpt-6-astra (requested)
Already tried, issue persists
- Password reset, authenticator-app MFA enabled, all active sessions terminated, full re-authentication
(Codex Desktop + CLI) - the substitution was reproduced again afterwards (2026-09-19 19:30:14 +08:00). - No client update is available: installed OpenAI.Codex 26.915.4065.0,
winget upgradereports nothing, and this
build has no "Check for Updates" UI item.
Expected
The server response object should report "model":"gpt-6-astra" when gpt-6-astra is requested.
Actual
The server reports "model":"gpt-5.6-luna".
Support-side handles
- In-app feedback session ID:
01a0b824-3d99-71e3-98a8-2c9a236ea3da - Machine-readable export (counts, per-error list, request IDs, quota headers) available on request.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the codex exec entry point and reproduce the request using the provided PowerShell command, then inspect trace.log for the requested and served model fields. The issue provides no repository file or test to change; done would require confirming that gpt-6-astra is served as requested and that the reported capacity errors no longer occur.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100