diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index 1a2d5ed710..b9d9dba06a 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -260,6 +260,27 @@ impl CodexThread { &self, overrides: CodexThreadTurnContextOverrides, ) -> ConstraintResult<()> { + let updates = self.turn_context_settings_update(overrides).await; + self.codex.session.validate_settings(&updates).await + } + + /// Apply persistent turn context overrides directly. + /// + /// This bypasses the submission queue; callers that need ordering relative + /// to turns should use the queued turn-context op. + pub async fn update_turn_context_overrides( + &self, + overrides: CodexThreadTurnContextOverrides, + ) -> ConstraintResult { + let updates = self.turn_context_settings_update(overrides).await; + self.codex.session.update_settings(updates).await?; + Ok(self.config_snapshot().await) + } + + async fn turn_context_settings_update( + &self, + overrides: CodexThreadTurnContextOverrides, + ) -> SessionSettingsUpdate { let CodexThreadTurnContextOverrides { cwd, workspace_roots, @@ -287,7 +308,7 @@ impl CodexThread { .with_updates(model, effort, /*developer_instructions*/ None) }; - let updates = SessionSettingsUpdate { + SessionSettingsUpdate { cwd, workspace_roots, profile_workspace_roots, @@ -302,8 +323,7 @@ impl CodexThread { service_tier, personality, ..Default::default() - }; - self.codex.session.validate_settings(&updates).await + } } /// Use sparingly: this is intended to be removed soon. diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index c906ed0f29..83ce1dae73 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -123,6 +123,7 @@ use codex_protocol::protocol::TokenUsage; use codex_protocol::protocol::TokenUsageInfo; use codex_protocol::protocol::TurnAbortedEvent; use codex_protocol::protocol::TurnCompleteEvent; +use codex_protocol::protocol::TurnContextOverrides; use codex_protocol::protocol::TurnStartedEvent; use codex_protocol::protocol::UserMessageEvent; use codex_protocol::protocol::W3cTraceContext; diff --git a/codex-rs/core/tests/suite/collaboration_instructions.rs b/codex-rs/core/tests/suite/collaboration_instructions.rs index a18959a393..900cf24d8d 100644 --- a/codex-rs/core/tests/suite/collaboration_instructions.rs +++ b/codex-rs/core/tests/suite/collaboration_instructions.rs @@ -125,19 +125,8 @@ async fn user_input_includes_collaboration_instructions_after_override() -> Resu let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; @@ -288,19 +277,8 @@ async fn override_then_next_turn_uses_updated_collaboration_instructions() -> Re test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; @@ -345,19 +323,8 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(base_mode), - personality: None, + ..Default::default() }) .await?; @@ -422,19 +389,8 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(first_text))), - personality: None, + ..Default::default() }) .await?; @@ -454,19 +410,8 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(second_text))), - personality: None, + ..Default::default() }) .await?; @@ -515,19 +460,8 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -547,19 +481,8 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -607,22 +530,11 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(default_text), )), - personality: None, + ..Default::default() }) .await?; @@ -642,22 +554,11 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Plan, Some(plan_text), )), - personality: None, + ..Default::default() }) .await?; @@ -706,22 +607,11 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), )), - personality: None, + ..Default::default() }) .await?; @@ -741,22 +631,11 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), )), - personality: None, + ..Default::default() }) .await?; @@ -811,19 +690,8 @@ async fn resume_replays_collaboration_instructions() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -882,17 +750,6 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, settings: Settings { @@ -901,7 +758,7 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { developer_instructions: Some("".to_string()), }, }), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 08f6eef832..51e5139749 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -3286,18 +3286,7 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("override turn context"); diff --git a/codex-rs/core/tests/suite/compact_remote.rs b/codex-rs/core/tests/suite/compact_remote.rs index 11ab20a5ad..a0c2f0b50f 100644 --- a/codex-rs/core/tests/suite/compact_remote.rs +++ b/codex-rs/core/tests/suite/compact_remote.rs @@ -2776,18 +2776,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; } @@ -2894,19 +2883,8 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_strips_incoming_model codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; codex diff --git a/codex-rs/core/tests/suite/compact_resume_fork.rs b/codex-rs/core/tests/suite/compact_resume_fork.rs index 49f108d044..d01be5d695 100644 --- a/codex-rs/core/tests/suite/compact_resume_fork.rs +++ b/codex-rs/core/tests/suite/compact_resume_fork.rs @@ -551,16 +551,6 @@ async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { conversation .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(override_cwd.to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, settings: Settings { @@ -569,7 +559,7 @@ async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { developer_instructions: Some(ROLLED_BACK_DEV_INSTRUCTIONS.to_string()), }, }), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/model_overrides.rs b/codex-rs/core/tests/suite/model_overrides.rs index e904654b4b..a8d46dd32b 100644 --- a/codex-rs/core/tests/suite/model_overrides.rs +++ b/codex-rs/core/tests/suite/model_overrides.rs @@ -26,19 +26,9 @@ async fn turn_context_update_does_not_persist_when_config_exists() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::High)), - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("submit override"); @@ -66,19 +56,9 @@ async fn turn_context_update_does_not_create_config_file() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::Medium)), - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("submit override"); diff --git a/codex-rs/core/tests/suite/model_switching.rs b/codex-rs/core/tests/suite/model_switching.rs index 978308f2cb..eaf9a5f7dc 100644 --- a/codex-rs/core/tests/suite/model_switching.rs +++ b/codex-rs/core/tests/suite/model_switching.rs @@ -167,19 +167,8 @@ async fn model_change_appends_model_instructions_developer_message() -> Result<( test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -248,19 +237,9 @@ async fn model_and_personality_change_only_appends_model_instructions() -> Resul test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -996,19 +975,8 @@ async fn model_switch_to_smaller_model_updates_token_context_window() -> Result< test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(smaller_model_slug.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/model_visible_layout.rs b/codex-rs/core/tests/suite/model_visible_layout.rs index 664e05fbec..85b1c9a99e 100644 --- a/codex-rs/core/tests/suite/model_visible_layout.rs +++ b/codex-rs/core/tests/suite/model_visible_layout.rs @@ -523,18 +523,8 @@ async fn snapshot_model_visible_layout_resume_override_matches_rollout_model() - .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(resume_override_cwd), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.2".to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; resumed diff --git a/codex-rs/core/tests/suite/override_updates.rs b/codex-rs/core/tests/suite/override_updates.rs index bc92b178af..b3cec800ab 100644 --- a/codex-rs/core/tests/suite/override_updates.rs +++ b/codex-rs/core/tests/suite/override_updates.rs @@ -35,19 +35,8 @@ async fn turn_context_update_without_user_turn_does_not_record_permissions_updat test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -74,18 +63,7 @@ async fn turn_context_update_without_user_turn_does_not_record_environment_updat test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(new_cwd.path().to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -113,19 +91,8 @@ async fn turn_context_update_without_user_turn_does_not_record_collaboration_upd test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/permissions_messages.rs b/codex-rs/core/tests/suite/permissions_messages.rs index 13faecedf1..94b983be51 100644 --- a/codex-rs/core/tests/suite/permissions_messages.rs +++ b/codex-rs/core/tests/suite/permissions_messages.rs @@ -105,19 +105,8 @@ async fn permissions_message_added_on_override_change() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -243,19 +232,8 @@ async fn permissions_message_omitted_when_disabled() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -335,19 +313,8 @@ async fn resume_replays_permissions_messages() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -445,19 +412,8 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/personality.rs b/codex-rs/core/tests/suite/personality.rs index 9e8ddbf4fa..c492c43286 100644 --- a/codex-rs/core/tests/suite/personality.rs +++ b/codex-rs/core/tests/suite/personality.rs @@ -338,19 +338,8 @@ async fn user_turn_personality_some_adds_update_message() -> anyhow::Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Friendly), + ..Default::default() }) .await?; @@ -423,19 +412,8 @@ async fn user_turn_personality_same_value_does_not_add_update_message() -> anyho test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -521,19 +499,8 @@ async fn user_turn_personality_skips_if_feature_disabled() -> anyhow::Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -771,19 +738,8 @@ async fn user_turn_personality_remote_model_template_includes_update_message() - test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Friendly), + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/prompt_caching.rs b/codex-rs/core/tests/suite/prompt_caching.rs index 0a107b0cf1..ab9844bfcb 100644 --- a/codex-rs/core/tests/suite/prompt_caching.rs +++ b/codex-rs/core/tests/suite/prompt_caching.rs @@ -444,19 +444,12 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an .expect("workspace profile should have legacy projection"); codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, sandbox_policy: Some(sandbox_policy), permission_profile: Some(permission_profile), - active_permission_profile: None, - windows_sandbox_level: None, - model: None, effort: Some(Some(ReasoningEffort::High)), summary: Some(ReasoningSummary::Detailed), - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -532,19 +525,11 @@ async fn override_before_first_turn_emits_environment_context() -> anyhow::Resul codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.4".to_string()), effort: Some(Some(ReasoningEffort::Low)), - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index 799775fbf3..42a57691ef 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -640,19 +640,8 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(REMOTE_MODEL_SLUG.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -901,19 +890,8 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/resume.rs b/codex-rs/core/tests/suite/resume.rs index c9d0bb0760..fc5a82d5b8 100644 --- a/codex-rs/core/tests/suite/resume.rs +++ b/codex-rs/core/tests/suite/resume.rs @@ -426,19 +426,8 @@ async fn resume_model_switch_is_not_duplicated_after_pre_turn_override() -> Resu resumed .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.4".to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; resumed diff --git a/codex-rs/core/tests/suite/review.rs b/codex-rs/core/tests/suite/review.rs index bdc1fe7540..55e1d1dc61 100644 --- a/codex-rs/core/tests/suite/review.rs +++ b/codex-rs/core/tests/suite/review.rs @@ -792,18 +792,7 @@ async fn review_uses_overridden_cwd_for_base_branch_merge_base() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(repo_path.to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .unwrap(); diff --git a/codex-rs/memories/write/src/startup_tests.rs b/codex-rs/memories/write/src/startup_tests.rs index cd48b6a1d7..f5a75ed10e 100644 --- a/codex-rs/memories/write/src/startup_tests.rs +++ b/codex-rs/memories/write/src/startup_tests.rs @@ -244,19 +244,8 @@ async fn memories_startup_phase1_uses_live_thread_service_tier() -> anyhow::Resu test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, service_tier: Some(Some(ServiceTier::Fast.request_value().to_string())), - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?;