BerriAI/litellm · error · HTTPException
return_to does not match the configured control_plane_url
Error message
return_to does not match the configured control_plane_url
What it means
Error "return_to does not match the configured control_plane_url" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/management_endpoints/ui_sso.py:2839
Returns False if control_plane_url is not configured (return_to is ignored).
Raises HTTPException(400) if return_to origin does not match control_plane_url origin.
"""
from litellm.proxy.proxy_server import general_settings
control_plane_url: Final = general_settings.get("control_plane_url")
if control_plane_url is None:
return False
def _origin(url: str) -> tuple:
parsed: Final = urlparse(url)
scheme: Final = (parsed.scheme or "").lower()
hostname: Final = (parsed.hostname or "").lower()
default_port: Final = 443 if scheme == "https" else 80
port: Final = parsed.port if parsed.port is not None else default_port
return (scheme, hostname, port)
if _origin(return_to) != _origin(control_plane_url):
raise HTTPException(
status_code=400,
detail="return_to does not match the configured control_plane_url",
)
return True
@staticmethod
async def get_sso_login_redirect(
redirect_url: str,
google_client_id: str | None = None,
microsoft_client_id: str | None = None,
generic_client_id: str | None = None,
state: str | None = None,
request: Request | None = None,
) -> RedirectResponse | None:
"""
Step 1. Call Get Login Redirect for the SSO provider. Send the redirect response to `redirect_url`
View on GitHub (pinned to 77b7c6c40c)
Solutions
- Use a return_to URL that matches the configured control_plane_url, or fix the control_plane_url setting.
When it happens
Trigger: Thrown at litellm/proxy/management_endpoints/ui_sso.py:2839 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/0cff947db309b737.
Report an issue: GitHub.