feat: change guardrail_information to list type #16127
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Title
change guardrail_information to list type to support displaying multiple guardrails
Relevant issues
#N/A
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unitType
🆕 New Feature
📖 Documentation
✅ Test
Changes
This change updates StandardLoggingGuardrailInformation to a list type, enabling visualization of multiple guardrails applied within a single request.
What’s changed
StandardLoggingGuardrailInformation is now returned as an array. The UI has been updated to display multiple guardrail entries when present.
Not included (to be addressed next)
There is an existing issue where StandardLoggingGuardrailInformation set during post_call is not passed through to logging. This PR does not address that behavior. I plan to handle this in a follow-up PR.
Note
Switches
guardrail_informationto a list and updates logging, integrations, spend tracking, and UI to handle multiple guardrail entries with aggregated status/latency.guardrail_informationtoOptional[list[StandardLoggingGuardrailInformation]]acrossStandardLoggingPayload, proxy types, spend logs metadata, and utils.guardrail_statusliterals to"success" | "guardrail_intervened" | "guardrail_failed_to_respond" | "not_run"and derive status from any non-not_runentry._get_status_fieldsto read lists; keep response time/cost logic intact.CustomGuardrail: append multiplestandard_logging_guardrail_informationentries; handle existing dict→list migration.guardrail_informationlist in metadata; sum guardrail durations forguardrail_overhead_time_ms.GuardrailViewerredesigned to render multiple entries and show aggregated status/masked counts.Written by Cursor Bugbot for commit 9a7e5a1. This will update automatically on new commits. Configure here.