Update models.json (#31684)

Automated update of models.json.

---------

Co-authored-by: sayan-oai <244841968+sayan-oai@users.noreply.github.com>
Co-authored-by: sayan-oai <sayan@openai.com>
This commit is contained in:
github-actions[bot]
2026-07-09 03:40:08 +00:00
committed by GitHub
co-authored by sayan-oai sayan-oai
parent a7c72aee8b
commit 3380969a29
33 changed files with 430 additions and 66 deletions
+5 -1
View File
@@ -51,9 +51,13 @@ use tokio::time::timeout;
use toml::Value as TomlValue;
async fn test_config_with_cli_overrides(
cli_overrides: Vec<(String, TomlValue)>,
mut cli_overrides: Vec<(String, TomlValue)>,
) -> (TempDir, Config) {
let home = TempDir::new().expect("create temp dir");
cli_overrides.push((
"model".to_string(),
TomlValue::String("gpt-5.5".to_string()),
));
let config = ConfigBuilder::without_managed_config_for_tests()
.codex_home(home.path().to_path_buf())
.cli_overrides(cli_overrides)
+4 -1
View File
@@ -316,7 +316,10 @@ fn resolve_mcp_oauth_credentials_store_mode(
pub(crate) async fn test_config() -> Config {
let codex_home = tempfile::tempdir().expect("create temp dir");
Config::load_from_base_config_with_overrides(
ConfigToml::default(),
ConfigToml {
model: Some("gpt-5.5".to_string()),
..Default::default()
},
ConfigOverrides::default(),
AbsolutePathBuf::from_absolute_path(codex_home.path()).expect("temp dir should resolve"),
)
+4
View File
@@ -4170,6 +4170,10 @@ fn text_block(s: &str) -> serde_json::Value {
async fn build_test_config(codex_home: &Path) -> Config {
ConfigBuilder::without_managed_config_for_tests()
.codex_home(codex_home.to_path_buf())
.harness_overrides(ConfigOverrides {
model: Some("gpt-5.5".to_string()),
..Default::default()
})
.build()
.await
.expect("load default test config")
+3
View File
@@ -740,6 +740,9 @@ impl TestCodexBuilder {
} else {
load_default_config_for_test(home).await
};
// Keep generic tests stable when the bundled catalog default changes. Tests that need a
// specific model can still override this with a config mutator.
config.model = Some("gpt-5.5".to_string());
config.cwd = cwd_override;
config.model_provider = model_provider;
if let Ok(path) = codex_utils_cargo_bin::cargo_bin("codex") {
+4
View File
@@ -325,6 +325,8 @@ async fn exec_cli_applies_model_instructions_file() {
let mut cmd = Command::new(bin);
cmd.arg("exec")
.arg("--skip-git-repo-check")
.arg("--model")
.arg("gpt-5.5")
.arg("-c")
.arg(&provider_override)
.arg("-c")
@@ -395,6 +397,8 @@ async fn exec_cli_profile_applies_model_instructions_file() {
let mut cmd = Command::new(bin);
cmd.arg("exec")
.arg("--skip-git-repo-check")
.arg("--model")
.arg("gpt-5.5")
.arg("--profile")
.arg("default")
.arg("-c")
+1
View File
@@ -1312,6 +1312,7 @@ async fn stdio_image_responses_round_trip() -> anyhow::Result<()> {
let rmcp_test_server_bin = remote_aware_stdio_server_bin()?;
let fixture = test_codex()
.with_model("gpt-5.2")
.with_config(move |config| {
insert_mcp_server(
config,
File diff suppressed because one or more lines are too long
+23 -13
View File
@@ -9,6 +9,24 @@ fn all_model_presets() -> Vec<ModelPreset> {
crate::test_support::TEST_MODEL_PRESETS.clone()
}
fn model_presets_with_test_upgrades() -> Vec<ModelPreset> {
let mut presets = all_model_presets();
for model in ["gpt-5.2", "gpt-5.4"] {
let preset = presets
.iter_mut()
.find(|preset| preset.model == model)
.unwrap_or_else(|| panic!("{model} preset present"));
preset.upgrade = Some(ModelUpgrade {
id: "gpt-5.5".to_string(),
migration_config_key: "hide_test_migration_prompt".to_string(),
model_link: None,
upgrade_copy: None,
migration_markdown: None,
});
}
presets
}
fn model_availability_nux_config(shown_count: &[(&str, u32)]) -> ModelAvailabilityNuxConfig {
ModelAvailabilityNuxConfig {
shown_count: shown_count
@@ -40,23 +58,15 @@ fn model_migration_copy_to_plain_text(copy: &crate::model_migration::ModelMigrat
#[tokio::test]
async fn model_migration_prompt_only_shows_for_deprecated_models() {
let seen = BTreeMap::new();
let presets = model_presets_with_test_upgrades();
assert!(should_show_model_migration_prompt(
"gpt-5.2",
"gpt-5.5",
&seen,
&all_model_presets()
"gpt-5.2", "gpt-5.5", &seen, &presets
));
assert!(should_show_model_migration_prompt(
"gpt-5.4",
"gpt-5.5",
&seen,
&all_model_presets()
"gpt-5.4", "gpt-5.5", &seen, &presets
));
assert!(!should_show_model_migration_prompt(
"gpt-5.4",
"gpt-5.4",
&seen,
&all_model_presets()
"gpt-5.4", "gpt-5.4", &seen, &presets
));
}
@@ -339,7 +349,7 @@ async fn model_migration_prompt_shows_for_hidden_model() {
.await
.expect("config");
let mut available_models = all_model_presets();
let mut available_models = model_presets_with_test_upgrades();
let current = available_models
.iter_mut()
.find(|preset| preset.model == "gpt-5.2")
@@ -2,10 +2,10 @@
source: tui/src/app/tests/model_catalog.rs
expression: model_migration_copy_to_plain_text(&copy)
---
Introducing GPT-5.5
Codex just got an upgrade. Introducing GPT-5.5.
GPT-5.5 is now available in Codex. It's our strongest agentic coding model yet, built to reason through large codebases, check assumptions with tools, and keep going until the work is done.
We recommend switching from gpt-5.2 to gpt-5.5.
Learn more: https://openai.com/index/introducing-gpt-5-5/
Frontier model for complex coding, research, and real-world work.
You can always keep using GPT-5.4 if you prefer.
You can continue using gpt-5.2 if you prefer.
@@ -17,4 +17,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -17,4 +17,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -11,4 +11,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -1,6 +1,5 @@
---
source: tui/src/chatwidget/tests/status_and_layout.rs
assertion_line: 2288
expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
---
@@ -26,4 +25,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -19,4 +19,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -8,4 +8,4 @@ expression: snapshot
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project Goal paused (/goal resume) "
" gpt-5.6-sol default · /tmp/project Goal paused (/goal resume) "
@@ -8,4 +8,4 @@ expression: snapshot
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project Goal paused (/goal resume) "
" gpt-5.6-sol default · /tmp/project Goal paused (/goal resume) "
@@ -13,4 +13,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -13,4 +13,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -21,4 +21,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -9,4 +9,4 @@ expression: normalize_snapshot_paths(rendered)
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -21,4 +21,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -8,4 +8,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project "
" gpt-5.6-sol default · /tmp/project "
@@ -5,12 +5,15 @@ expression: popup
Select Model and Effort
Access legacy models by running codex -m <model_name> or in your config.toml
1. gpt-5.5 (default) Frontier model for complex coding, research, and real-
world work.
2. gpt-5.4 Strong model for everyday coding.
3. gpt-5.4-mini Small, fast, and cost-efficient model for simpler
coding tasks.
› 4. gpt-5.2 (current) Optimized for professional work and long-running
agents.
1. gpt-5.6-sol (default) Latest frontier agentic coding model.
2. gpt-5.6-terra Balanced agentic coding model for everyday work.
3. gpt-5.6-luna Fast and affordable agentic coding model.
4. gpt-5.5 Frontier model for complex coding, research, and
real-world work.
5. gpt-5.4 Strong model for everyday coding.
6. gpt-5.4-mini Small, fast, and cost-efficient model for simpler
coding tasks.
› 7. gpt-5.2 (current) Optimized for professional work and long-running
agents.
Press enter to confirm or esc to go back
@@ -11,4 +11,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -8,4 +8,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project "
" gpt-5.6-sol default · /tmp/project "
@@ -19,4 +19,4 @@ expression: normalize_snapshot_paths(term.backend().vt100().screen().contents())
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -6,4 +6,4 @@ expression: terminal.backend()
" "
"› Check recently modified functions for compatibility "
" "
" gpt-5.5 Side from main thread · Ctrl+C to return "
" gpt-5.6-sol Side from main thread · Ctrl+C to return "
@@ -6,4 +6,4 @@ expression: terminal.backend()
" "
"› Check recently modified functions for compatibility "
" "
" gpt-5.5 default… Side from main thread · main needs input · Ctrl+C to return "
" gpt-5.6-sol def… Side from main thread · main needs input · Ctrl+C to return "
@@ -8,4 +8,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default Side starting... "
" gpt-5.6-sol default Side starting... "
@@ -8,4 +8,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project "
" gpt-5.6-sol default · /tmp/project "
@@ -8,4 +8,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.5 default · /tmp/project "
" gpt-5.6-sol default · /tmp/project "
@@ -8,4 +8,4 @@ expression: normalize_snapshot_paths(rendered)
› Ask Codex to do anything
gpt-5.5 default · /tmp/project
gpt-5.6-sol default · /tmp/project
@@ -1272,7 +1272,7 @@ async fn submit_user_message_emits_structured_plugin_mentions_from_bindings() {
#[tokio::test]
async fn enter_submits_when_plan_stream_is_not_active() {
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.5")).await;
chat.thread_id = Some(ThreadId::new());
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
let plan_mask = collaboration_modes::mask_for_kind(chat.model_catalog.as_ref(), ModeKind::Plan)
@@ -1562,7 +1562,7 @@ async fn set_reasoning_effort_does_not_override_active_plan_override() {
#[tokio::test]
async fn collab_mode_is_sent_after_enabling() {
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.5")).await;
chat.thread_id = Some(ThreadId::new());
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
@@ -1587,7 +1587,7 @@ async fn collab_mode_is_sent_after_enabling() {
#[tokio::test]
async fn collab_mode_applies_default_preset() {
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.5")).await;
chat.thread_id = Some(ThreadId::new());
chat.bottom_pane