Merge b42ea0a808 into sapling-pr-archive-bolinfest

This commit is contained in:
Michael Bolin
2026-04-30 08:22:48 -07:00
committed by GitHub
8 changed files with 21 additions and 42 deletions
+1 -1
View File
@@ -714,7 +714,7 @@ async fn run_review_on_session(
approval_policy: AskForApproval::Never,
approvals_reviewer: None,
sandbox_policy: None,
permission_profile: Some(permission_profile),
permission_profile,
model: params.model.clone(),
effort: params.reasoning_effort,
summary: Some(params.reasoning_summary),
+3 -12
View File
@@ -134,7 +134,7 @@ pub(super) async fn user_input_or_turn_inner(
cwd,
approval_policy,
approvals_reviewer,
sandbox_policy,
sandbox_policy: _,
permission_profile,
model,
effort,
@@ -156,24 +156,15 @@ pub(super) async fn user_input_or_turn_inner(
},
})
});
let clear_active_permission_profile =
permission_profile.is_none() && sandbox_policy.is_some();
let permission_profile = permission_profile_with_legacy_fallback(
sess,
sandbox_policy.as_ref(),
permission_profile,
Some(cwd.as_path()),
)
.await;
(
items,
SessionSettingsUpdate {
cwd: Some(cwd),
approval_policy: Some(approval_policy),
approvals_reviewer,
permission_profile,
permission_profile: Some(permission_profile),
active_permission_profile: None,
clear_active_permission_profile,
clear_active_permission_profile: false,
windows_sandbox_level: None,
collaboration_mode,
reasoning_summary: summary,
+1 -1
View File
@@ -4248,7 +4248,7 @@ async fn user_turn_updates_approvals_reviewer() {
approval_policy: config.permissions.approval_policy.value(),
approvals_reviewer: Some(codex_config::types::ApprovalsReviewer::AutoReview),
sandbox_policy: None,
permission_profile: Some(config.permissions.permission_profile()),
permission_profile: config.permissions.permission_profile(),
model: turn_context.model_info.slug.clone(),
effort: config.model_reasoning_effort,
summary: config.model_reasoning_summary,
+3 -5
View File
@@ -212,9 +212,9 @@ pub fn turn_permission_fields(
_cwd: &Path,
) -> (
Option<codex_protocol::protocol::SandboxPolicy>,
Option<PermissionProfile>,
PermissionProfile,
) {
(None, Some(permission_profile))
(None, permission_profile)
}
pub struct TestCodexBuilder {
@@ -704,8 +704,6 @@ impl TestCodex {
service_tier: Option<Option<ServiceTier>>,
environments: Option<Vec<TurnEnvironmentSelection>>,
) -> Result<()> {
let (sandbox_policy, permission_profile) =
turn_permission_fields(permission_profile, self.config.cwd.as_path());
let session_model = self.session_configured.model.clone();
self.codex
.submit(Op::UserTurn {
@@ -718,7 +716,7 @@ impl TestCodex {
cwd: self.config.cwd.to_path_buf(),
approval_policy,
approvals_reviewer: None,
sandbox_policy,
sandbox_policy: None,
permission_profile,
model: session_model,
effort: None,
+1 -1
View File
@@ -447,7 +447,7 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an
approval_policy: Some(AskForApproval::Never),
approvals_reviewer: None,
sandbox_policy,
permission_profile,
permission_profile: Some(permission_profile),
windows_sandbox_level: None,
model: None,
effort: Some(Some(ReasoningEffort::High)),
+6 -9
View File
@@ -541,20 +541,17 @@ pub enum Op {
/// When omitted, the session keeps the current setting
approvals_reviewer: Option<ApprovalsReviewer>,
/// Legacy sandbox policy to use for tool calls such as `local_shell`.
/// Deprecated legacy sandbox policy field.
///
/// When omitted, `permission_profile` is used as the canonical source
/// of permissions. This field is kept only as a compatibility fallback
/// for older callers that have not migrated to `permission_profile`.
/// `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<SandboxPolicy>,
/// Full permissions profile to use for tool calls such as `local_shell`.
///
/// When omitted, `sandbox_policy` is used as a legacy compatibility
/// projection.
#[serde(default, skip_serializing_if = "Option::is_none")]
permission_profile: Option<PermissionProfile>,
permission_profile: PermissionProfile,
/// Must be a valid model slug for the configured client session
/// associated with this conversation.
+4 -11
View File
@@ -24,8 +24,6 @@ use codex_protocol::user_input::UserInput;
use serde::Serialize;
use serde_json::Value;
use crate::permission_compat::legacy_compatible_sandbox_policy;
#[allow(clippy::large_enum_variant)]
#[derive(Debug, Clone, PartialEq, Serialize)]
pub(crate) enum AppCommand {
@@ -377,7 +375,7 @@ impl AppCommand {
approval_policy,
approvals_reviewer,
sandbox_policy: None,
permission_profile: Some(permission_profile),
permission_profile,
model,
effort,
summary,
@@ -592,7 +590,7 @@ impl From<Op> for AppCommand {
approval_policy,
approvals_reviewer,
sandbox_policy,
permission_profile: Some(permission_profile),
permission_profile,
model,
effort,
summary,
@@ -601,12 +599,7 @@ impl From<Op> for AppCommand {
collaboration_mode,
personality,
} => {
if environments.is_none()
&& sandbox_policy.as_ref().is_none_or(|sandbox_policy| {
legacy_compatible_sandbox_policy(&permission_profile, cwd.as_path())
== *sandbox_policy
})
{
if environments.is_none() {
Self::UserTurn {
items,
cwd,
@@ -628,7 +621,7 @@ impl From<Op> for AppCommand {
approval_policy,
approvals_reviewer,
sandbox_policy,
permission_profile: Some(permission_profile),
permission_profile,
model,
effort,
summary,
@@ -150,7 +150,7 @@ async fn submission_includes_configured_permission_profile() {
} => permission_profile,
other => panic!("expected Op::UserTurn, got {other:?}"),
};
assert_eq!(permission_profile, Some(expected_permission_profile));
assert_eq!(permission_profile, expected_permission_profile);
}
#[tokio::test]
@@ -198,7 +198,7 @@ async fn submission_keeps_profile_when_legacy_projection_is_external() {
} => permission_profile,
other => panic!("expected Op::UserTurn, got {other:?}"),
};
assert_eq!(permission_profile, Some(expected_permission_profile));
assert_eq!(permission_profile, expected_permission_profile);
}
#[tokio::test]