BerriAI/litellm · error · HTTPException
🚨🚨🚨 DISABLING ADMIN ENDPOINTS is an Enterprise…
Error message
🚨🚨🚨 DISABLING ADMIN ENDPOINTS is an Enterprise feature 🚨 You must be a LiteLLM Enterprise user to use this feature. If you have a license please set `LITELLM_LICENSE` in your env. Get a 7 day trial key here: https://www.litellm.ai/enterprise#trial. Pricing: https://www.litellm.ai/#pricing
What it means
Raised as HTTPException 500 by EnterpriseRouteChecks.is_management_routes_disabled when the DISABLE_ADMIN_ENDPOINTS env var is present in the environment but premium_user is False. Like the LLM API variant, this admin-endpoint lockdown is enterprise-only, and merely having the variable defined triggers the license check before its boolean value is even read.
Solutions
- Remove DISABLE_ADMIN_ENDPOINTS from the environment (delete the key, do not set 'false') and restart the proxy
- Set a valid LITELLM_LICENSE if you genuinely need admin endpoints disabled
- Search all layers for the variable: docker inspect, helm get values, kubectl describe pod, CI secrets
- As a community alternative, restrict admin routes with virtual keys/roles instead of the env var
Example fix
# before export DISABLE_ADMIN_ENDPOINTS=true # no license -> 500 on startup/requests # after unset DISABLE_ADMIN_ENDPOINTS # or: export LITELLM_LICENSE=<valid-key>
Defensive patterns
Strategy: validation
Validate before calling
import os
if "DISABLE_ADMIN_ENDPOINTS" in os.environ and not licensed():
# either fail the deploy loudly or strip the var
raise RuntimeError("DISABLE_ADMIN_ENDPOINTS requires an Enterprise license") Prevention
- Keep enterprise env vars out of community deployments' base images
- Pair every gated env var with a license presence assertion in deploy scripts
- Use secrets management so gated vars are injected only into licensed releases
When it happens
Trigger: Setting DISABLE_ADMIN_ENDPOINTS in the proxy environment on a community/free deployment; inheriting it from a shared base image or helm values file; setting it to 'false' expecting it to be off (presence still triggers the check).
Common situations: Hardening a proxy by disabling /user, /team, /key admin routes using the env var without a license; env leftovers after a trial expired; helm chart values that define the key globally across environments.
Related errors
- 🚨🚨🚨 DISABLING LLM API ENDPOINTS is an Enterprise…
- License is over limit. Please contact support@berri.ai to…
- Setting tag-based guardrails is only available in…
- Trying to use ENTERPRISE BannedKeywordYou must be a LiteLLM…
- Trying to use ENTERPRISE BlockedUserYou must be a LiteLLM…
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/11074723ba3d7faf.
Report an issue: GitHub.
Appendix: source
Thrown at enterprise/litellm_enterprise/proxy/auth/route_checks.py:37
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"🚨🚨🚨 DISABLING LLM API ENDPOINTS is an Enterprise feature\n🚨 {CommonProxyErrors.not_premium_user.value}",
)
return get_secret_bool("DISABLE_LLM_API_ENDPOINTS") is True
@staticmethod
def is_management_routes_disabled() -> bool:
"""
Check if management route is disabled
"""
from litellm.proxy._types import CommonProxyErrors
from litellm.proxy.proxy_server import premium_user
from litellm.secret_managers.main import get_secret_bool
if "DISABLE_ADMIN_ENDPOINTS" in os.environ:
if not premium_user:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"🚨🚨🚨 DISABLING ADMIN ENDPOINTS is an Enterprise feature\n🚨 {CommonProxyErrors.not_premium_user.value}",
)
return get_secret_bool("DISABLE_ADMIN_ENDPOINTS") is True
# Routes that should remain accessible even when LLM API endpoints are disabled.
# These are read-only model listing routes needed by the Admin UI.
LLM_API_EXEMPT_ROUTES = ["/models", "/v1/models"]
@staticmethod
def should_call_route(route: str):
"""
Check if management route is disabled and raise exception
"""
from litellm.proxy.auth.route_checks import RouteChecks
if (View on GitHub (pinned to 77b7c6c40c)