Skip to content

Fix Codex Fast-mode defaults for Business accounts#237

Merged
adamfgr merged 2 commits into
mainfrom
wizzo/fix-codex-fast-mode-default
Jul 22, 2026
Merged

Fix Codex Fast-mode defaults for Business accounts#237
adamfgr merged 2 commits into
mainfrom
wizzo/fix-codex-fast-mode-default

Conversation

@wizzoapp

@wizzoapp wizzoapp Bot commented Jul 22, 2026

Copy link
Copy Markdown

Summary

Fix Codex service-tier defaults for eligible ChatGPT Business/Enterprise accounts without removing Fast from the selector.

Root cause: T3 copied model/list.defaultServiceTier directly into every new composer and did not read the provider instance's effective config/read result. It could therefore overwrite an explicit Standard choice or the durable [notice] fast_default_opt_out = true marker with the catalog-managed Fast default. Request construction also needed to preserve an explicit clear value instead of relying on omission.

The fix keeps catalog defaults, configured preferences, and per-thread selections distinct:

  • reads config/read through each Codex provider client/home before mapping that instance's model catalog
  • resolves explicit config/opt-out before the catalog-managed default, while preserving saved draft/thread choices
  • normalizes legacy fastMode and string fast selections to canonical priority
  • retains Standard, Fast, and Flex availability and sends selected tiers on start, resume, subsequent turns, and helper invocations
  • clears unsupported configured tiers to explicit Standard instead of falling through to catalog Fast

Protocol

Confirmed against Codex 0.145.0 and current upstream source: Standard is the explicit request sentinel serviceTier: "default". App-server accepts null as a clear input but normalizes it to "default"; T3 therefore transmits the current canonical string and never omits Standard. Helper codex exec calls use --config service_tier="default".

Verification

  • focused server/web/shared unit/integration suite: 7 files, 138 tests passed
  • mobile/shared/web normalization regression suite: 3 files, 37 tests passed
  • targeted formatting/lint passed
  • focused server/web/shared typechecks passed
  • desktop web/server asset build passed
  • factory pre-commit gate passed repository static checks and a clean Codex review after all accepted findings were fixed
  • isolated real Codex config/read probe confirmed opt-out and explicit Standard shapes; config checksum remained unchanged after reads
  • ephemeral real T3 web UI with a controlled ChatGPT Business app-server: catalog Fast default + opt-out displayed Standard; captured thread/start, first turn/start, and resumed second turn/start all contained explicit serviceTier: "default"

Coverage includes all requested cases: opt-out, explicit Standard, no-config managed Fast, explicit Fast, Flex, Fast→Standard persistence, saved Standard draft, legacy fastMode:true, non-eligible Standard fallback, and independent Windows/WSL provider config reads.

Windows/WSL: test-covered, NOT yet live-exercised (VM blocked).

@wizzoapp
wizzoapp Bot marked this pull request as ready for review July 22, 2026 13:28

@adamfgr adamfgr left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approved by wizzo-approve: all policy conditions verified against HEAD 1b7df62.

@adamfgr
adamfgr merged commit 7a97471 into main Jul 22, 2026
15 of 16 checks passed
@adamfgr
adamfgr deleted the wizzo/fix-codex-fast-mode-default branch July 22, 2026 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant