diff --git a/codex-rs/core/config.schema.json b/codex-rs/core/config.schema.json index ba774380d..009ef5736 100644 --- a/codex-rs/core/config.schema.json +++ b/codex-rs/core/config.schema.json @@ -431,9 +431,6 @@ "plugins": { "type": "boolean" }, - "powershell_utf8": { - "type": "boolean" - }, "prevent_idle_sleep": { "type": "boolean" }, @@ -2040,9 +2037,6 @@ "plugins": { "type": "boolean" }, - "powershell_utf8": { - "type": "boolean" - }, "prevent_idle_sleep": { "type": "boolean" }, diff --git a/codex-rs/core/src/tools/runtimes/shell.rs b/codex-rs/core/src/tools/runtimes/shell.rs index 18afb20bc..6ff8349b5 100644 --- a/codex-rs/core/src/tools/runtimes/shell.rs +++ b/codex-rs/core/src/tools/runtimes/shell.rs @@ -33,7 +33,6 @@ use crate::tools::sandboxing::ToolError; use crate::tools::sandboxing::ToolRuntime; use crate::tools::sandboxing::sandbox_override_for_first_attempt; use crate::tools::sandboxing::with_cached_approval; -use codex_features::Feature; use codex_network_proxy::NetworkProxy; use codex_protocol::models::PermissionProfile; use codex_protocol::protocol::ReviewDecision; @@ -227,9 +226,7 @@ impl ToolRuntime for ShellRuntime { &req.cwd, &req.explicit_env_overrides, ); - let command = if matches!(session_shell.shell_type, ShellType::PowerShell) - && ctx.session.features().enabled(Feature::PowershellUtf8) - { + let command = if matches!(session_shell.shell_type, ShellType::PowerShell) { prefix_powershell_script_with_utf8(&command) } else { command diff --git a/codex-rs/core/src/tools/runtimes/unified_exec.rs b/codex-rs/core/src/tools/runtimes/unified_exec.rs index 0b6409215..49ef0e638 100644 --- a/codex-rs/core/src/tools/runtimes/unified_exec.rs +++ b/codex-rs/core/src/tools/runtimes/unified_exec.rs @@ -36,7 +36,6 @@ use crate::unified_exec::NoopSpawnLifecycle; use crate::unified_exec::UnifiedExecError; use crate::unified_exec::UnifiedExecProcess; use crate::unified_exec::UnifiedExecProcessManager; -use codex_features::Feature; use codex_network_proxy::NetworkProxy; use codex_protocol::models::PermissionProfile; use codex_protocol::protocol::ReviewDecision; @@ -200,9 +199,7 @@ impl<'a> ToolRuntime for UnifiedExecRunt &req.cwd, &req.explicit_env_overrides, ); - let command = if matches!(session_shell.shell_type, ShellType::PowerShell) - && ctx.session.features().enabled(Feature::PowershellUtf8) - { + let command = if matches!(session_shell.shell_type, ShellType::PowerShell) { prefix_powershell_script_with_utf8(&command) } else { command diff --git a/codex-rs/core/tests/suite/shell_command.rs b/codex-rs/core/tests/suite/shell_command.rs index 9a128b6a8..6eda4a7c3 100644 --- a/codex-rs/core/tests/suite/shell_command.rs +++ b/codex-rs/core/tests/suite/shell_command.rs @@ -1,7 +1,6 @@ use std::time::Duration; use anyhow::Result; -use codex_features::Feature; use core_test_support::assert_regex_match; use core_test_support::responses::ev_assistant_message; use core_test_support::responses::ev_completed; @@ -251,16 +250,7 @@ async fn shell_command_times_out_with_timeout_ms() -> anyhow::Result<()> { async fn unicode_output(login: bool) -> anyhow::Result<()> { skip_if_no_network!(Ok(())); - #[allow(clippy::expect_used)] - let harness = shell_command_harness_with(|builder| { - builder.with_model("gpt-5.2").with_config(|config| { - config - .features - .enable(Feature::PowershellUtf8) - .expect("test config should allow feature update"); - }) - }) - .await?; + let harness = shell_command_harness_with(|builder| builder.with_model("gpt-5.2")).await?; // We use a child process on windows instead of a direct builtin like 'echo' to ensure that Powershell // config is actually being set correctly. @@ -286,16 +276,7 @@ async fn unicode_output(login: bool) -> anyhow::Result<()> { async fn unicode_output_with_newlines(login: bool) -> anyhow::Result<()> { skip_if_no_network!(Ok(())); - #[allow(clippy::expect_used)] - let harness = shell_command_harness_with(|builder| { - builder.with_model("gpt-5.2").with_config(|config| { - config - .features - .enable(Feature::PowershellUtf8) - .expect("test config should allow feature update"); - }) - }) - .await?; + let harness = shell_command_harness_with(|builder| builder.with_model("gpt-5.2")).await?; let call_id = "unicode_output"; mount_shell_responses_with_timeout( diff --git a/codex-rs/features/src/lib.rs b/codex-rs/features/src/lib.rs index 101cbda73..f49428cec 100644 --- a/codex-rs/features/src/lib.rs +++ b/codex-rs/features/src/lib.rs @@ -132,8 +132,6 @@ pub enum Feature { ChildAgentsMd, /// Allow the model to request `detail: "original"` image outputs on supported models. ImageDetailOriginal, - /// Enforce UTF8 output in Powershell. - PowershellUtf8, /// Compress request bodies (zstd) when sending streaming requests to codex-backend. EnableRequestCompression, /// Enable collab tools. @@ -689,18 +687,6 @@ pub const FEATURES: &[FeatureSpec] = &[ stage: Stage::Removed, default_enabled: false, }, - FeatureSpec { - id: Feature::PowershellUtf8, - key: "powershell_utf8", - #[cfg(windows)] - stage: Stage::Stable, - #[cfg(windows)] - default_enabled: true, - #[cfg(not(windows))] - stage: Stage::UnderDevelopment, - #[cfg(not(windows))] - default_enabled: false, - }, FeatureSpec { id: Feature::EnableRequestCompression, key: "enable_request_compression",