Context
Dispatch currently passes model, model_provider, effort, and service_tier through to the Codex App Server, but it does not maintain a local catalog of available models or service tiers. Recent live inspection showed Codex Fast Mode is exposed through two vocabularies:
- user/Codex config language:
fast
- app-server/API service tier:
priority, displayed as Fast in model/list.serviceTiers
Relying on raw thread metadata is not enough because existing Codex threads may not persist the effective service tier in rollout or thread/read metadata.
Scope
Build a small model registry/cache sourced from the live Codex App Server catalog, not from hard-coded model names.
Acceptance criteria
- Dispatch can refresh and store the current app-server model catalog from
model/list.
serviceTiers is canonical; deprecated additionalSpeedTiers is fallback-only.
fast resolves to the model catalog service tier whose display name is Fast when available, currently priority for GPT-5.5/GPT-5.4.
- Unsupported model/tier combinations fail clearly and suggest available tiers/models.
- The resolver is used before
thread/start and initial turn/start when a service tier is explicitly configured.
- Tests cover
fast -> priority, canonical priority, unsupported fast tier, stale-cache refresh/retry, and no-explicit-tier behavior.
- Docs explain the Codex Fast vs API/app-server priority vocabulary.
Context
Dispatch currently passes
model,model_provider,effort, andservice_tierthrough to the Codex App Server, but it does not maintain a local catalog of available models or service tiers. Recent live inspection showed Codex Fast Mode is exposed through two vocabularies:fastpriority, displayed asFastinmodel/list.serviceTiersRelying on raw thread metadata is not enough because existing Codex threads may not persist the effective service tier in rollout or
thread/readmetadata.Scope
Build a small model registry/cache sourced from the live Codex App Server catalog, not from hard-coded model names.
Acceptance criteria
model/list.serviceTiersis canonical; deprecatedadditionalSpeedTiersis fallback-only.fastresolves to the model catalog service tier whose display name isFastwhen available, currentlypriorityfor GPT-5.5/GPT-5.4.thread/startand initialturn/startwhen a service tier is explicitly configured.fast -> priority, canonicalpriority, unsupported fast tier, stale-cache refresh/retry, and no-explicit-tier behavior.