Update models.json (#21818)

Automated update of models.json.

---------

Co-authored-by: aibrahim-oai <219906144+aibrahim-oai@users.noreply.github.com>
Co-authored-by: Ahmed Ibrahim <aibrahim@openai.com>
Co-authored-by: Sayan Sisodiya <sayan@openai.com>
This commit is contained in:
authored and GitHub committed 2026-07-08 16:24:12 -07:00
1 parent 3eb56537eb
commit b780738014
32 files changed
+236 -283

No files matched your search

@@ -10,8 +10,7 @@ expression: popup
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.3-codex Coding-optimized model.
› 5. gpt-5.2 (current) Optimized for professional work and long-running
› 4. gpt-5.2 (current) Optimized for professional work and long-running
agents.
Press enter to confirm or esc to go back
@@ -6,4 +6,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.3-codex high · Roadmap cleanup "
" gpt-5.2 high · Roadmap cleanup "
@@ -6,4 +6,4 @@ expression: normalized_backend_snapshot(terminal.backend())
" "
"› Ask Codex to do anything "
" "
" gpt-5.3-codex medium Plan mode (shift+tab to cycle) "
" gpt-5.2 medium Plan mode (shift+tab to cycle) "
@@ -42,7 +42,7 @@ fn configured_thread_session(thread_id: ThreadId) -> crate::session_state::Threa
forked_from_id: None,
fork_parent_title: None,
thread_name: None,
model: "gpt-5.3-codex".to_string(),
model: "gpt-5.2".to_string(),
model_provider_id: "openai".to_string(),
service_tier: None,
approval_policy: AskForApproval::Never,
@@ -311,7 +311,7 @@ async fn invalid_url_elicitation_is_declined() {
#[tokio::test]
async fn thread_settings_updated_updates_visible_state_without_transcript() {
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
set_fast_mode_test_catalog(&mut chat);
let thread_id = ThreadId::new();
chat.handle_thread_session(configured_thread_session(thread_id));
@@ -367,7 +367,7 @@ async fn thread_settings_updated_updates_visible_state_without_transcript() {
#[tokio::test]
async fn thread_settings_updated_preserves_default_settings_for_plan_mode() {
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
let thread_id = ThreadId::new();
let mut session = configured_thread_session(thread_id);
session.model = "gpt-default".to_string();
+1 -3
View File
@@ -297,9 +297,7 @@ pub(crate) fn set_fast_mode_test_catalog(chat: &mut ChatWidget) {
"gpt-5.4", /*priority*/ 0, /*supports_fast_mode*/ true,
),
test_model_info(
"gpt-5.3-codex",
/*priority*/ 1,
/*supports_fast_mode*/ false,
"gpt-5.2", /*priority*/ 1, /*supports_fast_mode*/ false,
),
],
}
@@ -1354,7 +1354,7 @@ async fn mode_switch_surfaces_model_change_notification_when_effective_model_cha
#[tokio::test]
async fn mode_switch_surfaces_reasoning_change_notification_when_model_stays_same() {
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
chat.set_reasoning_effort(Some(ReasoningEffortConfig::High));
@@ -1368,7 +1368,7 @@ async fn mode_switch_surfaces_reasoning_change_notification_when_model_stays_sam
.collect::<Vec<_>>()
.join("\n");
assert!(
plan_messages.contains("Model changed to gpt-5.3-codex medium for Plan mode."),
plan_messages.contains("Model changed to gpt-5.2 medium for Plan mode."),
"expected reasoning-change notice in Plan mode, got: {plan_messages:?}"
);
}
@@ -1614,10 +1614,10 @@ async fn collab_mode_applies_default_preset() {
#[tokio::test]
async fn user_turn_includes_personality_from_config() {
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.4")).await;
chat.set_feature_enabled(Feature::Personality, /*enabled*/ true);
chat.thread_id = Some(ThreadId::new());
chat.set_model("gpt-5.3-codex");
chat.set_model("gpt-5.4");
chat.set_personality(Personality::Friendly);
chat.bottom_pane
@@ -3089,7 +3089,7 @@ async fn model_selection_popup_snapshot() {
#[tokio::test]
async fn personality_selection_popup_snapshot() {
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.4")).await;
chat.thread_id = Some(ThreadId::new());
chat.open_personality_popup();
@@ -3150,8 +3150,8 @@ async fn model_picker_hides_show_in_picker_false_models_from_cache() {
#[tokio::test]
async fn server_overloaded_error_does_not_switch_models() {
let (mut chat, mut rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
chat.set_model("gpt-5.3-codex");
let (mut chat, mut rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.set_model("gpt-5.2");
while rx.try_recv().is_ok() {}
while op_rx.try_recv().is_ok() {}
@@ -3164,7 +3164,7 @@ async fn server_overloaded_error_does_not_switch_models() {
while let Ok(event) = rx.try_recv() {
if let AppEvent::UpdateModel(model) = event {
assert_eq!(
model, "gpt-5.3-codex",
model, "gpt-5.2",
"did not expect model switch on server-overloaded error"
);
}
@@ -399,7 +399,7 @@ async fn queued_slash_menu_cancel_drains_next_input() {
#[tokio::test]
async fn queued_settings_selection_applies_before_next_input() {
let (mut chat, mut rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, mut rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.thread_id = Some(ThreadId::new());
let mut preset = get_available_model(&chat, "gpt-5.4");
preset.supported_reasoning_efforts.truncate(1);
@@ -1203,7 +1203,7 @@ async fn slash_rename_without_existing_thread_name_starts_empty() {
#[tokio::test]
async fn usage_error_slash_command_is_available_from_local_recall() {
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
submit_composer_text(&mut chat, "/raw maybe");
@@ -2730,7 +2730,7 @@ async fn user_turn_carries_service_tier_after_fast_toggle() {
#[tokio::test]
async fn model_switch_recomputes_catalog_default_service_tier() {
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, mut op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.thread_id = Some(ThreadId::new());
set_chatgpt_auth(&mut chat);
set_fast_mode_test_catalog(&mut chat);
@@ -2753,7 +2753,7 @@ async fn model_switch_recomputes_catalog_default_service_tier() {
Some(ServiceTier::Fast.request_value())
);
chat.set_model("gpt-5.3-codex");
chat.set_model("gpt-5.2");
assert_eq!(chat.current_service_tier(), None);
chat.bottom_pane
@@ -1751,13 +1751,13 @@ async fn fast_status_indicator_requires_chatgpt_auth() {
#[tokio::test]
async fn fast_status_indicator_is_hidden_for_models_without_fast_support() {
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
set_fast_mode_test_catalog(&mut chat);
assert!(!get_available_model(&chat, "gpt-5.3-codex").supports_fast_mode());
assert!(!get_available_model(&chat, "gpt-5.2").supports_fast_mode());
chat.set_service_tier(Some(ServiceTier::Fast.request_value().to_string()));
set_chatgpt_auth(&mut chat);
set_fast_mode_test_catalog(&mut chat);
assert!(!get_available_model(&chat, "gpt-5.3-codex").supports_fast_mode());
assert!(!get_available_model(&chat, "gpt-5.2").supports_fast_mode());
assert!(!chat.should_show_fast_status(chat.current_model(), chat.current_service_tier(),));
}
@@ -2645,14 +2645,12 @@ async fn status_line_model_with_reasoning_includes_fast_for_fast_capable_models(
Some(format!("gpt-5.4 xhigh fast · Context 0% used · {test_cwd}"))
);
chat.set_model("gpt-5.3-codex");
chat.set_model("gpt-5.2");
chat.refresh_status_line();
assert_eq!(
status_line_text(&chat),
Some(format!(
"gpt-5.3-codex xhigh · Context 0% used · {test_cwd}"
))
Some(format!("gpt-5.2 xhigh · Context 0% used · {test_cwd}"))
);
}
@@ -2664,9 +2662,9 @@ async fn terminal_title_model_updates_on_model_change_without_manual_refresh() {
assert_eq!(chat.last_terminal_title, Some("gpt-5.4".to_string()));
chat.set_model("gpt-5.3-codex");
chat.set_model("gpt-5.2");
assert_eq!(chat.last_terminal_title, Some("gpt-5.3-codex".to_string()));
assert_eq!(chat.last_terminal_title, Some("gpt-5.2".to_string()));
}
#[tokio::test]
@@ -2686,7 +2684,7 @@ async fn status_line_and_terminal_title_reasoning_render_only_effort() {
#[tokio::test]
async fn status_line_reasoning_updates_on_mode_switch_without_manual_refresh() {
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
chat.config.tui_status_line = Some(vec!["reasoning".to_string()]);
chat.set_reasoning_effort(Some(ReasoningEffortConfig::High));
@@ -2702,33 +2700,24 @@ async fn status_line_reasoning_updates_on_mode_switch_without_manual_refresh() {
#[tokio::test]
async fn status_line_model_with_reasoning_updates_on_mode_switch_without_manual_refresh() {
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
chat.config.tui_status_line = Some(vec!["model-with-reasoning".to_string()]);
chat.set_reasoning_effort(Some(ReasoningEffortConfig::High));
assert_eq!(
status_line_text(&chat),
Some("gpt-5.3-codex high".to_string())
);
assert_eq!(status_line_text(&chat), Some("gpt-5.2 high".to_string()));
let plan_mask = collaboration_modes::plan_mask(chat.model_catalog.as_ref())
.expect("expected plan collaboration mode");
chat.set_collaboration_mask(plan_mask);
assert_eq!(
status_line_text(&chat),
Some("gpt-5.3-codex medium".to_string())
);
assert_eq!(status_line_text(&chat), Some("gpt-5.2 medium".to_string()));
let default_mask = collaboration_modes::default_mask(chat.model_catalog.as_ref())
.expect("expected default collaboration mode");
chat.set_collaboration_mask(default_mask);
assert_eq!(
status_line_text(&chat),
Some("gpt-5.3-codex high".to_string())
);
assert_eq!(status_line_text(&chat), Some("gpt-5.2 high".to_string()));
}
#[tokio::test]
@@ -2736,7 +2725,7 @@ async fn status_line_model_with_reasoning_plan_mode_footer_snapshot() {
use ratatui::Terminal;
use ratatui::backend::TestBackend;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.show_welcome_banner = false;
chat.set_feature_enabled(Feature::CollaborationModes, /*enabled*/ true);
chat.config.tui_status_line = Some(vec!["model-with-reasoning".to_string()]);
@@ -2763,7 +2752,7 @@ async fn renamed_thread_footer_title_snapshot() {
use ratatui::Terminal;
use ratatui::backend::TestBackend;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.3-codex")).await;
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(Some("gpt-5.2")).await;
chat.show_welcome_banner = false;
chat.config.tui_status_line = Some(vec![
"model-with-reasoning".to_string(),