From 719431da6e2bd15dfeccf32f1fb7888f4c762c92 Mon Sep 17 00:00:00 2001 From: khoi Date: Thu, 30 Apr 2026 11:53:19 -0700 Subject: [PATCH] [Codex] Add browser use external feature flag (#20245) ## Summary - Adds a separate feature control for external-browser Browser Use integrations. - Registers `browser_use_external` as a stable, default-enabled requirements-owned feature key. - Updates feature registry tests and regenerates the config schema. Codex validation: - `cargo fmt -- --config imports_granularity=Item` - `cargo run -p codex-core --bin codex-write-config-schema` - `cargo test -p codex-features` ## Addendum This gives enterprise policy a coarse control for Browser Use outside the Codex-managed in-app browser. The existing `browser_use` feature is the Browser Use control, while `browser_use_external` can gate extension/native integrations for external browsers as that surface grows --- codex-rs/core/config.schema.json | 6 ++++++ codex-rs/features/src/lib.rs | 10 ++++++++++ codex-rs/features/src/tests.rs | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/codex-rs/core/config.schema.json b/codex-rs/core/config.schema.json index 28c81d69c..8bf457c2b 100644 --- a/codex-rs/core/config.schema.json +++ b/codex-rs/core/config.schema.json @@ -373,6 +373,9 @@ "browser_use": { "type": "boolean" }, + "browser_use_external": { + "type": "boolean" + }, "child_agents_md": { "type": "boolean" }, @@ -3390,6 +3393,9 @@ "browser_use": { "type": "boolean" }, + "browser_use_external": { + "type": "boolean" + }, "child_agents_md": { "type": "boolean" }, diff --git a/codex-rs/features/src/lib.rs b/codex-rs/features/src/lib.rs index 5cc2055cb..5c2a76eb8 100644 --- a/codex-rs/features/src/lib.rs +++ b/codex-rs/features/src/lib.rs @@ -172,6 +172,10 @@ pub enum Feature { /// /// Requirements-only gate: this should be set from requirements, not user config. BrowserUse, + /// Allow Browser Use integration with external browsers. + /// + /// Requirements-only gate: this should be set from requirements, not user config. + BrowserUseExternal, /// Allow Codex Computer Use. /// /// Requirements-only gate: this should be set from requirements, not user config. @@ -914,6 +918,12 @@ pub const FEATURES: &[FeatureSpec] = &[ stage: Stage::Stable, default_enabled: true, }, + FeatureSpec { + id: Feature::BrowserUseExternal, + key: "browser_use_external", + stage: Stage::Stable, + default_enabled: true, + }, FeatureSpec { id: Feature::ComputerUse, key: "computer_use", diff --git a/codex-rs/features/src/tests.rs b/codex-rs/features/src/tests.rs index 0ed1d7ecc..d1c0ae0c5 100644 --- a/codex-rs/features/src/tests.rs +++ b/codex-rs/features/src/tests.rs @@ -157,6 +157,13 @@ fn browser_controls_are_stable_and_enabled_by_default() { assert_eq!(Feature::BrowserUse.default_enabled(), true); assert_eq!(feature_for_key("browser_use"), Some(Feature::BrowserUse)); + assert_eq!(Feature::BrowserUseExternal.stage(), Stage::Stable); + assert_eq!(Feature::BrowserUseExternal.default_enabled(), true); + assert_eq!( + feature_for_key("browser_use_external"), + Some(Feature::BrowserUseExternal) + ); + assert_eq!(Feature::ComputerUse.stage(), Stage::Stable); assert_eq!(Feature::ComputerUse.default_enabled(), true); assert_eq!(feature_for_key("computer_use"), Some(Feature::ComputerUse));