Compare commits

...

1 Commits

Author SHA1 Message Date
David Wiesen
de12751007 Add no-sandbox option to Windows sandbox prompt 2026-04-16 08:24:16 -07:00
2 changed files with 40 additions and 0 deletions

View File

@@ -8942,6 +8942,7 @@ impl ChatWidget {
let accept_otel = self.session_telemetry.clone();
let legacy_otel = self.session_telemetry.clone();
let legacy_preset = preset.clone();
let no_sandbox_otel = self.session_telemetry.clone();
let quit_otel = self.session_telemetry.clone();
let items = vec![
SelectionItem {
@@ -8976,6 +8977,21 @@ impl ChatWidget {
dismiss_on_select: true,
..Default::default()
},
SelectionItem {
name: "Use Codex without sandbox (approval required)".to_string(),
description: Some(
"Continue without Windows sandboxing and approve potentially risky commands as they come up.".to_string(),
),
actions: vec![Box::new(move |_tx| {
no_sandbox_otel.counter(
"codex.windows_sandbox.elevated_prompt_use_no_sandbox",
/*inc*/ 1,
&[],
);
})],
dismiss_on_select: true,
..Default::default()
},
SelectionItem {
name: "Quit".to_string(),
description: None,
@@ -9025,6 +9041,7 @@ impl ChatWidget {
let elevated_preset = preset.clone();
let legacy_preset = preset;
let no_sandbox_otel = self.session_telemetry.clone();
let quit_otel = self.session_telemetry.clone();
let items = vec![
SelectionItem {
@@ -9067,6 +9084,21 @@ impl ChatWidget {
dismiss_on_select: true,
..Default::default()
},
SelectionItem {
name: "Use Codex without sandbox (approval required)".to_string(),
description: Some(
"Continue without Windows sandboxing and approve potentially risky commands as they come up.".to_string(),
),
actions: vec![Box::new(move |_tx| {
no_sandbox_otel.counter(
"codex.windows_sandbox.fallback_use_no_sandbox",
/*inc*/ 1,
&[],
);
})],
dismiss_on_select: true,
..Default::default()
},
SelectionItem {
name: "Quit".to_string(),
description: None,

View File

@@ -104,6 +104,10 @@ async fn windows_auto_mode_prompt_requests_enabling_sandbox_feature() {
popup.contains("Use non-admin sandbox"),
"expected auto mode prompt to include non-admin fallback option, popup: {popup}"
);
assert!(
popup.contains("Use Codex without sandbox"),
"expected auto mode prompt to include explicit no-sandbox option, popup: {popup}"
);
}
#[cfg(target_os = "windows")]
@@ -129,6 +133,10 @@ async fn startup_prompts_for_windows_sandbox_when_agent_requested() {
popup.contains("Use non-admin sandbox"),
"expected startup prompt to offer non-admin fallback: {popup}"
);
assert!(
popup.contains("Use Codex without sandbox"),
"expected startup prompt to offer explicit no-sandbox flow: {popup}"
);
assert!(
popup.contains("Quit"),
"expected startup prompt to offer quit action: {popup}"