From 0e39614d8775c10cc686562dc661f3edfdc5998b Mon Sep 17 00:00:00 2001 From: Dylan Hurd Date: Tue, 21 Apr 2026 21:00:23 -0700 Subject: [PATCH] chore(tui) debug-config guardian_policy_config (#18923) ## Summary List guardian_policy_config_source in `/debug-config` output ## Testing - [x] Ran locally --- codex-rs/config/src/config_requirements.rs | 7 ++++++- codex-rs/core/src/config/mod.rs | 1 + codex-rs/tui/src/debug_config.rs | 14 +++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/codex-rs/config/src/config_requirements.rs b/codex-rs/config/src/config_requirements.rs index 57ee0601e..800a68876 100644 --- a/codex-rs/config/src/config_requirements.rs +++ b/codex-rs/config/src/config_requirements.rs @@ -93,6 +93,8 @@ pub struct ConfigRequirements { pub network: Option>, /// Managed filesystem constraints derived from requirements. pub filesystem: Option>, + /// Source for the managed guardian policy config, when one is configured. + pub guardian_policy_config_source: Option, } impl Default for ConfigRequirements { @@ -123,6 +125,7 @@ impl Default for ConfigRequirements { ), network: None, filesystem: None, + guardian_policy_config_source: None, } } } @@ -887,7 +890,7 @@ impl TryFrom for ConfigRequirements { enforce_residency, network, permissions, - guardian_policy_config: _guardian_policy_config, + guardian_policy_config, } = toml; let approval_policy = match allowed_approval_policies { @@ -1096,6 +1099,7 @@ impl TryFrom for ConfigRequirements { let Sourced { value, source } = sourced_permissions; Sourced::new(FilesystemConstraints::from(value), source) }); + let guardian_policy_config_source = guardian_policy_config.map(|sourced| sourced.source); Ok(ConfigRequirements { approval_policy, approvals_reviewer, @@ -1107,6 +1111,7 @@ impl TryFrom for ConfigRequirements { enforce_residency, network, filesystem, + guardian_policy_config_source, }) } } diff --git a/codex-rs/core/src/config/mod.rs b/codex-rs/core/src/config/mod.rs index 995c2008c..a8fd687e8 100644 --- a/codex-rs/core/src/config/mod.rs +++ b/codex-rs/core/src/config/mod.rs @@ -1565,6 +1565,7 @@ impl Config { enforce_residency, network: network_requirements, filesystem: filesystem_requirements, + guardian_policy_config_source: _, } = config_layer_stack.requirements().clone(); let user_instructions = AgentsMdManager::load_global_instructions(Some(&codex_home)) diff --git a/codex-rs/tui/src/debug_config.rs b/codex-rs/tui/src/debug_config.rs index 6cb71792f..b16121c59 100644 --- a/codex-rs/tui/src/debug_config.rs +++ b/codex-rs/tui/src/debug_config.rs @@ -144,6 +144,14 @@ fn render_debug_config_lines(stack: &ConfigLayerStack) -> Vec> { )); } + if requirements_toml.guardian_policy_config.is_some() { + requirement_lines.push(requirement_line( + "guardian_policy_config", + "configured".to_string(), + requirements.guardian_policy_config_source.as_ref(), + )); + } + if let Some(feature_requirements) = requirements.feature_requirements.as_ref() { let value = join_or_empty( feature_requirements @@ -633,6 +641,7 @@ mod tests { file: requirements_file.clone(), }, )), + guardian_policy_config_source: Some(RequirementSource::CloudRequirements), ..ConfigRequirements::default() }; @@ -642,7 +651,7 @@ mod tests { allowed_sandbox_modes: Some(vec![SandboxModeRequirement::ReadOnly]), remote_sandbox_config: None, allowed_web_search_modes: Some(vec![WebSearchModeRequirement::Cached]), - guardian_policy_config: None, + guardian_policy_config: Some("Use the managed guardian policy.".to_string()), feature_requirements: Some(FeatureRequirementsToml { entries: BTreeMap::from([("guardian_approval".to_string(), true)]), }), @@ -697,6 +706,9 @@ mod tests { "allowed_web_search_modes: cached, disabled (source: cloud requirements)" ) ); + assert!( + rendered.contains("guardian_policy_config: configured (source: cloud requirements)") + ); assert!(rendered.contains("features: guardian_approval=true (source: cloud requirements)")); assert!(rendered.contains("mcp_servers: docs (source: MDM managed_config.toml (legacy))")); assert!(rendered.contains("enforce_residency: us (source: cloud requirements)"));