diff --git a/codex-rs/core/src/guardian/review_session.rs b/codex-rs/core/src/guardian/review_session.rs index c1c9384c95..f5f7a5e264 100644 --- a/codex-rs/core/src/guardian/review_session.rs +++ b/codex-rs/core/src/guardian/review_session.rs @@ -713,7 +713,6 @@ async fn run_review_on_session( cwd: params.parent_turn.cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy: None, permission_profile, model: params.model.clone(), effort: params.reasoning_effort, diff --git a/codex-rs/core/src/session/handlers.rs b/codex-rs/core/src/session/handlers.rs index 12f1451d89..0d5c0d025e 100644 --- a/codex-rs/core/src/session/handlers.rs +++ b/codex-rs/core/src/session/handlers.rs @@ -134,7 +134,6 @@ pub(super) async fn user_input_or_turn_inner( cwd, approval_policy, approvals_reviewer, - sandbox_policy: _, permission_profile, model, effort, diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index 6b21c7c0c5..959e79ea02 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -4247,7 +4247,6 @@ async fn user_turn_updates_approvals_reviewer() { cwd: config.cwd.to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: Some(codex_config::types::ApprovalsReviewer::AutoReview), - sandbox_policy: None, permission_profile: config.permissions.permission_profile(), model: turn_context.model_info.slug.clone(), effort: config.model_reasoning_effort, diff --git a/codex-rs/core/tests/common/test_codex.rs b/codex-rs/core/tests/common/test_codex.rs index 1d334b9593..c576052188 100644 --- a/codex-rs/core/tests/common/test_codex.rs +++ b/codex-rs/core/tests/common/test_codex.rs @@ -202,19 +202,13 @@ pub enum ShellModelOutput { // UnifiedExec has its own set of tests } -/// Returns the permission fields required by `Op::UserTurn` for tests that +/// Returns the permission profile required by `Op::UserTurn` for tests that /// construct the op directly. -/// -/// The legacy sandbox field is intentionally omitted when a canonical -/// `PermissionProfile` is available. -pub fn turn_permission_fields( +pub fn turn_permission_profile( permission_profile: PermissionProfile, _cwd: &Path, -) -> ( - Option, - PermissionProfile, -) { - (None, permission_profile) +) -> PermissionProfile { + permission_profile } pub struct TestCodexBuilder { @@ -716,7 +710,6 @@ impl TestCodex { cwd: self.config.cwd.to_path_buf(), approval_policy, approvals_reviewer: None, - sandbox_policy: None, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/apply_patch_cli.rs b/codex-rs/core/tests/suite/apply_patch_cli.rs index b95e185558..3f749806c4 100644 --- a/codex-rs/core/tests/suite/apply_patch_cli.rs +++ b/codex-rs/core/tests/suite/apply_patch_cli.rs @@ -35,7 +35,7 @@ use core_test_support::skip_if_remote; use core_test_support::test_codex::TestCodexBuilder; use core_test_support::test_codex::TestCodexHarness; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_with_timeout; use serde_json::json; @@ -64,8 +64,7 @@ async fn apply_patch_harness_with( async fn submit_without_wait(harness: &TestCodexHarness, prompt: &str) -> Result<()> { let test = harness.test(); let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, harness.cwd()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, harness.cwd()); test.codex .submit(Op::UserTurn { environments: None, @@ -77,7 +76,6 @@ async fn submit_without_wait(harness: &TestCodexHarness, prompt: &str) -> Result cwd: harness.cwd().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/approvals.rs b/codex-rs/core/tests/suite/approvals.rs index 5329517d88..5179fcc95e 100644 --- a/codex-rs/core/tests/suite/approvals.rs +++ b/codex-rs/core/tests/suite/approvals.rs @@ -33,7 +33,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_with_timeout; use core_test_support::zsh_fork::build_zsh_fork_test; @@ -590,8 +590,7 @@ async fn submit_turn( permission_profile: PermissionProfile, ) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.cwd.path()); + let permission_profile = turn_permission_profile(permission_profile, test.cwd.path()); test.codex .submit(Op::UserTurn { @@ -604,7 +603,6 @@ async fn submit_turn( cwd: test.cwd.path().to_path_buf(), approval_policy, approvals_reviewer: Some(ApprovalsReviewer::User), - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2381,8 +2379,7 @@ async fn matched_prefix_rule_runs_unsandboxed_under_zsh_fork() -> Result<()> { .await; let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.cwd.path()); + let permission_profile = turn_permission_profile(permission_profile, test.cwd.path()); test.codex .submit(Op::UserTurn { environments: None, @@ -2394,7 +2391,6 @@ async fn matched_prefix_rule_runs_unsandboxed_under_zsh_fork() -> Result<()> { cwd: test.cwd.path().to_path_buf(), approval_policy, approvals_reviewer: Some(ApprovalsReviewer::User), - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index d73c865c3b..1d276c49ce 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -63,7 +63,7 @@ use core_test_support::responses::sse_failed; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use dunce::canonicalize as normalize_path; use futures::StreamExt; @@ -1726,7 +1726,7 @@ async fn user_turn_collaboration_mode_overrides_model_and_effort() -> anyhow::Re session_configured, .. } = test_codex().with_model("gpt-5.4").build(&server).await?; - let (sandbox_policy, permission_profile) = turn_permission_fields( + let permission_profile = turn_permission_profile( config.permissions.permission_profile(), config.cwd.as_path(), ); @@ -1750,7 +1750,6 @@ async fn user_turn_collaboration_mode_overrides_model_and_effort() -> anyhow::Re cwd: config.cwd.to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_configured.model.clone(), effort: Some(ReasoningEffort::Low), @@ -1861,7 +1860,7 @@ async fn user_turn_explicit_reasoning_summary_overrides_model_catalog_default() }) .build(&server) .await?; - let (sandbox_policy, permission_profile) = turn_permission_fields( + let permission_profile = turn_permission_profile( config.permissions.permission_profile(), config.cwd.as_path(), ); @@ -1876,7 +1875,6 @@ async fn user_turn_explicit_reasoning_summary_overrides_model_catalog_default() cwd: config.cwd.to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_configured.model, effort: None, diff --git a/codex-rs/core/tests/suite/code_mode.rs b/codex-rs/core/tests/suite/code_mode.rs index c000469aa7..6f301367db 100644 --- a/codex-rs/core/tests/suite/code_mode.rs +++ b/codex-rs/core/tests/suite/code_mode.rs @@ -30,7 +30,7 @@ use core_test_support::skip_if_no_network; use core_test_support::stdio_server_bin; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -2610,8 +2610,7 @@ text( .await; let cwd = test.cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); test.codex .submit(Op::UserTurn { @@ -2624,7 +2623,6 @@ text( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/collaboration_instructions.rs b/codex-rs/core/tests/suite/collaboration_instructions.rs index 060571e878..1dd5103849 100644 --- a/codex-rs/core/tests/suite/collaboration_instructions.rs +++ b/codex-rs/core/tests/suite/collaboration_instructions.rs @@ -14,7 +14,7 @@ use core_test_support::responses::sse; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use serde_json::Value; @@ -175,7 +175,7 @@ async fn collaboration_instructions_added_on_user_turn() -> Result<()> { let test = test_codex().build(&server).await?; let collab_text = "turn instructions"; let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); - let (sandbox_policy, permission_profile) = turn_permission_fields( + let permission_profile = turn_permission_profile( test.config.permissions.permission_profile(), test.config.cwd.as_path(), ); @@ -190,7 +190,6 @@ async fn collaboration_instructions_added_on_user_turn() -> Result<()> { cwd: test.config.cwd.to_path_buf(), approval_policy: test.config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, @@ -284,7 +283,7 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu let base_mode = collab_mode_with_instructions(Some(base_text)); let turn_text = "turn override"; let turn_mode = collab_mode_with_instructions(Some(turn_text)); - let (sandbox_policy, permission_profile) = turn_permission_fields( + let permission_profile = turn_permission_profile( test.config.permissions.permission_profile(), test.config.cwd.as_path(), ); @@ -316,7 +315,6 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu cwd: test.config.cwd.to_path_buf(), approval_policy: test.config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 629c370103..6256f1da82 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -28,7 +28,7 @@ use core_test_support::responses::ev_reasoning_item; use core_test_support::responses::mount_models_once; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use std::path::PathBuf; @@ -73,8 +73,7 @@ const PRETURN_CONTEXT_DIFF_CWD: &str = "/tmp/PRETURN_CONTEXT_DIFF_CWD"; pub(super) const COMPACT_WARNING_MESSAGE: &str = "Heads up: Long threads and multiple compactions can cause the model to be less accurate. Start a new thread when possible to keep threads small and targeted."; fn disabled_permission_user_turn(text: impl Into, cwd: PathBuf, model: String) -> Op { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); Op::UserTurn { environments: None, items: vec![UserInput::Text { @@ -85,7 +84,6 @@ fn disabled_permission_user_turn(text: impl Into, cwd: PathBuf, model: S cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/exec_policy.rs b/codex-rs/core/tests/suite/exec_policy.rs index 20fef45763..68c05c06c7 100644 --- a/codex-rs/core/tests/suite/exec_policy.rs +++ b/codex-rs/core/tests/suite/exec_policy.rs @@ -18,7 +18,7 @@ use core_test_support::responses::mount_sse_once; use core_test_support::responses::sse; use core_test_support::responses::start_mock_server; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use serde_json::Value; use serde_json::json; @@ -43,8 +43,7 @@ async fn submit_user_turn( collaboration_mode: Option, ) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.config.cwd.as_path()); + let permission_profile = turn_permission_profile(permission_profile, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -56,7 +55,6 @@ async fn submit_user_turn( cwd: test.cwd_path().to_path_buf(), approval_policy, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -128,8 +126,8 @@ async fn execpolicy_blocks_shell_invocation() -> Result<()> { .await; let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.config.cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -141,7 +139,6 @@ async fn execpolicy_blocks_shell_invocation() -> Result<()> { cwd: test.cwd_path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/image_rollout.rs b/codex-rs/core/tests/suite/image_rollout.rs index f819e1cfdf..0e7d21f9f1 100644 --- a/codex-rs/core/tests/suite/image_rollout.rs +++ b/codex-rs/core/tests/suite/image_rollout.rs @@ -18,7 +18,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use image::ImageBuffer; use image::Rgba; @@ -109,8 +109,7 @@ async fn copy_paste_local_image_persists_rollout_request_shape() -> anyhow::Resu responses::mount_sse_once(&server, response).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -128,7 +127,6 @@ async fn copy_paste_local_image_persists_rollout_request_shape() -> anyhow::Resu cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -199,8 +197,7 @@ async fn drag_drop_image_persists_rollout_request_shape() -> anyhow::Result<()> responses::mount_sse_once(&server, response).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -218,7 +215,6 @@ async fn drag_drop_image_persists_rollout_request_shape() -> anyhow::Result<()> cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/items.rs b/codex-rs/core/tests/suite/items.rs index 053f03ca90..efd0fcc859 100644 --- a/codex-rs/core/tests/suite/items.rs +++ b/codex-rs/core/tests/suite/items.rs @@ -35,7 +35,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -48,8 +48,7 @@ fn disabled_plan_turn( collaboration_mode: CollaborationMode, ) -> anyhow::Result { let cwd = std::env::current_dir()?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); Ok(Op::UserTurn { environments: None, items: vec![UserInput::Text { @@ -60,7 +59,6 @@ fn disabled_plan_turn( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/json_result.rs b/codex-rs/core/tests/suite/json_result.rs index c4ce8ac908..c9ee0b1fe3 100644 --- a/codex-rs/core/tests/suite/json_result.rs +++ b/codex-rs/core/tests/suite/json_result.rs @@ -9,7 +9,7 @@ use core_test_support::responses; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use responses::ev_assistant_message; @@ -70,8 +70,7 @@ async fn codex_returns_json_result(model: String) -> anyhow::Result<()> { responses::mount_sse_once_match(&server, match_json_text_param, sse1).await; let TestCodex { codex, cwd, .. } = test_codex().build(&server).await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); // 1) Normal user input – should hit server once. codex @@ -85,7 +84,6 @@ async fn codex_returns_json_result(model: String) -> anyhow::Result<()> { cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/live_reload.rs b/codex-rs/core/tests/suite/live_reload.rs index c422073e4f..6654bc59b6 100644 --- a/codex-rs/core/tests/suite/live_reload.rs +++ b/codex-rs/core/tests/suite/live_reload.rs @@ -19,7 +19,7 @@ use core_test_support::responses::mount_sse_sequence; use core_test_support::responses::start_mock_server; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use tokio::time::timeout; @@ -47,8 +47,7 @@ fn contains_skill_body(request: &ResponsesRequest, skill_body: &str) -> bool { async fn submit_skill_turn(test: &TestCodex, skill_path: PathBuf, prompt: &str) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.cwd_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, test.cwd_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -66,7 +65,6 @@ async fn submit_skill_turn(test: &TestCodex, skill_path: PathBuf, prompt: &str) cwd: test.cwd_path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/model_switching.rs b/codex-rs/core/tests/suite/model_switching.rs index 43ec50746e..0c6575be82 100644 --- a/codex-rs/core/tests/suite/model_switching.rs +++ b/codex-rs/core/tests/suite/model_switching.rs @@ -31,7 +31,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use std::path::Path; @@ -39,8 +39,8 @@ use std::path::PathBuf; use wiremock::MockServer; fn read_only_user_turn(test: &TestCodex, items: Vec, model: String) -> Op { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), test.cwd_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::read_only(), test.cwd_path()); Op::UserTurn { environments: None, items, @@ -48,7 +48,6 @@ fn read_only_user_turn(test: &TestCodex, items: Vec, model: String) - cwd: test.cwd_path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: test.config.model_reasoning_effort, diff --git a/codex-rs/core/tests/suite/model_visible_layout.rs b/codex-rs/core/tests/suite/model_visible_layout.rs index 7ae148788e..cdae3ecf60 100644 --- a/codex-rs/core/tests/suite/model_visible_layout.rs +++ b/codex-rs/core/tests/suite/model_visible_layout.rs @@ -24,7 +24,7 @@ use core_test_support::responses::sse; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use serde_json::json; @@ -113,8 +113,8 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { let preturn_context_diff_cwd = test.cwd_path().join(PRETURN_CONTEXT_DIFF_CWD); fs::create_dir_all(&preturn_context_diff_cwd)?; let first_turn_cwd = test.cwd_path().to_path_buf(); - let (first_sandbox_policy, first_permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), first_turn_cwd.as_path()); + let first_permission_profile = + turn_permission_profile(PermissionProfile::read_only(), first_turn_cwd.as_path()); test.codex .submit(Op::UserTurn { @@ -127,7 +127,6 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { cwd: first_turn_cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy: first_sandbox_policy, permission_profile: first_permission_profile, model: test.session_configured.model.clone(), effort: test.config.model_reasoning_effort, @@ -142,7 +141,7 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { }) .await; - let (second_sandbox_policy, second_permission_profile) = turn_permission_fields( + let second_permission_profile = turn_permission_profile( PermissionProfile::read_only(), preturn_context_diff_cwd.as_path(), ); @@ -157,7 +156,6 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { cwd: preturn_context_diff_cwd, approval_policy: AskForApproval::OnRequest, approvals_reviewer: None, - sandbox_policy: second_sandbox_policy, permission_profile: second_permission_profile, model: test.session_configured.model.clone(), effort: test.config.model_reasoning_effort, @@ -226,8 +224,8 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R cwd_two.join("AGENTS.md"), "# AGENTS two\n\n\nTurn two agents instructions.\n\n", )?; - let (first_sandbox_policy, first_permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd_one.as_path()); + let first_permission_profile = + turn_permission_profile(PermissionProfile::read_only(), cwd_one.as_path()); test.codex .submit(Op::UserTurn { @@ -240,7 +238,6 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R cwd: cwd_one.clone(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy: first_sandbox_policy, permission_profile: first_permission_profile, model: test.session_configured.model.clone(), effort: test.config.model_reasoning_effort, @@ -255,8 +252,8 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R }) .await; - let (second_sandbox_policy, second_permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd_two.as_path()); + let second_permission_profile = + turn_permission_profile(PermissionProfile::read_only(), cwd_two.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -268,7 +265,6 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R cwd: cwd_two, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy: second_sandbox_policy, permission_profile: second_permission_profile, model: test.session_configured.model.clone(), effort: test.config.model_reasoning_effort, @@ -370,7 +366,7 @@ async fn snapshot_model_visible_layout_resume_with_personality_change() -> Resul let resumed = resume_builder.resume(&server, home, rollout_path).await?; let resume_override_cwd = resumed.cwd_path().join(PRETURN_CONTEXT_DIFF_CWD); fs::create_dir_all(&resume_override_cwd)?; - let (sandbox_policy, permission_profile) = turn_permission_fields( + let permission_profile = turn_permission_profile( PermissionProfile::read_only(), resume_override_cwd.as_path(), ); @@ -386,7 +382,6 @@ async fn snapshot_model_visible_layout_resume_with_personality_change() -> Resul cwd: resume_override_cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: resumed.session_configured.model.clone(), effort: resumed.config.model_reasoning_effort, diff --git a/codex-rs/core/tests/suite/models_cache_ttl.rs b/codex-rs/core/tests/suite/models_cache_ttl.rs index e2688afc97..408674dfb4 100644 --- a/codex-rs/core/tests/suite/models_cache_ttl.rs +++ b/codex-rs/core/tests/suite/models_cache_ttl.rs @@ -28,7 +28,7 @@ use core_test_support::responses::ev_response_created; use core_test_support::responses::sse; use core_test_support::responses::sse_response; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use serde::Deserialize; @@ -88,8 +88,7 @@ async fn renews_cache_ttl_on_matching_models_etag() -> Result<()> { sse_response(response_body).insert_header("X-Models-Etag", ETAG), ) .await; - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.cwd_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, test.cwd_path()); codex .submit(Op::UserTurn { @@ -102,7 +101,6 @@ async fn renews_cache_ttl_on_matching_models_etag() -> Result<()> { cwd: test.cwd_path().to_path_buf(), approval_policy: codex_protocol::protocol::AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/models_etag_responses.rs b/codex-rs/core/tests/suite/models_etag_responses.rs index a9aa843ad1..d19a02a7d8 100644 --- a/codex-rs/core/tests/suite/models_etag_responses.rs +++ b/codex-rs/core/tests/suite/models_etag_responses.rs @@ -21,7 +21,7 @@ use core_test_support::responses::sse; use core_test_support::responses::sse_response; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event_with_timeout; use pretty_assertions::assert_eq; use wiremock::MockServer; @@ -63,8 +63,8 @@ async fn refresh_models_on_models_etag_mismatch_and_avoid_duplicate_models_fetch let cwd = Arc::clone(&test.cwd); let session_model = test.session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); assert_eq!(spawn_models_mock.requests().len(), 1); assert_eq!(spawn_models_mock.single_request_path(), "/v1/models"); @@ -114,7 +114,6 @@ async fn refresh_models_on_models_etag_mismatch_and_avoid_duplicate_models_fetch cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/pending_input.rs b/codex-rs/core/tests/suite/pending_input.rs index b582a2abc7..4178e7b7eb 100644 --- a/codex-rs/core/tests/suite/pending_input.rs +++ b/codex-rs/core/tests/suite/pending_input.rs @@ -25,7 +25,7 @@ use core_test_support::streaming_sse::StreamingSseServer; use core_test_support::streaming_sse::start_streaming_sse_server; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use serde_json::Value; @@ -109,8 +109,8 @@ async fn submit_user_input(codex: &CodexThread, text: &str) { } async fn submit_danger_full_access_user_turn(test: &TestCodex, text: &str) { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.config.cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -122,7 +122,6 @@ async fn submit_danger_full_access_user_turn(test: &TestCodex, text: &str) { cwd: test.config.cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/personality.rs b/codex-rs/core/tests/suite/personality.rs index dde6d2ca51..87e8925770 100644 --- a/codex-rs/core/tests/suite/personality.rs +++ b/codex-rs/core/tests/suite/personality.rs @@ -27,7 +27,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use tempfile::TempDir; @@ -58,8 +58,8 @@ fn read_only_text_turn_with_personality( approval_policy: AskForApproval, personality: Option, ) -> Op { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), test.cwd_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::read_only(), test.cwd_path()); Op::UserTurn { environments: None, items: vec![UserInput::Text { @@ -70,7 +70,6 @@ fn read_only_text_turn_with_personality( cwd: test.cwd_path().to_path_buf(), approval_policy, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: test.config.model_reasoning_effort, diff --git a/codex-rs/core/tests/suite/prompt_caching.rs b/codex-rs/core/tests/suite/prompt_caching.rs index ea90b3ab97..f2255fa269 100644 --- a/codex-rs/core/tests/suite/prompt_caching.rs +++ b/codex-rs/core/tests/suite/prompt_caching.rs @@ -26,7 +26,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use tempfile::TempDir; @@ -439,14 +439,13 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an /*exclude_tmpdir_env_var*/ true, /*exclude_slash_tmp*/ true, ); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, config.cwd.as_path()); + let permission_profile = turn_permission_profile(permission_profile, config.cwd.as_path()); codex .submit(Op::OverrideTurnContext { cwd: None, approval_policy: Some(AskForApproval::Never), approvals_reviewer: None, - sandbox_policy, + sandbox_policy: None, permission_profile: Some(permission_profile), windows_sandbox_level: None, model: None, @@ -719,8 +718,7 @@ async fn per_turn_overrides_keep_cached_prefix_and_key_constant() -> anyhow::Res /*exclude_tmpdir_env_var*/ true, /*exclude_slash_tmp*/ true, ); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, new_cwd.path()); + let permission_profile = turn_permission_profile(permission_profile, new_cwd.path()); codex .submit(Op::UserTurn { environments: None, @@ -731,7 +729,6 @@ async fn per_turn_overrides_keep_cached_prefix_and_key_constant() -> anyhow::Res cwd: new_cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: "o3".to_string(), effort: Some(ReasoningEffort::High), @@ -831,7 +828,7 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a let default_cwd = config.cwd.clone(); let default_approval_policy = config.permissions.approval_policy.value(); - let (default_sandbox_policy, default_permission_profile) = turn_permission_fields( + let default_permission_profile = turn_permission_profile( config.permissions.permission_profile(), default_cwd.as_path(), ); @@ -849,7 +846,6 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a cwd: default_cwd.to_path_buf(), approval_policy: default_approval_policy, approvals_reviewer: None, - sandbox_policy: default_sandbox_policy.clone(), permission_profile: default_permission_profile.clone(), model: default_model.clone(), effort: default_effort, @@ -872,7 +868,6 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a cwd: default_cwd.to_path_buf(), approval_policy: default_approval_policy, approvals_reviewer: None, - sandbox_policy: default_sandbox_policy.clone(), permission_profile: default_permission_profile.clone(), model: default_model.clone(), effort: default_effort, @@ -964,7 +959,7 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu let default_cwd = config.cwd.clone(); let default_approval_policy = config.permissions.approval_policy.value(); - let (default_sandbox_policy, default_permission_profile) = turn_permission_fields( + let default_permission_profile = turn_permission_profile( config.permissions.permission_profile(), default_cwd.as_path(), ); @@ -982,7 +977,6 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu cwd: default_cwd.to_path_buf(), approval_policy: default_approval_policy, approvals_reviewer: None, - sandbox_policy: default_sandbox_policy.clone(), permission_profile: default_permission_profile.clone(), model: default_model, effort: default_effort, @@ -995,8 +989,8 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, default_cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, default_cwd.as_path()); codex .submit(Op::UserTurn { environments: None, @@ -1007,7 +1001,6 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu cwd: default_cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: "o3".to_string(), effort: Some(ReasoningEffort::High), diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index 902fbce3ee..2fb5221756 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -37,7 +37,7 @@ use core_test_support::skip_if_no_network; use core_test_support::skip_if_sandbox; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -152,8 +152,8 @@ async fn remote_models_config_context_window_override_clamps_to_max_context_wind }) .build(&server) .await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(config.permissions.permission_profile(), cwd.path()); + let permission_profile = + turn_permission_profile(config.permissions.permission_profile(), cwd.path()); codex .submit(Op::UserTurn { @@ -165,7 +165,6 @@ async fn remote_models_config_context_window_override_clamps_to_max_context_wind cwd: cwd.path().to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, model: requested_model.to_string(), effort: None, summary: None, @@ -232,8 +231,8 @@ async fn remote_models_config_override_above_max_uses_max_context_window() -> Re }) .build(&server) .await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(config.permissions.permission_profile(), cwd.path()); + let permission_profile = + turn_permission_profile(config.permissions.permission_profile(), cwd.path()); codex .submit(Op::UserTurn { @@ -245,7 +244,6 @@ async fn remote_models_config_override_above_max_uses_max_context_window() -> Re cwd: cwd.path().to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, model: requested_model.to_string(), effort: None, summary: None, @@ -311,8 +309,8 @@ async fn remote_models_use_context_window_when_config_override_is_absent() -> Re }) .build(&server) .await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(config.permissions.permission_profile(), cwd.path()); + let permission_profile = + turn_permission_profile(config.permissions.permission_profile(), cwd.path()); codex .submit(Op::UserTurn { @@ -324,7 +322,6 @@ async fn remote_models_use_context_window_when_config_override_is_absent() -> Re cwd: cwd.path().to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, model: requested_model.to_string(), effort: None, summary: None, @@ -403,8 +400,8 @@ async fn remote_models_long_model_slug_is_sent_with_high_reasoning() -> Result<( }) .build(&server) .await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(config.permissions.permission_profile(), cwd.path()); + let permission_profile = + turn_permission_profile(config.permissions.permission_profile(), cwd.path()); codex .submit(Op::UserTurn { @@ -416,7 +413,6 @@ async fn remote_models_long_model_slug_is_sent_with_high_reasoning() -> Result<( cwd: cwd.path().to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: requested_model.to_string(), effort: None, @@ -466,8 +462,8 @@ async fn namespaced_model_slug_uses_catalog_metadata_without_fallback_warning() .with_model(requested_model) .build(&server) .await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(config.permissions.permission_profile(), cwd.path()); + let permission_profile = + turn_permission_profile(config.permissions.permission_profile(), cwd.path()); codex .submit(Op::UserTurn { @@ -479,7 +475,6 @@ async fn namespaced_model_slug_uses_catalog_metadata_without_fallback_warning() cwd: cwd.path().to_path_buf(), approval_policy: config.permissions.approval_policy.value(), approvals_reviewer: None, - sandbox_policy, permission_profile, model: requested_model.to_string(), effort: None, @@ -639,8 +634,8 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { mount_sse_sequence(&server, responses).await; let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { items: vec![UserInput::Text { @@ -651,7 +646,6 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: REMOTE_MODEL_SLUG.to_string(), effort: None, @@ -870,8 +864,8 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { .await?; let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { items: vec![UserInput::Text { @@ -882,7 +876,6 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: model.to_string(), effort: None, diff --git a/codex-rs/core/tests/suite/request_permissions.rs b/codex-rs/core/tests/suite/request_permissions.rs index 1821094e1a..5c0082125d 100644 --- a/codex-rs/core/tests/suite/request_permissions.rs +++ b/codex-rs/core/tests/suite/request_permissions.rs @@ -32,7 +32,7 @@ use core_test_support::skip_if_no_network; use core_test_support::skip_if_sandbox; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use regex_lite::Regex; @@ -187,8 +187,7 @@ async fn submit_turn( permission_profile: RuntimePermissionProfile, ) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.cwd.path()); + let permission_profile = turn_permission_profile(permission_profile, test.cwd.path()); test.codex .submit(Op::UserTurn { environments: None, @@ -200,7 +199,6 @@ async fn submit_turn( cwd: test.cwd.path().to_path_buf(), approval_policy, approvals_reviewer: Some(ApprovalsReviewer::User), - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/request_permissions_tool.rs b/codex-rs/core/tests/suite/request_permissions_tool.rs index 7a24e91bd4..db99904f09 100644 --- a/codex-rs/core/tests/suite/request_permissions_tool.rs +++ b/codex-rs/core/tests/suite/request_permissions_tool.rs @@ -29,7 +29,7 @@ use core_test_support::skip_if_no_network; use core_test_support::skip_if_sandbox; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use regex_lite::Regex; @@ -139,8 +139,7 @@ async fn submit_turn( approvals_reviewer: Option, ) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.config.cwd.as_path()); + let permission_profile = turn_permission_profile(permission_profile, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -152,7 +151,6 @@ async fn submit_turn( cwd: test.cwd.path().to_path_buf(), approval_policy, approvals_reviewer, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/request_user_input.rs b/codex-rs/core/tests/suite/request_user_input.rs index c82a5a1672..ac5aed2902 100644 --- a/codex-rs/core/tests/suite/request_user_input.rs +++ b/codex-rs/core/tests/suite/request_user_input.rs @@ -24,7 +24,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -129,8 +129,7 @@ async fn request_user_input_round_trip_for_mode(mode: ModeKind) -> anyhow::Resul let second_mock = responses::mount_sse_once(&server, second_response).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -143,7 +142,6 @@ async fn request_user_input_round_trip_for_mode(mode: ModeKind) -> anyhow::Resul cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -251,8 +249,7 @@ where let session_model = session_configured.model.clone(); let collaboration_mode = build_mode(session_model.clone()); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -265,7 +262,6 @@ where cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/responses_api_proxy_headers.rs b/codex-rs/core/tests/suite/responses_api_proxy_headers.rs index 09e99f78c3..987785e22c 100644 --- a/codex-rs/core/tests/suite/responses_api_proxy_headers.rs +++ b/codex-rs/core/tests/suite/responses_api_proxy_headers.rs @@ -21,7 +21,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use pretty_assertions::assert_eq; use serde_json::json; use std::time::Duration; @@ -127,8 +127,8 @@ async fn responses_api_parent_and_subagent_requests_include_identity_headers() - async fn submit_turn_with_timeout(test: &TestCodex, prompt: &str) -> Result<()> { let session_model = test.session_configured.model.clone(); let cwd = test.config.cwd.to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::workspace_write(), cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::workspace_write(), cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -140,7 +140,6 @@ async fn submit_turn_with_timeout(test: &TestCodex, prompt: &str) -> Result<()> cwd, approval_policy: AskForApproval::OnRequest, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/rmcp_client.rs b/codex-rs/core/tests/suite/rmcp_client.rs index c9f4618b37..fd491d9a0c 100644 --- a/codex-rs/core/tests/suite/rmcp_client.rs +++ b/codex-rs/core/tests/suite/rmcp_client.rs @@ -53,7 +53,7 @@ use core_test_support::skip_if_no_network; use core_test_support::stdio_server_bin; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_with_timeout; use reqwest::Client; @@ -103,8 +103,7 @@ fn read_only_user_turn_with_model( model: String, ) -> Op { let cwd = fixture.cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::read_only(), cwd.as_path()); Op::UserTurn { items: vec![UserInput::Text { text: text.into(), @@ -114,7 +113,6 @@ fn read_only_user_turn_with_model( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/safety_check_downgrade.rs b/codex-rs/core/tests/suite/safety_check_downgrade.rs index eb70dafe5f..d027c6dc2e 100644 --- a/codex-rs/core/tests/suite/safety_check_downgrade.rs +++ b/codex-rs/core/tests/suite/safety_check_downgrade.rs @@ -22,7 +22,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use wiremock::ResponseTemplate; @@ -35,8 +35,7 @@ const CYBER_POLICY_MESSAGE: &str = "This request has been flagged for potentially high-risk cyber activity."; fn disabled_text_turn(test: &TestCodex, text: &str) -> Op { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.cwd_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, test.cwd_path()); Op::UserTurn { environments: None, items: vec![UserInput::Text { @@ -47,7 +46,6 @@ fn disabled_text_turn(test: &TestCodex, text: &str) -> Op { cwd: test.cwd_path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: REQUESTED_MODEL.to_string(), effort: test.config.model_reasoning_effort, diff --git a/codex-rs/core/tests/suite/shell_snapshot.rs b/codex-rs/core/tests/suite/shell_snapshot.rs index f757fa322a..3de3c09bf0 100644 --- a/codex-rs/core/tests/suite/shell_snapshot.rs +++ b/codex-rs/core/tests/suite/shell_snapshot.rs @@ -15,7 +15,7 @@ use core_test_support::responses::mount_sse_sequence; use core_test_support::responses::sse; use core_test_support::test_codex::TestCodexHarness; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -155,8 +155,7 @@ async fn run_snapshot_command_with_options( let codex_home = test.home.path().to_path_buf(); let session_model = test.session_configured.model.clone(); let cwd = test.cwd_path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); codex .submit(Op::UserTurn { @@ -169,7 +168,6 @@ async fn run_snapshot_command_with_options( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -250,8 +248,7 @@ async fn run_shell_command_snapshot_with_options( let codex_home = test.home.path().to_path_buf(); let session_model = test.session_configured.model.clone(); let cwd = test.cwd_path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); codex .submit(Op::UserTurn { @@ -264,7 +261,6 @@ async fn run_shell_command_snapshot_with_options( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -326,8 +322,7 @@ async fn run_tool_turn_on_harness( let codex = test.codex.clone(); let session_model = test.session_configured.model.clone(); let cwd = test.cwd_path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); codex .submit(Op::UserTurn { environments: None, @@ -339,7 +334,6 @@ async fn run_tool_turn_on_harness( cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -565,8 +559,7 @@ async fn shell_command_snapshot_still_intercepts_apply_patch() -> Result<()> { mount_sse_sequence(harness.server(), responses).await; let model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); codex .submit(Op::UserTurn { environments: None, @@ -578,7 +571,6 @@ async fn shell_command_snapshot_still_intercepts_apply_patch() -> Result<()> { cwd: cwd.clone(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/skill_approval.rs b/codex-rs/core/tests/suite/skill_approval.rs index 72244d534e..6ff9baa71d 100644 --- a/codex-rs/core/tests/suite/skill_approval.rs +++ b/codex-rs/core/tests/suite/skill_approval.rs @@ -13,7 +13,7 @@ use core_test_support::responses::mount_function_call_agent_response; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use core_test_support::zsh_fork::build_zsh_fork_test; @@ -43,8 +43,7 @@ async fn submit_turn_with_policies( approval_policy: AskForApproval, permission_profile: PermissionProfile, ) -> Result<()> { - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.cwd_path()); + let permission_profile = turn_permission_profile(permission_profile, test.cwd_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -56,7 +55,6 @@ async fn submit_turn_with_policies( cwd: test.cwd_path().to_path_buf(), approval_policy, approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/skills.rs b/codex-rs/core/tests/suite/skills.rs index f6db9a7098..4636d06496 100644 --- a/codex-rs/core/tests/suite/skills.rs +++ b/codex-rs/core/tests/suite/skills.rs @@ -24,7 +24,7 @@ use core_test_support::responses::sse; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use pretty_assertions::assert_eq; use std::fs; use std::path::Path; @@ -98,8 +98,8 @@ async fn user_turn_includes_skill_instructions() -> Result<()> { .await; let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.config.cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { environments: None, @@ -117,7 +117,6 @@ async fn user_turn_includes_skill_instructions() -> Result<()> { cwd: test.config.cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/sqlite_state.rs b/codex-rs/core/tests/suite/sqlite_state.rs index 8250f5493d..53fc54701a 100644 --- a/codex-rs/core/tests/suite/sqlite_state.rs +++ b/codex-rs/core/tests/suite/sqlite_state.rs @@ -26,7 +26,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::stdio_server_bin; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use pretty_assertions::assert_eq; @@ -398,8 +398,7 @@ async fn mcp_call_marks_thread_memory_mode_polluted_when_configured() -> Result< let db = test.codex.state_db().expect("state db enabled"); let thread_id = test.session_configured.session_id; let cwd = test.cwd_path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::read_only(), cwd.as_path()); test.codex .submit(Op::UserTurn { @@ -412,7 +411,6 @@ async fn mcp_call_marks_thread_memory_mode_polluted_when_configured() -> Result< cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: test.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/tool_harness.rs b/codex-rs/core/tests/suite/tool_harness.rs index 62d6dcef90..ba0b0eee33 100644 --- a/codex-rs/core/tests/suite/tool_harness.rs +++ b/codex-rs/core/tests/suite/tool_harness.rs @@ -24,7 +24,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use serde_json::Value; use serde_json::json; @@ -77,8 +77,8 @@ async fn shell_tool_executes_command_and_streams_output() -> anyhow::Result<()> let session_model = session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { @@ -91,7 +91,6 @@ async fn shell_tool_executes_command_and_streams_output() -> anyhow::Result<()> cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -153,8 +152,8 @@ async fn update_plan_tool_emits_plan_update_event() -> anyhow::Result<()> { let session_model = session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { @@ -167,7 +166,6 @@ async fn update_plan_tool_emits_plan_update_event() -> anyhow::Result<()> { cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -239,8 +237,8 @@ async fn update_plan_tool_rejects_malformed_payload() -> anyhow::Result<()> { let session_model = session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { @@ -253,7 +251,6 @@ async fn update_plan_tool_rejects_malformed_payload() -> anyhow::Result<()> { cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -340,8 +337,8 @@ async fn apply_patch_tool_executes_and_emits_patch_events() -> anyhow::Result<() let session_model = session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { @@ -354,7 +351,6 @@ async fn apply_patch_tool_executes_and_emits_patch_events() -> anyhow::Result<() cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -449,8 +445,8 @@ async fn apply_patch_reports_parse_diagnostics() -> anyhow::Result<()> { let session_model = session_configured.model.clone(); let cwd_path = cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd_path.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, cwd_path.as_path()); codex .submit(Op::UserTurn { @@ -463,7 +459,6 @@ async fn apply_patch_reports_parse_diagnostics() -> anyhow::Result<()> { cwd: cwd_path, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/tool_parallelism.rs b/codex-rs/core/tests/suite/tool_parallelism.rs index 47282c283d..6f07f5a0dc 100644 --- a/codex-rs/core/tests/suite/tool_parallelism.rs +++ b/codex-rs/core/tests/suite/tool_parallelism.rs @@ -24,7 +24,7 @@ use core_test_support::streaming_sse::StreamingSseChunk; use core_test_support::streaming_sse::start_streaming_sse_server; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use pretty_assertions::assert_eq; use serde_json::Value; @@ -33,8 +33,7 @@ use tokio::sync::oneshot; async fn run_turn(test: &TestCodex, prompt: &str) -> anyhow::Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, test.cwd.path()); test.codex .submit(Op::UserTurn { @@ -47,7 +46,6 @@ async fn run_turn(test: &TestCodex, prompt: &str) -> anyhow::Result<()> { cwd: test.cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -355,8 +353,7 @@ async fn shell_tools_start_before_response_completed_when_stream_delayed() -> an .await?; let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, test.cwd.path()); test.codex .submit(Op::UserTurn { environments: None, @@ -368,7 +365,6 @@ async fn shell_tools_start_before_response_completed_when_stream_delayed() -> an cwd: test.cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/truncation.rs b/codex-rs/core/tests/suite/truncation.rs index 3477fab8ee..d6c69341bf 100644 --- a/codex-rs/core/tests/suite/truncation.rs +++ b/codex-rs/core/tests/suite/truncation.rs @@ -22,7 +22,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::stdio_server_bin; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use serde_json::Value; use serde_json::json; @@ -509,8 +509,8 @@ async fn mcp_image_output_preserves_image_and_no_text_summary() -> Result<()> { }); let fixture = builder.build(&server).await?; let session_model = fixture.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), fixture.cwd.path()); + let permission_profile = + turn_permission_profile(PermissionProfile::read_only(), fixture.cwd.path()); fixture .codex @@ -524,7 +524,6 @@ async fn mcp_image_output_preserves_image_and_no_text_summary() -> Result<()> { cwd: fixture.cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/unified_exec.rs b/codex-rs/core/tests/suite/unified_exec.rs index 63a29f304f..b354a31c8a 100644 --- a/codex-rs/core/tests/suite/unified_exec.rs +++ b/codex-rs/core/tests/suite/unified_exec.rs @@ -32,7 +32,7 @@ use core_test_support::skip_if_windows; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::TestCodexHarness; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use core_test_support::wait_for_event_with_timeout; @@ -186,8 +186,7 @@ async fn submit_unified_exec_turn( permission_profile: PermissionProfile, ) -> Result<()> { let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(permission_profile, test.config.cwd.as_path()); + let permission_profile = turn_permission_profile(permission_profile, test.config.cwd.as_path()); test.codex .submit(Op::UserTurn { @@ -200,7 +199,6 @@ async fn submit_unified_exec_turn( cwd: test.config.cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -273,8 +271,7 @@ async fn unified_exec_intercepts_apply_patch_exec_command() -> Result<()> { let codex = test.codex.clone(); let cwd = test.cwd_path().to_path_buf(); let session_model = test.session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); codex .submit(Op::UserTurn { @@ -287,7 +284,6 @@ async fn unified_exec_intercepts_apply_patch_exec_command() -> Result<()> { cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2145,8 +2141,7 @@ async fn unified_exec_keeps_long_running_session_after_turn_end() -> Result<()> mount_sse_sequence(&server, responses).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -2159,7 +2154,6 @@ async fn unified_exec_keeps_long_running_session_after_turn_end() -> Result<()> cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2242,8 +2236,7 @@ async fn unified_exec_interrupt_preserves_long_running_session() -> Result<()> { mount_sse_sequence(&server, responses).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -2256,7 +2249,6 @@ async fn unified_exec_interrupt_preserves_long_running_session() -> Result<()> { cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2708,8 +2700,7 @@ async fn unified_exec_runs_under_sandbox() -> Result<()> { let request_log = mount_sse_sequence(&server, responses).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::read_only(), cwd.path()); codex .submit(Op::UserTurn { @@ -2723,7 +2714,6 @@ async fn unified_exec_runs_under_sandbox() -> Result<()> { approval_policy: AskForApproval::Never, approvals_reviewer: None, // Important! - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2824,8 +2814,8 @@ async fn unified_exec_enforces_glob_deny_read_policy() -> Result<()> { let request_log = mount_sse_sequence(&server, responses).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(session_configured.permission_profile.clone(), cwd.path()); + let permission_profile = + turn_permission_profile(session_configured.permission_profile.clone(), cwd.path()); codex .submit(Op::UserTurn { environments: None, @@ -2837,7 +2827,6 @@ async fn unified_exec_enforces_glob_deny_read_policy() -> Result<()> { cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, @@ -2955,8 +2944,7 @@ async fn unified_exec_python_prompt_under_seatbelt() -> Result<()> { let request_log = mount_sse_sequence(&server, responses).await; let session_model = session_configured.model.clone(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::read_only(), cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::read_only(), cwd.path()); codex .submit(Op::UserTurn { @@ -2969,7 +2957,6 @@ async fn unified_exec_python_prompt_under_seatbelt() -> Result<()> { cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_model, effort: None, diff --git a/codex-rs/core/tests/suite/user_shell_cmd.rs b/codex-rs/core/tests/suite/user_shell_cmd.rs index 1285b9f925..766daaea2e 100644 --- a/codex-rs/core/tests/suite/user_shell_cmd.rs +++ b/codex-rs/core/tests/suite/user_shell_cmd.rs @@ -22,7 +22,7 @@ use core_test_support::responses::sse; use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event; use core_test_support::wait_for_event_match; use core_test_support::wait_for_event_with_timeout; @@ -169,8 +169,7 @@ async fn user_shell_command_does_not_replace_active_turn() -> anyhow::Result<()> let mock = responses::mount_sse_sequence(&server, vec![first, second]).await; let cwd = fixture.cwd.path().to_path_buf(); - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.as_path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.as_path()); fixture .codex @@ -184,7 +183,6 @@ async fn user_shell_command_does_not_replace_active_turn() -> anyhow::Result<()> cwd, approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: fixture.session_configured.model.clone(), effort: None, diff --git a/codex-rs/core/tests/suite/view_image.rs b/codex-rs/core/tests/suite/view_image.rs index 9dd5d82e0a..c35fcbb2b2 100644 --- a/codex-rs/core/tests/suite/view_image.rs +++ b/codex-rs/core/tests/suite/view_image.rs @@ -30,7 +30,7 @@ use core_test_support::responses::start_mock_server; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use core_test_support::wait_for_event_with_timeout; use image::DynamicImage; use image::GenericImageView; @@ -52,8 +52,8 @@ use wiremock::matchers::body_string_contains; const VIEW_IMAGE_TURN_COMPLETE_TIMEOUT: Duration = Duration::from_secs(30); fn disabled_user_turn(test: &TestCodex, items: Vec, model: String) -> Op { - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, test.config.cwd.as_path()); + let permission_profile = + turn_permission_profile(PermissionProfile::Disabled, test.config.cwd.as_path()); Op::UserTurn { environments: None, items, @@ -61,7 +61,6 @@ fn disabled_user_turn(test: &TestCodex, items: Vec, model: String) -> cwd: test.config.cwd.to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model, effort: None, diff --git a/codex-rs/core/tests/suite/websocket_fallback.rs b/codex-rs/core/tests/suite/websocket_fallback.rs index f073ce7ab8..5e5a137c13 100644 --- a/codex-rs/core/tests/suite/websocket_fallback.rs +++ b/codex-rs/core/tests/suite/websocket_fallback.rs @@ -14,7 +14,7 @@ use core_test_support::responses::sse; use core_test_support::skip_if_no_network; use core_test_support::test_codex::TestCodex; use core_test_support::test_codex::test_codex; -use core_test_support::test_codex::turn_permission_fields; +use core_test_support::test_codex::turn_permission_profile; use pretty_assertions::assert_eq; use tokio::time::Duration; use tokio::time::timeout; @@ -148,8 +148,7 @@ async fn websocket_fallback_hides_first_websocket_retry_stream_error() -> Result cwd, .. } = builder.build(&server).await?; - let (sandbox_policy, permission_profile) = - turn_permission_fields(PermissionProfile::Disabled, cwd.path()); + let permission_profile = turn_permission_profile(PermissionProfile::Disabled, cwd.path()); codex .submit(Op::UserTurn { @@ -162,7 +161,6 @@ async fn websocket_fallback_hides_first_websocket_retry_stream_error() -> Result cwd: cwd.path().to_path_buf(), approval_policy: AskForApproval::Never, approvals_reviewer: None, - sandbox_policy, permission_profile, model: session_configured.model.clone(), effort: None, diff --git a/codex-rs/protocol/src/protocol.rs b/codex-rs/protocol/src/protocol.rs index d70f0669bc..c2f516af8f 100644 --- a/codex-rs/protocol/src/protocol.rs +++ b/codex-rs/protocol/src/protocol.rs @@ -541,15 +541,6 @@ pub enum Op { /// When omitted, the session keeps the current setting approvals_reviewer: Option, - /// Deprecated legacy sandbox policy field. - /// - /// `permission_profile` is required and is the canonical source for - /// `UserTurn` operations. This field is ignored by core and remains - /// only as a temporary compatibility slot while callers finish - /// migrating. - #[serde(default, skip_serializing_if = "Option::is_none")] - sandbox_policy: Option, - /// Full permissions profile to use for tool calls such as `local_shell`. permission_profile: PermissionProfile, diff --git a/codex-rs/tui/src/app_command.rs b/codex-rs/tui/src/app_command.rs index 92df9d1d91..53ea762a78 100644 --- a/codex-rs/tui/src/app_command.rs +++ b/codex-rs/tui/src/app_command.rs @@ -374,7 +374,6 @@ impl AppCommand { cwd, approval_policy, approvals_reviewer, - sandbox_policy: None, permission_profile, model, effort, @@ -589,7 +588,6 @@ impl From for AppCommand { cwd, approval_policy, approvals_reviewer, - sandbox_policy, permission_profile, model, effort, @@ -620,7 +618,6 @@ impl From for AppCommand { cwd, approval_policy, approvals_reviewer, - sandbox_policy, permission_profile, model, effort,