Model migration prompt stores acknowledgements as [notice.model_migrations] mappings when keeping the existing model

Resolved 💬 5 comments Opened Apr 18, 2026 by Eric-Terminal Closed Apr 18, 2026

Reproduction

  1. Set the current model to gpt-5.3-codex.
  2. Start Codex and wait for the migration prompt that recommends gpt-5.4.
  3. Explicitly choose Use existing model.
  4. Check ~/.codex/config.toml.

Actual behavior

Codex writes the following entry:

[notice.model_migrations]
"gpt-5.3-codex" = "gpt-5.4"

Why this is a problem

  • This looks like a real model redirect, not like “I already saw this migration prompt.”
  • The user explicitly chose to keep the existing model, but the config now contains an old -> new mapping that strongly suggests Codex may still route requests to the new model.
  • In the current implementation, this field is mainly used to suppress the prompt on later launches, not to persist the actual model selection. That makes the table name and stored value misleading.

Expected behavior

  • Store “model migration prompt acknowledged” state in a separate config table with explicit semantics.
  • Do not keep writing old -> new mappings under [notice.model_migrations] when the user chooses Use existing model.
  • Continue reading the legacy field for backwards compatibility so existing users do not get prompted again.

Related but different

  • #15009 is about adding a global switch to disable all model migration notices.
  • #11045 is about migration prompts showing up too often.
  • This issue is about the config semantics being misleading enough that users can no longer trust what model they are actually using.

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗