diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index fec7224e07..e2b2f6b624 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -3012,6 +3012,7 @@ impl ChatWidget { .notices .hide_full_access_warning .unwrap_or(false); + let persist_preset = self.should_persist_approval_preset(&preset); let actions: Vec = if requires_confirmation { let preset_clone = preset.clone(); vec![Box::new(move |tx| { @@ -3058,7 +3059,7 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) } } @@ -3067,14 +3068,14 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) } } else { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) }; items.push(SelectionItem { @@ -3153,6 +3154,16 @@ impl ChatWidget { })] } + fn should_persist_approval_preset(&self, preset: &ApprovalPreset) -> bool { + if preset.id != "full-access" { + return true; + } + self.config + .notices + .hide_full_access_warning + .unwrap_or(false) + } + fn preset_matches_current( current_approval: AskForApproval, current_sandbox: &SandboxPolicy, @@ -3335,7 +3346,7 @@ impl ChatWidget { } let persist_approval = preset .as_ref() - .is_some_and(|preset| preset.id != "full-access"); + .is_some_and(|preset| self.should_persist_approval_preset(preset)); if let (Some(approval), Some(sandbox)) = (approval, sandbox.clone()) { accept_actions.extend(Self::approval_preset_actions( approval, @@ -3462,7 +3473,7 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + self.should_persist_approval_preset(preset), ) }) .unwrap_or_default() @@ -3546,7 +3557,7 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + self.should_persist_approval_preset(preset), ) }) .unwrap_or_default() diff --git a/codex-rs/tui2/src/chatwidget.rs b/codex-rs/tui2/src/chatwidget.rs index 29ab05d159..ed957f53d4 100644 --- a/codex-rs/tui2/src/chatwidget.rs +++ b/codex-rs/tui2/src/chatwidget.rs @@ -2763,6 +2763,7 @@ impl ChatWidget { .notices .hide_full_access_warning .unwrap_or(false); + let persist_preset = self.should_persist_approval_preset(&preset); let actions: Vec = if requires_confirmation { let preset_clone = preset.clone(); vec![Box::new(move |tx| { @@ -2809,7 +2810,7 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) } } @@ -2818,14 +2819,14 @@ impl ChatWidget { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) } } else { Self::approval_preset_actions( preset.approval, preset.sandbox.clone(), - preset.id != "full-access", + persist_preset, ) }; items.push(SelectionItem { @@ -2884,6 +2885,16 @@ impl ChatWidget { })] } + fn should_persist_approval_preset(&self, preset: &ApprovalPreset) -> bool { + if preset.id != "full-access" { + return true; + } + self.config + .notices + .hide_full_access_warning + .unwrap_or(false) + } + fn preset_matches_current( current_approval: AskForApproval, current_sandbox: &SandboxPolicy, @@ -3066,7 +3077,7 @@ impl ChatWidget { } let persist_approval = preset .as_ref() - .is_some_and(|preset| preset.id != "full-access"); + .is_some_and(|preset| self.should_persist_approval_preset(preset)); if let (Some(approval), Some(sandbox)) = (approval, sandbox.clone()) { accept_actions.extend(Self::approval_preset_actions( approval,