Compare commits

...

1 Commits

Author SHA1 Message Date
David Wiesen
740feed203 Skip Windows sandbox setup NUX in yolo mode 2026-04-10 14:08:16 -07:00

View File

@@ -49,6 +49,7 @@ use codex_protocol::config_types::WindowsSandboxLevel;
use codex_protocol::protocol::AskForApproval;
use codex_protocol::protocol::RolloutItem;
use codex_protocol::protocol::RolloutLine;
use codex_protocol::protocol::SandboxPolicy;
use codex_protocol::protocol::TurnContextItem;
use codex_rollout::state_db::get_state_db;
use codex_state::log_db;
@@ -1375,9 +1376,8 @@ async fn run_ratatui_app(
set_default_client_residency_requirement(config.enforce_residency.value());
let active_profile = config.active_profile.clone();
let should_show_trust_screen = should_show_trust_screen(&config);
let should_prompt_windows_sandbox_nux_at_startup = cfg!(target_os = "windows")
&& trust_decision_was_made
&& WindowsSandboxLevel::from_config(&config) == WindowsSandboxLevel::Disabled;
let should_prompt_windows_sandbox_nux_at_startup =
should_prompt_windows_sandbox_nux_at_startup(&config, trust_decision_was_made);
let Cli {
prompt,
@@ -1728,6 +1728,31 @@ fn should_show_login_screen(login_status: LoginStatus, config: &Config) -> bool
login_status == LoginStatus::NotAuthenticated
}
fn should_prompt_windows_sandbox_nux_at_startup(
config: &Config,
trust_decision_was_made: bool,
) -> bool {
should_prompt_windows_sandbox_nux_at_startup_for_platform(
config,
trust_decision_was_made,
cfg!(target_os = "windows"),
)
}
fn should_prompt_windows_sandbox_nux_at_startup_for_platform(
config: &Config,
trust_decision_was_made: bool,
is_windows: bool,
) -> bool {
is_windows
&& trust_decision_was_made
&& WindowsSandboxLevel::from_config(config) == WindowsSandboxLevel::Disabled
&& !matches!(
config.permissions.sandbox_policy.get(),
SandboxPolicy::DangerFullAccess
)
}
#[cfg(test)]
mod tests {
use super::*;
@@ -1997,6 +2022,43 @@ mod tests {
Ok(())
}
#[tokio::test]
async fn windows_sandbox_nux_shows_after_trust_decision_without_sandbox() -> std::io::Result<()>
{
let temp_dir = TempDir::new()?;
let mut config = build_config(&temp_dir).await?;
config.set_windows_sandbox_enabled(/*value*/ false);
let should_show = should_prompt_windows_sandbox_nux_at_startup_for_platform(
&config, /*trust_decision_was_made*/ true, /*is_windows*/ true,
);
assert!(should_show);
Ok(())
}
#[tokio::test]
async fn yolo_skips_windows_sandbox_nux_after_trust_decision() -> std::io::Result<()> {
let temp_dir = TempDir::new()?;
let overrides = ConfigOverrides {
sandbox_mode: Some(SandboxMode::DangerFullAccess),
..Default::default()
};
let mut config = ConfigBuilder::default()
.codex_home(temp_dir.path().to_path_buf())
.harness_overrides(overrides)
.build()
.await?;
config.set_windows_sandbox_enabled(/*value*/ false);
let should_show = should_prompt_windows_sandbox_nux_at_startup_for_platform(
&config, /*trust_decision_was_made*/ true, /*is_windows*/ true,
);
assert!(!should_show);
Ok(())
}
#[tokio::test]
async fn embedded_app_server_supports_thread_start_rpc() -> color_eyre::Result<()> {
let temp_dir = TempDir::new()?;