make cached web_search client-side default (#9974)

[Experiment](https://console.statsig.com/50aWbk2p4R76rNX9lN5VUw/experiments/codex_web_search_rollout/summary)
for default cached `web_search` completed; cached chosen as default.

Update client to reflect that.
This commit is contained in:
sayan-oai
2026-01-26 21:25:40 -08:00
committed by GitHub
parent 28bd7db14a
commit 0adcd8aa86
10 changed files with 64 additions and 63 deletions

View File

@@ -27,7 +27,7 @@ use std::collections::HashMap;
pub(crate) struct ToolsConfig {
pub shell_type: ConfigShellToolType,
pub apply_patch_tool_type: Option<ApplyPatchToolType>,
pub web_search_mode: Option<WebSearchMode>,
pub web_search_mode: WebSearchMode,
pub collab_tools: bool,
pub collaboration_modes_tools: bool,
pub experimental_supported_tools: Vec<String>,
@@ -36,7 +36,7 @@ pub(crate) struct ToolsConfig {
pub(crate) struct ToolsConfigParams<'a> {
pub(crate) model_info: &'a ModelInfo,
pub(crate) features: &'a Features,
pub(crate) web_search_mode: Option<WebSearchMode>,
pub(crate) web_search_mode: WebSearchMode,
}
impl ToolsConfig {
@@ -1374,17 +1374,17 @@ pub(crate) fn build_specs(
}
match config.web_search_mode {
Some(WebSearchMode::Cached) => {
WebSearchMode::Cached => {
builder.push_spec(ToolSpec::WebSearch {
external_web_access: Some(false),
});
}
Some(WebSearchMode::Live) => {
WebSearchMode::Live => {
builder.push_spec(ToolSpec::WebSearch {
external_web_access: Some(true),
});
}
Some(WebSearchMode::Disabled) | None => {}
WebSearchMode::Disabled => {}
}
builder.push_spec_with_parallel_support(create_view_image_tool(), true);
@@ -1546,7 +1546,7 @@ mod tests {
let config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Live),
web_search_mode: WebSearchMode::Live,
});
let (tools, _) = build_specs(&config, None, &[]).build();
@@ -1610,7 +1610,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
assert_contains_tool_names(
@@ -1628,7 +1628,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
assert!(
@@ -1640,7 +1640,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
assert_contains_tool_names(&tools, &["request_user_input"]);
@@ -1649,7 +1649,7 @@ mod tests {
fn assert_model_tools(
model_slug: &str,
features: &Features,
web_search_mode: Option<WebSearchMode>,
web_search_mode: WebSearchMode,
expected_tools: &[&str],
) {
let config = test_config();
@@ -1673,7 +1673,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
@@ -1695,7 +1695,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Live),
web_search_mode: WebSearchMode::Live,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
@@ -1715,7 +1715,7 @@ mod tests {
assert_model_tools(
"gpt-5-codex",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"shell_command",
"list_mcp_resources",
@@ -1737,7 +1737,7 @@ mod tests {
assert_model_tools(
"gpt-5.1-codex",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"shell_command",
"list_mcp_resources",
@@ -1760,7 +1760,7 @@ mod tests {
assert_model_tools(
"gpt-5-codex",
&features,
Some(WebSearchMode::Live),
WebSearchMode::Live,
&[
"exec_command",
"write_stdin",
@@ -1784,7 +1784,7 @@ mod tests {
assert_model_tools(
"gpt-5.1-codex",
&features,
Some(WebSearchMode::Live),
WebSearchMode::Live,
&[
"exec_command",
"write_stdin",
@@ -1807,7 +1807,7 @@ mod tests {
assert_model_tools(
"codex-mini-latest",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"local_shell",
"list_mcp_resources",
@@ -1828,7 +1828,7 @@ mod tests {
assert_model_tools(
"gpt-5.1-codex-mini",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"shell_command",
"list_mcp_resources",
@@ -1850,7 +1850,7 @@ mod tests {
assert_model_tools(
"gpt-5",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"shell",
"list_mcp_resources",
@@ -1871,7 +1871,7 @@ mod tests {
assert_model_tools(
"gpt-5.1",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"shell_command",
"list_mcp_resources",
@@ -1893,7 +1893,7 @@ mod tests {
assert_model_tools(
"exp-5.1",
&features,
Some(WebSearchMode::Cached),
WebSearchMode::Cached,
&[
"exec_command",
"write_stdin",
@@ -1917,7 +1917,7 @@ mod tests {
assert_model_tools(
"codex-mini-latest",
&features,
Some(WebSearchMode::Live),
WebSearchMode::Live,
&[
"exec_command",
"write_stdin",
@@ -1941,7 +1941,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Live),
web_search_mode: WebSearchMode::Live,
});
let (tools, _) = build_specs(&tools_config, Some(HashMap::new()), &[]).build();
@@ -1963,7 +1963,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
@@ -1982,7 +1982,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(&tools_config, None, &[]).build();
@@ -2013,7 +2013,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Live),
web_search_mode: WebSearchMode::Live,
});
let (tools, _) = build_specs(
&tools_config,
@@ -2109,7 +2109,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
// Intentionally construct a map with keys that would sort alphabetically.
@@ -2186,7 +2186,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(
@@ -2244,7 +2244,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(
@@ -2299,7 +2299,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(
@@ -2356,7 +2356,7 @@ mod tests {
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(
@@ -2469,7 +2469,7 @@ Examples of valid command strings:
let tools_config = ToolsConfig::new(&ToolsConfigParams {
model_info: &model_info,
features: &features,
web_search_mode: Some(WebSearchMode::Cached),
web_search_mode: WebSearchMode::Cached,
});
let (tools, _) = build_specs(
&tools_config,