BerriAI/litellm · error · ValueError
user_custom_sso must be a coroutine function
Error message
user_custom_sso must be a coroutine function
What it means
Error "user_custom_sso must be a coroutine function" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/management_endpoints/ui_sso.py:2182
ui_access_mode=ui_access_mode,
access_token_payload=None,
jwt_handler=jwt_handler,
return_to=cp_return_to,
)
async def _build_cli_sso_user_defined_values(
result: OpenID | dict,
parsed_openid_result: ParsedOpenIDResult,
) -> SSOUserDefinedValues | None:
from litellm.proxy.proxy_server import user_custom_sso
custom_sso_handler: Final[_CustomSsoCall | None] = user_custom_sso
user_id: Final = parsed_openid_result.get("user_id")
if custom_sso_handler is not None:
if inspect.iscoroutinefunction(custom_sso_handler):
return await custom_sso_handler(result)
raise ValueError("user_custom_sso must be a coroutine function")
if user_id is None:
return None
return SSOUserDefinedValues(
models=[],
user_id=user_id,
user_email=parsed_openid_result.get("user_email"),
max_budget=litellm.max_internal_user_budget,
user_role=parsed_openid_result.get("user_role"),
budget_duration=litellm.internal_user_budget_duration,
)
def _cli_sso_team_detail(team_row: Mapping[str, object]) -> _CliSsoTeamDetail:
team: Final = _TeamRowGrants.model_validate(team_row)
alias_table: Final = team.litellm_model_table
return _CliSsoTeamDetail(
team_id=team.team_id,
team_alias=team.team_alias,View on GitHub (pinned to 77b7c6c40c)
Solutions
- Define user_custom_sso as an async (coroutine) function in the custom auth/SSO module.
When it happens
Trigger: Thrown at litellm/proxy/management_endpoints/ui_sso.py:2182 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/d77102ffdf5e5758.
Report an issue: GitHub.