{"record":{"id":"c959bf207198fc68","repo":"BerriAI/litellm","slug":"this-message-was-blocked-by-ovalix","errorCode":null,"errorMessage":"This message was blocked by Ovalix","messagePattern":"This message was blocked by Ovalix","errorType":"exception","errorClass":"OvalixGuardrailBlockedException","httpStatus":null,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/ovalix/ovalix.py","lineNumber":271,"sourceCode":"                    message=f\"Ovalix guardrail error: {e}\",\n                    should_wrap_with_default_message=False,\n                ) from e\n\n            action_type = (resp.get(\"action_type\") or \"\").lower()\n            blocking_message = self._get_trackers_corrected_message(resp) or BLOCKED_BY_OVALIX_FALLBACK_MESSAGE\n            if action_type == BLOCKED_ACTION_TYPE and is_first_response:\n                self._block_current_message(blocking_message)\n            elif action_type == BLOCKED_ACTION_TYPE:\n                post_guardrail_texts.insert(0, blocking_message)\n            else:\n                corrected_text = self._get_trackers_corrected_message(resp) or llm_response\n                post_guardrail_texts.insert(0, corrected_text)\n            is_first_response = False\n        return post_guardrail_texts\n\n    def _block_current_message(self, blocking_message: str) -> None:\n        \"\"\"Raise OvalixGuardrailBlockedException with the given message (no default wrapper).\"\"\"\n        raise OvalixGuardrailBlockedException(\n            guardrail_name=self.guardrail_name,\n            message=blocking_message,\n            should_wrap_with_default_message=False,\n        )\n\n    def _get_trackers_corrected_message(self, resp: dict) -> str | None:\n        \"\"\"Extract corrected/blocking message content from Tracker checkpoint response.\"\"\"\n        modified: Final = resp.get(\"modified_data\")\n        if isinstance(modified, dict) and \"content\" in modified:\n            return modified[\"content\"]\n        return None\n\n    @staticmethod\n    def get_config_model() -> type[\"GuardrailConfigModel\"] | None:\n        from litellm.types.proxy.guardrails.guardrail_hooks.ovalix import (\n            OvalixGuardrailConfigModel,\n        )\n","sourceCodeStart":253,"sourceCodeEnd":289,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/ovalix/ovalix.py#L253-L289","documentation":"Error \"This message was blocked by Ovalix\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/ovalix/ovalix.py:271 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Review the Ovalix policy that blocked the message and adjust the content.","Check the Ovalix checkpoint configuration to confirm the applied rules are intended."],"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-14T05:17:10.506Z"}