From 37d6e312789b982c62abff8cd99d2d3e6d2440f0 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Wed, 20 May 2026 14:46:56 -0700 Subject: [PATCH] Cover function hook opt outs --- codex-rs/core/src/tools/registry_tests.rs | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/codex-rs/core/src/tools/registry_tests.rs b/codex-rs/core/src/tools/registry_tests.rs index 8cfe37efff..88880b7f13 100644 --- a/codex-rs/core/src/tools/registry_tests.rs +++ b/codex-rs/core/src/tools/registry_tests.rs @@ -222,6 +222,35 @@ async fn function_hook_input_defaults_empty_arguments_to_object() { ); } +#[tokio::test] +async fn opted_out_function_tools_do_not_expose_default_hook_payloads() { + let (session, turn) = crate::session::tests::make_session_and_context().await; + let session = Arc::new(session); + let turn = Arc::new(turn); + let output = crate::tools::context::FunctionToolOutput::from_text("ok".to_string(), Some(true)); + + let request_permissions = crate::tools::handlers::RequestPermissionsHandler; + let request_permissions_invocation = test_invocation( + Arc::clone(&session), + Arc::clone(&turn), + "request-permissions-call", + request_permissions.tool_name(), + ); + assert_eq!( + request_permissions.pre_tool_use_payload(&request_permissions_invocation), + None + ); + assert_eq!( + request_permissions.post_tool_use_payload(&request_permissions_invocation, &output), + None + ); + + let wait = crate::tools::handlers::CodeModeWaitHandler; + let wait_invocation = test_invocation(session, turn, "wait-call", wait.tool_name()); + assert_eq!(wait.pre_tool_use_payload(&wait_invocation), None); + assert_eq!(wait.post_tool_use_payload(&wait_invocation, &output), None); +} + #[test] fn model_visible_override_keeps_code_mode_result_typed() { let result = AnyToolResult {