{"record":{"id":"f5513d880ce385ff","repo":"BerriAI/litellm","slug":"blocked-by-repelloai-argus-guardrail-policies-vio","errorCode":null,"errorMessage":"Blocked by RepelloAI Argus guardrail. Policies violated: {'; '.join(formatted_policies)}.","messagePattern":"Blocked by RepelloAI Argus guardrail\\. Policies violated: (.+?)\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/repelloai/repelloai.py","lineNumber":289,"sourceCode":"            \"RepelloAI Argus returned an unrecognized verdict (%s) - blocking.\",\n            verdict,\n        )\n        return True\n\n    def _handle_unreachable(self, error: Exception) -> RepelloAIAnalyzeResponse | None:\n        verbose_proxy_logger.warning(\"RepelloAI Argus unreachable: %s\", str(error))\n        if self.unreachable_fallback == \"fail_closed\":\n            raise HTTPException(\n                status_code=500,\n                detail={\"error\": \"RepelloAI Argus guardrail unreachable\"},\n            )\n        return None\n\n    def _raise_if_blocked(self, repelloai_response: RepelloAIAnalyzeResponse | None) -> None:\n        if repelloai_response is None:\n            return\n        if self._verdict_blocks(repelloai_response):\n            raise HTTPException(\n                status_code=400,\n                detail=self._format_blocked_detail(repelloai_response),\n            )\n        self._log_flagged_verdict(repelloai_response)\n\n    @classmethod\n    def _format_blocked_detail(cls, repelloai_response: RepelloAIAnalyzeResponse) -> str:\n        policies: Final = repelloai_response.get(\"policies_violated\")\n        if not isinstance(policies, list) or not policies:\n            return \"Blocked by RepelloAI Argus guardrail.\"\n\n        formatted_policies: Final[list[str]] = []\n        for policy in policies:\n            policy_name = policy.get(\"policy_name\") or \"unknown_policy\"\n            details: list[str] = []\n            action_taken = policy.get(\"action_taken\")\n            if action_taken:\n                details.append(f\"action: {action_taken}\")","sourceCodeStart":271,"sourceCodeEnd":307,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/repelloai/repelloai.py#L271-L307","documentation":"Error \"Blocked by RepelloAI Argus guardrail. Policies violated: {'; '.join(formatted_policies)}.\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/repelloai/repelloai.py:289 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Review the violated policies listed and modify the request content.","Adjust the RepelloAI Argus policy configuration if legitimate traffic is blocked."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}