From e699e15061c1ce93bcd4e7307c8bdadf1c122fe7 Mon Sep 17 00:00:00 2001 From: Alex Zamoshchin Date: Mon, 15 Jun 2026 12:14:59 -0700 Subject: [PATCH] Exclude synthetic app links from approval metadata --- codex-rs/core/src/mcp_tool_call.rs | 8 +++++++- codex-rs/core/src/mcp_tool_call_tests.rs | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/codex-rs/core/src/mcp_tool_call.rs b/codex-rs/core/src/mcp_tool_call.rs index 414e8b2180..7a370808f6 100644 --- a/codex-rs/core/src/mcp_tool_call.rs +++ b/codex-rs/core/src/mcp_tool_call.rs @@ -1498,7 +1498,13 @@ fn connector_link_id_for_server( server: &str, meta: Option<&serde_json::Map>, ) -> Option { - if server != CODEX_APPS_MCP_SERVER_NAME { + if server != CODEX_APPS_MCP_SERVER_NAME + || meta + .and_then(|meta| meta.get(MCP_TOOL_CODEX_APPS_META_KEY)) + .and_then(|codex_apps_meta| codex_apps_meta.get("synthetic_link")) + .and_then(serde_json::Value::as_bool) + == Some(true) + { return None; } diff --git a/codex-rs/core/src/mcp_tool_call_tests.rs b/codex-rs/core/src/mcp_tool_call_tests.rs index a2dc53944e..e7de92c30f 100644 --- a/codex-rs/core/src/mcp_tool_call_tests.rs +++ b/codex-rs/core/src/mcp_tool_call_tests.rs @@ -369,6 +369,17 @@ fn connector_link_id_is_only_honored_for_codex_apps() { Some("link_123".to_string()) ); assert_eq!(connector_link_id_for_server("custom_server", meta), None); + + let synthetic_link_meta = serde_json::json!({ + MCP_TOOL_APPROVAL_LINK_ID_KEY: "synthetic_link::calendar", + MCP_TOOL_CODEX_APPS_META_KEY: { + "synthetic_link": true, + }, + }); + assert_eq!( + connector_link_id_for_server(CODEX_APPS_MCP_SERVER_NAME, synthetic_link_meta.as_object()), + None + ); } #[test]