BerriAI/litellm · error · HTTPException

object_permission cannot be an empty object; send null to cl

Error message

object_permission cannot be an empty object; send null to clear it, or a non-empty object to set grants

What it means

Empty-object guard on organization update: object_permission was supplied as an object that serializes to no fields (all None). That would wipe existing MCP/vector-store grants without intent, so it is rejected — send null to clear or a non-empty object to set grants.

Source

Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:817

        )

        try:
            validate_model_max_budget(data.model_max_budget)
        except ValueError as e:
            raise HTTPException(status_code=422, detail={"error": str(e)})

    if "organization_alias" in data.model_fields_set and data.organization_alias is None:
        raise HTTPException(
            status_code=422,
            detail={"error": "organization_alias cannot be cleared; it is required"},
        )
    if "models" in data.model_fields_set and data.models is None:
        raise HTTPException(
            status_code=422,
            detail={"error": "models cannot be set to null; send [] to clear it"},
        )
    if data.object_permission is not None and not data.object_permission.model_dump(exclude_none=True):
        raise HTTPException(
            status_code=422,
            detail={
                "error": "object_permission cannot be an empty object; send null to clear it, or a non-empty object to set grants"
            },
        )

    await _verify_org_access(
        organization_id=organization_id,
        user_api_key_dict=user_api_key_dict,
        prisma_client=prisma_client,
    )

    existing_organization_row: Final = await _table(OrganizationRepository(prisma_client)).find_unique(
        where={"organization_id": organization_id},
    )
    if existing_organization_row is None:
        raise HTTPException(
            status_code=404,

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Send null to clear object_permission, or a non-empty object to set grants.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:817 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/f20aaf76f0582d89. Report an issue: GitHub.