From fb2a5b45900a62e24069bb13a50a45f26347f09a Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Mon, 16 Feb 2026 15:44:41 -0800 Subject: [PATCH] feat: accept GuardrailTracingDetail in base guardrail logging method --- litellm/integrations/custom_guardrail.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/litellm/integrations/custom_guardrail.py b/litellm/integrations/custom_guardrail.py index 0b7b95e7bbc..a8f1ba7ced0 100644 --- a/litellm/integrations/custom_guardrail.py +++ b/litellm/integrations/custom_guardrail.py @@ -26,6 +26,7 @@ from litellm.types.utils import ( CallTypes, GenericGuardrailAPIInputs, GuardrailStatus, + GuardrailTracingDetail, LLMResponseTypes, StandardLoggingGuardrailInformation, ) @@ -520,9 +521,15 @@ class CustomGuardrail(CustomLogger): masked_entity_count: Optional[Dict[str, int]] = None, guardrail_provider: Optional[str] = None, event_type: Optional[GuardrailEventHooks] = None, + tracing_detail: Optional[GuardrailTracingDetail] = None, ) -> None: """ Builds `StandardLoggingGuardrailInformation` and adds it to the request metadata so it can be used for logging to DataDog, Langfuse, etc. + + Args: + tracing_detail: Optional typed dict with provider-specific tracing fields + (guardrail_id, policy_template, detection_method, confidence_score, + classification, match_details, patterns_checked, alert_recipients). """ if isinstance(guardrail_json_response, Exception): guardrail_json_response = str(guardrail_json_response) @@ -559,6 +566,7 @@ class CustomGuardrail(CustomLogger): end_time=end_time, duration=duration, masked_entity_count=masked_entity_count, + **(tracing_detail or {}), ) def _append_guardrail_info(container: dict) -> None: