diff --git a/codex-rs/protocol/src/config_types.rs b/codex-rs/protocol/src/config_types.rs index aa28e1a6fac..c98b3117ca1 100644 --- a/codex-rs/protocol/src/config_types.rs +++ b/codex-rs/protocol/src/config_types.rs @@ -98,6 +98,7 @@ pub enum WindowsSandboxLevel { pub enum Personality { Friendly, Pragmatic, + None, } #[derive( diff --git a/codex-rs/protocol/src/openai_models.rs b/codex-rs/protocol/src/openai_models.rs index 90cf34f3935..8c7942c506b 100644 --- a/codex-rs/protocol/src/openai_models.rs +++ b/codex-rs/protocol/src/openai_models.rs @@ -337,6 +337,8 @@ impl ModelInstructionsVariables { match personality { Personality::Friendly => self.personality_friendly.clone(), Personality::Pragmatic => self.personality_pragmatic.clone(), + // When None is explicitly selected, return None so no personality is injected + Personality::None => None, } } else { self.personality_default.clone() diff --git a/codex-rs/tui/src/app.rs b/codex-rs/tui/src/app.rs index 878d4d5da2d..7cacd7f17ac 100644 --- a/codex-rs/tui/src/app.rs +++ b/codex-rs/tui/src/app.rs @@ -2328,6 +2328,7 @@ impl App { match personality { Personality::Friendly => "Friendly", Personality::Pragmatic => "Pragmatic", + Personality::None => "None", } } diff --git a/codex-rs/tui/src/chatwidget.rs b/codex-rs/tui/src/chatwidget.rs index 52a1b544044..9a85ade8830 100644 --- a/codex-rs/tui/src/chatwidget.rs +++ b/codex-rs/tui/src/chatwidget.rs @@ -4004,7 +4004,7 @@ impl ChatWidget { fn open_personality_popup_for_current_model(&mut self) { let current_personality = self.config.personality.unwrap_or(Personality::Friendly); - let personalities = [Personality::Friendly, Personality::Pragmatic]; + let personalities = [Personality::Friendly, Personality::Pragmatic, Personality::None]; let supports_personality = self.current_model_supports_personality(); let items: Vec = personalities @@ -5499,6 +5499,7 @@ impl ChatWidget { match personality { Personality::Friendly => "Friendly", Personality::Pragmatic => "Pragmatic", + Personality::None => "None", } } @@ -5506,6 +5507,7 @@ impl ChatWidget { match personality { Personality::Friendly => "Warm, collaborative, and helpful.", Personality::Pragmatic => "Concise, task-focused, and direct.", + Personality::None => "No personality - purely functional responses.", } } diff --git a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__personality_selection_popup.snap b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__personality_selection_popup.snap index 3c6bba94e61..2c1ba2c4e44 100644 --- a/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__personality_selection_popup.snap +++ b/codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__personality_selection_popup.snap @@ -7,5 +7,6 @@ expression: popup › 1. Friendly (current) Warm, collaborative, and helpful. 2. Pragmatic Concise, task-focused, and direct. + 3. None No personality - purely functional responses. Press enter to confirm or esc to go back