BerriAI/litellm · error · HTTPException
Guardrail is not pending review (status={row.status})
Error message
Guardrail is not pending review (status={row.status}) What it means
State check in the guardrail approval flow: the submission's status is not pending_review (its actual status is embedded), so it cannot be approved — it was already approved, rejected, or deactivated.
Source
Thrown at litellm/proxy/guardrails/guardrail_endpoints.py:1014
guardrail_id: str,
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
):
"""Approve a pending guardrail submission: set status to active and initialize in memory (admin only)."""
from litellm.proxy.guardrails.guardrail_registry import IN_MEMORY_GUARDRAIL_HANDLER
from litellm.proxy.proxy_server import prisma_client
if user_api_key_dict.user_role != LitellmUserRoles.PROXY_ADMIN:
raise HTTPException(status_code=403, detail="Admin access required")
if prisma_client is None:
raise HTTPException(status_code=500, detail="Prisma client not initialized")
try:
row: Final = await _guardrails_table(prisma_client).find_unique(where={"guardrail_id": guardrail_id})
if row is None:
raise HTTPException(status_code=404, detail="Guardrail submission not found")
if row.status != "pending_review":
raise HTTPException(
status_code=400,
detail=f"Guardrail is not pending review (status={row.status})",
)
now: Final = datetime.now(timezone.utc)
await _guardrails_table(prisma_client).update(
where={"guardrail_id": guardrail_id},
data={"status": "active", "reviewed_at": now, "updated_at": now},
)
litellm_params: Final = _parse_json_field(row.litellm_params)
guardrail_info: Final = _parse_json_field(row.guardrail_info)
if not litellm_params:
raise HTTPException(
status_code=500,
detail="Guardrail litellm_params is missing or invalid",
)
guardrail_dict: Final = {View on GitHub (pinned to 77b7c6c40c)
Solutions
- Only review submissions whose status is pending; check the current status first.
Example fix
Fetch the submission to confirm status=pending before approving/rejecting.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/guardrails/guardrail_endpoints.py:1014 when the library encounters an invalid state.
Common situations: The guardrail submission was already reviewed (approved/rejected).
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/77d6b391bd65ab8e.
Report an issue: GitHub.