{"record":{"id":"ef050f294e019baa","repo":"BerriAI/litellm","slug":"your-litellm-cli-is-out-of-date-and-uses-a-login-f","errorCode":null,"errorMessage":"Your litellm CLI is out of date and uses a login flow this proxy no longer supports. Upgrade it with `pip install -U 'litellm[proxy]'` and run `litellm-proxy login` again.","messagePattern":"Your litellm CLI is out of date and uses a login flow this proxy no longer supports\\. Upgrade it with `pip install -U 'litellm\\[proxy\\]'` and run `litellm-proxy login` again\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/management_endpoints/ui_sso.py","lineNumber":392,"sourceCode":") -> None:\n    rate_limit_cache_key: Final = _get_cli_sso_start_rate_limit_cache_key(\n        request=request, use_x_forwarded_for=use_x_forwarded_for\n    )\n    current_attempts: Final = cache.increment_cache(\n        key=rate_limit_cache_key,\n        value=1,\n        ttl=_CLI_SSO_START_RATE_LIMIT_WINDOW_SECONDS,\n    )\n    if current_attempts > _CLI_SSO_START_RATE_LIMIT_MAX_ATTEMPTS:\n        raise HTTPException(\n            status_code=429,\n            detail=\"Too many CLI login attempts. Try again later.\",\n        )\n\n\ndef _get_cli_sso_flow_or_raise(login_id: str | None, cache: DualCache) -> dict:\n    if isinstance(login_id, str) and login_id.startswith(\"sk-\"):\n        raise HTTPException(\n            status_code=400,\n            detail=(\n                \"Your litellm CLI is out of date and uses a login flow this proxy no longer supports. \"\n                \"Upgrade it with `pip install -U 'litellm[proxy]'` and run `litellm-proxy login` again.\"\n            ),\n        )\n    if not _is_valid_cli_sso_login_id(login_id):\n        raise HTTPException(status_code=400, detail=\"Invalid CLI login session id\")\n\n    cache_key: Final = _get_cli_sso_flow_cache_key(cast(str, login_id))\n    redis_cache: Final = cache.redis_cache\n    if redis_cache is not None:\n        flow = redis_cache.get_cache(key=cache_key)\n    else:\n        flow = cache.get_cache(key=cache_key)\n    if isinstance(flow, str):\n        try:\n            flow = _as_object(json.loads(flow))","sourceCodeStart":374,"sourceCodeEnd":410,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/ui_sso.py#L374-L410","documentation":"Error \"Your litellm CLI is out of date and uses a login flow this proxy no longer supports. Upgrade it with `pip install -U 'litellm[proxy]'` and run `litellm-proxy login` again.\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/ui_sso.py:392 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Upgrade the CLI with `pip install -U 'litellm[proxy]'` and run `litellm-proxy login` again."],"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"}