From 336612bc25dd9c3c9e23ec2b10a08bb34c83607a Mon Sep 17 00:00:00 2001 From: viyatb-oai Date: Wed, 24 Jun 2026 18:46:50 -0700 Subject: [PATCH] fix(core): restore credential broker integration scope Co-authored-by: Codex noreply@openai.com --- codex-rs/config/src/config_requirements.rs | 14 ------- .../core/src/config/network_proxy_spec.rs | 10 ----- .../src/config/network_proxy_spec_tests.rs | 42 ------------------- codex-rs/core/src/network_proxy_loader.rs | 8 ---- .../core/src/network_proxy_loader_tests.rs | 26 ------------ codex-rs/network-proxy/src/runtime.rs | 38 ----------------- codex-rs/network-proxy/src/state.rs | 23 ---------- codex-rs/tui/src/debug_config.rs | 8 ---- 8 files changed, 169 deletions(-) diff --git a/codex-rs/config/src/config_requirements.rs b/codex-rs/config/src/config_requirements.rs index 3c14d29c11..00af972336 100644 --- a/codex-rs/config/src/config_requirements.rs +++ b/codex-rs/config/src/config_requirements.rs @@ -359,7 +359,6 @@ pub struct NetworkRequirementsToml { pub allow_upstream_proxy: Option, pub dangerously_allow_non_loopback_proxy: Option, pub dangerously_allow_all_unix_sockets: Option, - pub dangerously_allow_plaintext_credential_injection: Option, pub domains: Option, /// When true, only managed `allowed_domains` are respected while managed /// network enforcement is active. User allowlist entries are ignored. @@ -376,7 +375,6 @@ struct RawNetworkRequirementsToml { allow_upstream_proxy: Option, dangerously_allow_non_loopback_proxy: Option, dangerously_allow_all_unix_sockets: Option, - dangerously_allow_plaintext_credential_injection: Option, domains: Option, #[serde(default)] allowed_domains: Option>, @@ -404,7 +402,6 @@ impl<'de> Deserialize<'de> for NetworkRequirementsToml { allow_upstream_proxy, dangerously_allow_non_loopback_proxy, dangerously_allow_all_unix_sockets, - dangerously_allow_plaintext_credential_injection, domains, allowed_domains, managed_allowed_domains_only, @@ -433,7 +430,6 @@ impl<'de> Deserialize<'de> for NetworkRequirementsToml { allow_upstream_proxy, dangerously_allow_non_loopback_proxy, dangerously_allow_all_unix_sockets, - dangerously_allow_plaintext_credential_injection, domains: domains .or_else(|| legacy_domain_permissions_from_lists(allowed_domains, denied_domains)), managed_allowed_domains_only, @@ -485,7 +481,6 @@ pub struct NetworkConstraints { pub allow_upstream_proxy: Option, pub dangerously_allow_non_loopback_proxy: Option, pub dangerously_allow_all_unix_sockets: Option, - pub dangerously_allow_plaintext_credential_injection: Option, pub domains: Option, /// When true, only managed `allowed_domains` are respected while managed /// network enforcement is active. User allowlist entries are ignored. @@ -513,7 +508,6 @@ impl From for NetworkConstraints { allow_upstream_proxy, dangerously_allow_non_loopback_proxy, dangerously_allow_all_unix_sockets, - dangerously_allow_plaintext_credential_injection, domains, managed_allowed_domains_only, unix_sockets, @@ -526,7 +520,6 @@ impl From for NetworkConstraints { allow_upstream_proxy, dangerously_allow_non_loopback_proxy, dangerously_allow_all_unix_sockets, - dangerously_allow_plaintext_credential_injection, domains, managed_allowed_domains_only, unix_sockets, @@ -3331,7 +3324,6 @@ command = "python3 /enterprise/hooks/pre.py" enabled = true allow_upstream_proxy = false dangerously_allow_all_unix_sockets = true - dangerously_allow_plaintext_credential_injection = false managed_allowed_domains_only = true allow_local_binding = false @@ -3361,12 +3353,6 @@ command = "python3 /enterprise/hooks/pre.py" sourced_network.value.dangerously_allow_all_unix_sockets, Some(true) ); - assert_eq!( - sourced_network - .value - .dangerously_allow_plaintext_credential_injection, - Some(false) - ); assert_eq!( sourced_network.value.domains.as_ref(), Some(&NetworkDomainPermissionsToml { diff --git a/codex-rs/core/src/config/network_proxy_spec.rs b/codex-rs/core/src/config/network_proxy_spec.rs index 07b45b5000..653e6987f3 100644 --- a/codex-rs/core/src/config/network_proxy_spec.rs +++ b/codex-rs/core/src/config/network_proxy_spec.rs @@ -249,16 +249,6 @@ impl NetworkProxySpec { constraints.dangerously_allow_all_unix_sockets = Some(dangerously_allow_all_unix_sockets); } - if let Some(dangerously_allow_plaintext_credential_injection) = - requirements.dangerously_allow_plaintext_credential_injection - { - config - .network - .dangerously_allow_plaintext_credential_injection = - dangerously_allow_plaintext_credential_injection; - constraints.dangerously_allow_plaintext_credential_injection = - Some(dangerously_allow_plaintext_credential_injection); - } let managed_allowed_domains = if hard_deny_allowlist_misses { Some( requirements diff --git a/codex-rs/core/src/config/network_proxy_spec_tests.rs b/codex-rs/core/src/config/network_proxy_spec_tests.rs index a12f573f23..6dfb1e3a25 100644 --- a/codex-rs/core/src/config/network_proxy_spec_tests.rs +++ b/codex-rs/core/src/config/network_proxy_spec_tests.rs @@ -40,48 +40,6 @@ fn build_state_with_audit_metadata_threads_metadata_to_state() { assert_eq!(state.audit_metadata(), &metadata); } -#[test] -fn managed_requirement_disables_plaintext_credential_injection() { - let mut config = NetworkProxyConfig::default(); - config - .network - .dangerously_allow_plaintext_credential_injection = true; - let requirements = NetworkConstraints { - dangerously_allow_plaintext_credential_injection: Some(false), - ..Default::default() - }; - - let spec = NetworkProxySpec::from_config_and_constraints( - config, - Some(requirements), - &PermissionProfile::workspace_write(), - ) - .expect("managed requirement should override the user setting"); - - assert!( - !spec - .config - .network - .dangerously_allow_plaintext_credential_injection - ); - assert_eq!( - spec.constraints - .dangerously_allow_plaintext_credential_injection, - Some(false) - ); - - let mut candidate = spec.config.clone(); - candidate - .network - .dangerously_allow_plaintext_credential_injection = true; - let err = validate_policy_against_constraints(&candidate, &spec.constraints) - .expect_err("managed constraint should reject re-enabling plaintext injection"); - assert_eq!( - err.to_string(), - "invalid value for network.dangerously_allow_plaintext_credential_injection: true (allowed false (disabled by managed config))" - ); -} - #[test] fn requirements_allowed_domains_are_a_baseline_for_user_allowlist() { let mut config = NetworkProxyConfig::default(); diff --git a/codex-rs/core/src/network_proxy_loader.rs b/codex-rs/core/src/network_proxy_loader.rs index ef6992da09..912073b1b4 100644 --- a/codex-rs/core/src/network_proxy_loader.rs +++ b/codex-rs/core/src/network_proxy_loader.rs @@ -159,14 +159,6 @@ fn apply_network_constraints(network: NetworkToml, constraints: &mut NetworkProx if let Some(dangerously_allow_all_unix_sockets) = network.dangerously_allow_all_unix_sockets { constraints.dangerously_allow_all_unix_sockets = Some(dangerously_allow_all_unix_sockets); } - if let Some(dangerously_allow_plaintext_credential_injection) = network - .mitm - .as_ref() - .and_then(|mitm| mitm.dangerously_allow_plaintext_credential_injection) - { - constraints.dangerously_allow_plaintext_credential_injection = - Some(dangerously_allow_plaintext_credential_injection); - } if let Some(domains) = network.domains.as_ref() { let mut config = NetworkProxyConfig::default(); if let Some(allowed_domains) = constraints.allowed_domains.take() { diff --git a/codex-rs/core/src/network_proxy_loader_tests.rs b/codex-rs/core/src/network_proxy_loader_tests.rs index 4b9d865447..879d826920 100644 --- a/codex-rs/core/src/network_proxy_loader_tests.rs +++ b/codex-rs/core/src/network_proxy_loader_tests.rs @@ -325,32 +325,6 @@ dangerously_allow_all_unix_sockets = true assert_eq!(constraints.dangerously_allow_all_unix_sockets, Some(true)); } -#[test] -fn apply_network_constraints_includes_plaintext_credential_injection_flag() { - let config: toml::Value = toml::from_str( - r#" -default_permissions = "dev" - -[permissions.dev.network.mitm] -dangerously_allow_plaintext_credential_injection = false -"#, - ) - .expect("permissions profile should parse"); - let network = selected_network_from_tables( - network_tables_from_toml(&config).expect("permissions profile should deserialize"), - ) - .expect("permissions profile should select a network table") - .expect("network table should be present"); - - let mut constraints = NetworkProxyConstraints::default(); - apply_network_constraints(network, &mut constraints); - - assert_eq!( - constraints.dangerously_allow_plaintext_credential_injection, - Some(false) - ); -} - #[test] fn selected_network_from_tables_ignores_builtin_profile_without_permissions_table() { let config: toml::Value = toml::from_str( diff --git a/codex-rs/network-proxy/src/runtime.rs b/codex-rs/network-proxy/src/runtime.rs index 13a2e7cf25..a51f1d8f16 100644 --- a/codex-rs/network-proxy/src/runtime.rs +++ b/codex-rs/network-proxy/src/runtime.rs @@ -1883,44 +1883,6 @@ mod tests { assert!(validate_policy_against_constraints(&config, &constraints).is_err()); } - #[test] - fn validate_policy_against_constraints_disallows_plaintext_credential_injection_without_managed_opt_in() - { - let constraints = NetworkProxyConstraints { - dangerously_allow_plaintext_credential_injection: Some(false), - ..NetworkProxyConstraints::default() - }; - - let config = NetworkProxyConfig { - network: NetworkProxySettings { - enabled: true, - dangerously_allow_plaintext_credential_injection: true, - ..NetworkProxySettings::default() - }, - }; - - assert!(validate_policy_against_constraints(&config, &constraints).is_err()); - } - - #[test] - fn validate_policy_against_constraints_allows_plaintext_credential_injection_with_managed_opt_in() - { - let constraints = NetworkProxyConstraints { - dangerously_allow_plaintext_credential_injection: Some(true), - ..NetworkProxyConstraints::default() - }; - - let config = NetworkProxyConfig { - network: NetworkProxySettings { - enabled: true, - dangerously_allow_plaintext_credential_injection: true, - ..NetworkProxySettings::default() - }, - }; - - assert!(validate_policy_against_constraints(&config, &constraints).is_ok()); - } - #[test] fn validate_policy_against_constraints_disallows_allow_all_unix_sockets_when_allowlist_is_managed() { diff --git a/codex-rs/network-proxy/src/state.rs b/codex-rs/network-proxy/src/state.rs index 0a95e07a09..9a5287dac4 100644 --- a/codex-rs/network-proxy/src/state.rs +++ b/codex-rs/network-proxy/src/state.rs @@ -30,7 +30,6 @@ pub struct NetworkProxyConstraints { pub allow_upstream_proxy: Option, pub dangerously_allow_non_loopback_proxy: Option, pub dangerously_allow_all_unix_sockets: Option, - pub dangerously_allow_plaintext_credential_injection: Option, pub allowed_domains: Option>, pub allowlist_expansion_enabled: Option, pub denied_domains: Option>, @@ -217,28 +216,6 @@ pub fn validate_policy_against_constraints( }, )?; - let allow_plaintext_credential_injection = - constraints.dangerously_allow_plaintext_credential_injection; - validate( - config - .network - .dangerously_allow_plaintext_credential_injection, - move |candidate| match allow_plaintext_credential_injection { - Some(true) | None => Ok(()), - Some(false) => { - if *candidate { - Err(invalid_value( - "network.dangerously_allow_plaintext_credential_injection", - "true", - "false (disabled by managed config)", - )) - } else { - Ok(()) - } - } - }, - )?; - if let Some(allow_local_binding) = constraints.allow_local_binding { validate(config.network.allow_local_binding, move |candidate| { if *candidate && !allow_local_binding { diff --git a/codex-rs/tui/src/debug_config.rs b/codex-rs/tui/src/debug_config.rs index acb33e9c53..c02d4c8261 100644 --- a/codex-rs/tui/src/debug_config.rs +++ b/codex-rs/tui/src/debug_config.rs @@ -468,7 +468,6 @@ fn format_network_constraints(network: &NetworkConstraints) -> String { allow_upstream_proxy, dangerously_allow_non_loopback_proxy, dangerously_allow_all_unix_sockets, - dangerously_allow_plaintext_credential_injection, domains, managed_allowed_domains_only, unix_sockets, @@ -497,13 +496,6 @@ fn format_network_constraints(network: &NetworkConstraints) -> String { "dangerously_allow_all_unix_sockets={dangerously_allow_all_unix_sockets}" )); } - if let Some(dangerously_allow_plaintext_credential_injection) = - dangerously_allow_plaintext_credential_injection - { - parts.push(format!( - "dangerously_allow_plaintext_credential_injection={dangerously_allow_plaintext_credential_injection}" - )); - } if let Some(domains) = domains { parts.push(format!( "domains={}",