Repository navigation
Conversation
etang4
marked this pull request as ready for review
October 24, 2026 17:38
Signed-off-by: Eric T <4793472+etang4@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A Codex session configured for Ultrafast or Flex can start with the correct tier, but codex-acp reduces that tier to a Fast on/off boolean. Its first prompt then sends
serviceTier: null, clearing the selection.Retain the service-tier string returned by Codex through new, resume, load, and fork operations and subsequent prompts. Explicit ACP Fast On/Off changes still override the selection. Both
fastand Codex's canonicalpriorityname are recognized as Fast, with the existing model-support check preserved. Codex remains responsible for account and model eligibility; the adapter does not force a tier that Codex rejected.Reopening a live session before its first prompt also preserves its tier: the no-rollout fallback leaves the tier unknown instead of reporting a clear. A tier explicitly returned by Codex, including null, still takes precedence over the existing session value.
The change uses the existing app-server string field and removes casts to the older generated
fast | flextype. It does not change ACP or generated protocol schemas.Related work
fastor null, so it does not preserve Ultrafast/Flex. There is overlap in Fast alias recognition.serviceTiers. This PR leaves that model-discovery change to fix: recognize priority service tier as Fast mode #648.Validation
At
52d47d7a022525ed19f3757191254e77d8a44310:npm run typechecknpm testwith Node 24: 1,911 passed, 36 skipped (the existing suite's normal skips)npm run test:integration: 10 passed using the real Codex app-server and a local mock Responses APInpm run buildnpm exec --yes --package=bun@1.3.11 -- npm run bundle:all: Linux, macOS, and Windows, each x64 and arm64run-codexsmoke helper against real Codex and a local mock model: Flex configured inconfig.tomlreached the model asservice_tier: "flex"Regression coverage exercises the actual new, resume, load, and fork paths, repeated prompts, explicit Fast overrides, both Fast aliases, and empty-session resume/load. It distinguishes an unavailable tier from an explicit null or replacement tier. The new empty-session tests reproduced four unit-test failures before the fix. The real local-gateway tests use Flex because the anonymous model catalog does not advertise Ultrafast; Ultrafast is covered at the app-server request boundary.
Earlier validation at
0a37c04included a built-adapter protocol probe preserving Ultrafast with Fast disabled. An authenticated Codex 0.164.0 smoke test at8ccbf8aaccepted Ultrafast for GPT-6 Astra and completed one short prompt. These earlier probes were not rerun against the final commit. Cross-platform bundles were built locally; they were not executed on every target OS.