From a35c5028196c07880ae7000f5c99dcf40d069c59 Mon Sep 17 00:00:00 2001 From: Ninad Phalak Date: Thu, 3 Sep 2026 20:26:57 -0500 Subject: [PATCH] fix(guardrails): narrow prompt and input to a list before iterating Guarding with a conditional iterable left the value un-narrowed, so passing it on was an argument-type error and the element checks read as unreachable. An early return narrows it properly and reads better. --- .../guardrails/guardrail_hooks/llm_shield/llm_shield.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/guardrails/guardrail_hooks/llm_shield/llm_shield.py b/litellm/proxy/guardrails/guardrail_hooks/llm_shield/llm_shield.py index e495f2e99d4..39c0930d7cf 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/llm_shield/llm_shield.py +++ b/litellm/proxy/guardrails/guardrail_hooks/llm_shield/llm_shield.py @@ -102,7 +102,9 @@ def _collect_prompt(data: MutableRequest, slots: _SlotSink) -> None: if isinstance(prompt, str): _collect(data, "prompt", slots) return - for index in range(len(prompt)) if isinstance(prompt, list) else (): + if not isinstance(prompt, list): + return + for index in range(len(prompt)): _collect_entry(prompt, index, slots) @@ -146,7 +148,9 @@ def _collect_responses_fields(data: MutableRequest, slots: _SlotSink) -> None: if isinstance(request_input, str): _collect(data, "input", slots) return - for index, item in enumerate(request_input if isinstance(request_input, list) else ()): + if not isinstance(request_input, list): + return + for index, item in enumerate(request_input): if isinstance(item, str): # The embeddings and moderations shape: `input` as an array of strings. _collect_entry(request_input, index, slots)