BerriAI/litellm · error · GuardrailRaisedException
Vigil Guard backend unreachable; request blocked by fail_clo
Error message
Vigil Guard backend unreachable; request blocked by fail_closed policy.
What it means
Error "Vigil Guard backend unreachable; request blocked by fail_closed policy." thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/guardrails/guardrail_hooks/vigil_guard/vigil_guard.py:265
final_texts: list[Any],
final_tool_calls: Any,
) -> GenericGuardrailAPIInputs:
if self.unreachable_fallback == "fail_open":
verbose_proxy_logger.error(
"Vigil Guard backend failure with fail_open; allowing request "
"unscanned. guardrail_name=%s source=%s error=%s",
self.guardrail_name,
source,
str(exc),
)
return self._build_output(inputs, final_texts, final_tool_calls)
verbose_proxy_logger.error(
"Vigil Guard backend failure with fail_closed; blocking request. guardrail_name=%s source=%s error=%s",
self.guardrail_name,
source,
str(exc),
)
raise GuardrailRaisedException(
guardrail_name=self.guardrail_name,
message="Vigil Guard backend unreachable; request blocked by fail_closed policy.",
should_wrap_with_default_message=False,
) from exc
@staticmethod
def _build_output(
inputs: GenericGuardrailAPIInputs,
final_texts: list[Any],
final_tool_calls: Any,
) -> GenericGuardrailAPIInputs:
# When nothing was changed, return the input shape verbatim so the guardrail
# logs "allow" rather than "mask". When a text or a tool-call argument was
# changed (sanitized), return only the remap-relevant keys and drop
# structured_messages so a stale, unsanitized payload cannot reach the model.
texts_changed: Final = final_texts != (inputs.get("texts") or [])
tool_calls_changed: Final = final_tool_calls != inputs.get("tool_calls")
if not texts_changed and not tool_calls_changed:View on GitHub (pinned to 77b7c6c40c)
Solutions
- Restore connectivity to the Vigil Guard backend.
- If downtime should not block traffic, change the fail_closed policy to fail open.
When it happens
Trigger: Thrown at litellm/proxy/guardrails/guardrail_hooks/vigil_guard/vigil_guard.py:265 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/da5c21315bef44fc.
Report an issue: GitHub.