{"record":{"id":"170a09dd377c8680","repo":"BerriAI/litellm","slug":"akto-guardrail-service-unreachable","errorCode":null,"errorMessage":"Akto guardrail service unreachable","messagePattern":"Akto guardrail service unreachable","errorType":"http","errorClass":"HTTPException","httpStatus":503,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/akto/akto.py","lineNumber":350,"sourceCode":"            str(guardrails_result.get(\"Reason\", \"\")),\n        )\n\n    def handle_unreachable(\n        self,\n        inputs: GenericGuardrailAPIInputs,\n        error: Exception,\n    ) -> GenericGuardrailAPIInputs:\n        \"\"\"Handle Akto being unreachable based on fail_open/fail_closed config.\"\"\"\n        if self.unreachable_fallback == \"fail_open\":\n            verbose_proxy_logger.critical(\n                \"Akto unreachable (fail-open): %s\",\n                str(error),\n                exc_info=error,\n            )\n            return inputs\n\n        verbose_proxy_logger.error(\"Akto unreachable (fail-closed): %s\", str(error))\n        raise HTTPException(\n            status_code=503,\n            detail=\"Akto guardrail service unreachable\",\n        )\n\n    async def fire_and_forget_request(\n        self,\n        *,\n        guardrails: bool,\n        ingest_data: bool,\n        payload: dict,\n    ) -> None:\n        \"\"\"Send a request without awaiting it in the caller. Errors are logged, not raised.\"\"\"\n        try:\n            response: Final = await self.send_request(\n                guardrails=guardrails,\n                ingest_data=ingest_data,\n                payload=payload,\n            )","sourceCodeStart":332,"sourceCodeEnd":368,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/akto/akto.py#L332-L368","documentation":"Akto's API could not be reached during a guardrail evaluation; behavior follows unreachable_fallback — fail_open lets the request through with a critical log, fail_closed blocks it. This message accompanies the fail_closed branch.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/akto/akto.py:350 when the library encounters an invalid state.","commonSituations":"Network failure when calling the Akto guardrail service.","solutions":["Verify the Akto service URL is correct and reachable from the proxy.","Check network/firewall rules between the proxy and the Akto service."],"exampleFix":"curl -v $AKTO_GUARDRAIL_API_BASE to test connectivity.","handlingStrategy":"fallback","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"}