{"record":{"id":"1963f537e0319abf","repo":"BerriAI/litellm","slug":"image-blocked-by-prompt-security-violations","errorCode":null,"errorMessage":"Image blocked by Prompt Security. Violations: {', '.join(violations)}","messagePattern":"Image blocked by Prompt Security\\. Violations: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/prompt_security/prompt_security.py","lineNumber":325,"sourceCode":"\n    async def _process_standalone_images(self, images: list[str], user_api_key_alias: str | None) -> None:\n        \"\"\"Process standalone images from inputs (data URLs).\"\"\"\n        for image_url in images:\n            if image_url.startswith(\"data:\"):\n                try:\n                    header, encoded = image_url.split(\",\", 1)\n                    file_data = base64.b64decode(encoded)\n                    mime_type = header.split(\";\")[0].split(\":\")[1]\n                    extension = mime_type.split(\"/\")[-1]\n                    filename = f\"image.{extension}\"\n\n                    result = await self.sanitize_file_content(\n                        file_data, filename, user_api_key_alias=user_api_key_alias\n                    )\n\n                    if result.get(\"action\") == \"block\":\n                        violations = result.get(\"violations\", [])\n                        raise HTTPException(\n                            status_code=400,\n                            detail=f\"Image blocked by Prompt Security. Violations: {', '.join(violations)}\",\n                        )\n                except HTTPException:\n                    raise\n                except Exception as e:\n                    verbose_proxy_logger.error(\"Error processing image: %s\", e)\n\n    @staticmethod\n    def _resolve_key_alias_from_request_data(request_data: dict) -> str | None:\n        \"\"\"Resolve user API key alias from request_data metadata.\"\"\"\n        # Check litellm_metadata first (set by guardrail framework)\n        litellm_metadata: Final = request_data.get(\"litellm_metadata\", {})\n        if litellm_metadata:\n            alias = litellm_metadata.get(\"user_api_key_alias\")\n            if alias:\n                return alias\n","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/prompt_security/prompt_security.py#L307-L343","documentation":"Error \"Image blocked by Prompt Security. Violations: {', '.join(violations)}\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/prompt_security/prompt_security.py:325 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Replace or remove the image that violates Prompt Security policies.","Review the image moderation rules configured in Prompt Security."],"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"}