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

  1. 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.