diff --git a/codex-rs/core/src/config/config_tests.rs b/codex-rs/core/src/config/config_tests.rs index 19cdbc7d09..3598a50a14 100644 --- a/codex-rs/core/src/config/config_tests.rs +++ b/codex-rs/core/src/config/config_tests.rs @@ -1631,6 +1631,41 @@ fn resolve_tool_feature_overrides_profile_web_search_config_only_inherits_disabl ); } +#[test] +fn resolve_tool_feature_overrides_web_search_config_only_defaults_to_enabled_when_both_layers_present() { + let cfg = ConfigToml { + tools: Some(ToolsToml { + web_search: Some(WebSearchFeatureToml { + enabled: None, + config: WebSearchToolConfig::default(), + }), + ..Default::default() + }), + ..Default::default() + }; + let profile = ConfigProfile { + tools: Some(ToolsToml { + web_search: Some(WebSearchFeatureToml { + enabled: None, + config: WebSearchToolConfig { + context_size: Some(WebSearchContextSize::Low), + ..Default::default() + }, + }), + ..Default::default() + }), + ..Default::default() + }; + + assert_eq!( + resolve_tool_feature_overrides(&cfg, &profile), + ToolFeatureOverrides { + web_search: Some(true), + ..Default::default() + } + ); +} + #[test] fn web_search_mode_for_turn_uses_preference_for_read_only() { let web_search_mode = Constrained::allow_any(WebSearchMode::Cached); diff --git a/codex-rs/core/src/config/mod.rs b/codex-rs/core/src/config/mod.rs index e723b677dd..bc1d83a7f0 100644 --- a/codex-rs/core/src/config/mod.rs +++ b/codex-rs/core/src/config/mod.rs @@ -2231,7 +2231,10 @@ fn resolve_tool_feature_overrides( base.and_then(|tools| tools.web_search.as_ref()), ) { (Some(profile_web_search), Some(base_web_search)) => { - profile_web_search.enabled.or(base_web_search.enabled) + profile_web_search + .enabled + .or(base_web_search.enabled) + .or(Some(true)) } (Some(profile_web_search), None) => Some(profile_web_search.is_enabled()), (None, Some(base_web_search)) => Some(base_web_search.is_enabled()),