From d66e3dfa1906c2d171a6ba4092af5247e5a94fc4 Mon Sep 17 00:00:00 2001 From: Charles Cunningham Date: Sun, 22 Mar 2026 11:32:59 -0700 Subject: [PATCH] app-server: keep unique guardian review ids Do not collapse legacy network approval review notifications onto the parent tool item id. Co-authored-by: Codex --- .../app-server/src/bespoke_event_handling.rs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index ff4b69da27..275731ac25 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -224,18 +224,7 @@ fn guardian_auto_approval_review_notification( risk_level: assessment.risk_level.map(Into::into), rationale: assessment.rationale.clone(), }; - let target_item_id = assessment - .action - .as_ref() - .filter(|action| { - matches!( - action.get("tool").and_then(serde_json::Value::as_str), - Some("network_access") - ) - }) - .and_then(|action| action.get("parent_tool_item_id")) - .and_then(serde_json::Value::as_str) - .map_or_else(|| assessment.id.clone(), ToString::to_string); + let target_item_id = assessment.id.clone(); match assessment.status { codex_protocol::protocol::GuardianAssessmentStatus::InProgress => { ServerNotification::ItemGuardianApprovalReviewStarted( @@ -2997,7 +2986,7 @@ mod tests { } #[test] - fn guardian_assessment_aborted_emits_completed_review_payload() { + fn guardian_assessment_aborted_keeps_unique_review_id_for_network_access() { let conversation_id = ThreadId::new(); let action = json!({ "tool": "network_access", @@ -3022,7 +3011,7 @@ mod tests { ServerNotification::ItemGuardianApprovalReviewCompleted(payload) => { assert_eq!(payload.thread_id, conversation_id.to_string()); assert_eq!(payload.turn_id, "turn-from-assessment"); - assert_eq!(payload.target_item_id, "command-3"); + assert_eq!(payload.target_item_id, "guardian-3"); assert_eq!(payload.review.status, GuardianApprovalReviewStatus::Aborted); assert_eq!(payload.review.risk_score, None); assert_eq!(payload.review.risk_level, None);