BerriAI/litellm · error · HTTPException

Only a proxy admin can remove a team's max_budget. Team's cu

Error message

Only a proxy admin can remove a team's max_budget. Team's current max_budget={existing_team_max_budget}.

What it means

Budget-growth guard on /team/update: a team admin (authorized but non-proxy-admin) explicitly sets max_budget to None on a team that has a finite cap — removing the spend ceiling. Only proxy admins may do that, so it is refused with 403 naming the current budget.

Source

Thrown at litellm/proxy/management_endpoints/team_endpoints.py:1121

    existing_team_max_budget: float | None,
) -> None:
    """
    Restrict who can grow a standalone team's spend ceiling on /team/update.

    A team admin (already authorized via _verify_team_access) may keep or lower
    the team budget, but only a proxy admin may grow it - by raising max_budget
    above the team's current value or by removing the cap (setting it to None).
    Setting a finite budget on a team that has no cap is a restriction and is
    allowed. Org-scoped teams are governed by _check_org_team_limits().
    """
    if user_api_key_dict.user_role == LitellmUserRoles.PROXY_ADMIN:
        return
    if existing_team_max_budget is None:
        return

    budget_explicitly_set: Final = "max_budget" in (getattr(data, "model_fields_set", None) or set())
    if budget_explicitly_set and data.max_budget is None:
        raise HTTPException(
            status_code=403,
            detail={
                "error": f"Only a proxy admin can remove a team's max_budget. Team's current max_budget={existing_team_max_budget}."
            },
        )

    if data.max_budget is not None and data.max_budget > existing_team_max_budget:
        raise HTTPException(
            status_code=403,
            detail={
                "error": f"Only a proxy admin can raise a team's max_budget. Team's current max_budget={existing_team_max_budget}, requested={data.max_budget}."
            },
        )


def _should_auto_add_team_creator(
    user_api_key_dict: UserAPIKeyAuth,
    general_settings: Mapping[str, object],

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Use a PROXY_ADMIN key to remove a team's max_budget.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/management_endpoints/team_endpoints.py:1121 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/f59a1824f1731bff. Report an issue: GitHub.