BerriAI/litellm · error · StreamingCallbackError
Blocked by RepelloAI Argus guardrail
Error message
Blocked by RepelloAI Argus guardrail
What it means
Error "Blocked by RepelloAI Argus guardrail" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/guardrails/guardrail_hooks/repelloai/repelloai.py:485
chunks.append(chunk)
assembled = litellm_main.stream_chunk_builder( # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
chunks=chunks
)
text: Final = self._extract_response_text(assembled) if isinstance(assembled, ModelResponse) else None
if text:
repelloai_response: Final = await self._call_analyze(
text=text,
stage="response",
request_data=request_data,
event_type=event_type,
)
if repelloai_response is not None:
self._log_flagged_verdict(repelloai_response)
if self._verdict_blocks(repelloai_response):
from litellm.proxy.proxy_server import StreamingCallbackError
raise StreamingCallbackError("Blocked by RepelloAI Argus guardrail")
add_guardrail_to_applied_guardrails_header(request_data=request_data, guardrail_name=self.guardrail_name)
else:
verbose_proxy_logger.warning(
"RepelloAI Argus: no inspectable text in streamed response; skipping scan. "
"guardrail=%s assembled_type=%s",
self.guardrail_name,
type(assembled).__name__,
)
for chunk in chunks:
yield chunk
@staticmethod
def _extract_response_text(response: object) -> str | None:
if _is_object_dict(response):
response_dict = response
elif isinstance(response, ModelResponse):
response_dict = (View on GitHub (pinned to 77b7c6c40c)
Solutions
- Modify the request to comply with the RepelloAI Argus guardrail policies.
- Check the Argus console for the blocking decision details.
When it happens
Trigger: Thrown at litellm/proxy/guardrails/guardrail_hooks/repelloai/repelloai.py:485 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/e86daab8c8bc50ba.
Report an issue: GitHub.