From 7fdf2f254b2250a68f36cdccdf51374da604b3d4 Mon Sep 17 00:00:00 2001 From: Matthew Zeng Date: Mon, 13 Jul 2026 23:13:08 +0000 Subject: [PATCH] Serialize plugin install requests (#32894) ## What changed - Mark `request_plugin_install` as not supporting parallel tool calls so install requests execute serially. - Add a unit test covering the handler's parallel-call capability. GitOrigin-RevId: 5f2c8184562bd776b0e527e5e258c61c604a0910 --- .../core/src/tools/handlers/request_plugin_install.rs | 2 +- .../src/tools/handlers/request_plugin_install_tests.rs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/codex-rs/core/src/tools/handlers/request_plugin_install.rs b/codex-rs/core/src/tools/handlers/request_plugin_install.rs index e44ed41fa4..c57df35fe5 100644 --- a/codex-rs/core/src/tools/handlers/request_plugin_install.rs +++ b/codex-rs/core/src/tools/handlers/request_plugin_install.rs @@ -79,7 +79,7 @@ impl ToolExecutor for RequestPluginInstallHandler { } fn supports_parallel_tool_calls(&self) -> bool { - true + false } fn handle(&self, invocation: ToolInvocation) -> codex_tools::ToolExecutorFuture<'_> { diff --git a/codex-rs/core/src/tools/handlers/request_plugin_install_tests.rs b/codex-rs/core/src/tools/handlers/request_plugin_install_tests.rs index 93b761be58..774ed49116 100644 --- a/codex-rs/core/src/tools/handlers/request_plugin_install_tests.rs +++ b/codex-rs/core/src/tools/handlers/request_plugin_install_tests.rs @@ -21,6 +21,16 @@ use rmcp::model::ElicitationAction; use serde_json::json; use tempfile::tempdir; +#[test] +fn request_plugin_install_does_not_support_parallel_tool_calls() { + let handler = RequestPluginInstallHandler::new( + Vec::new(), + ToolSuggestPresentation::RecommendationContext, + ); + + assert!(!handler.supports_parallel_tool_calls()); +} + #[tokio::test] async fn verified_plugin_install_completed_requires_installed_plugin() { let codex_home = tempdir().expect("tempdir should succeed");