From df45d1ba43c65f04bc84b55f809a55df77263a6f Mon Sep 17 00:00:00 2001 From: G1lollipop Date: Fri, 16 Oct 2026 20:34:08 -0500 Subject: [PATCH] fix(proxy): type decoded key permissions explicitly --- .../proxy/management_endpoints/key_management_endpoints.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index 42bc289e8c7..04690c8c606 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -5052,7 +5052,9 @@ async def generate_key_helper_fn( if isinstance(saved_token["metadata"], str): saved_token["metadata"] = json.loads(saved_token["metadata"]) if isinstance(saved_token["permissions"], str): - saved_permissions: Final = TypeAdapter(dict[str, object] | None).validate_json(saved_token["permissions"]) + saved_permissions: Final = TypeAdapter[dict[str, object] | None](dict[str, object] | None).validate_json( + saved_token["permissions"] + ) if saved_permissions is not None and "get_spend_routes" in saved_permissions and premium_user is not True: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, @@ -5061,7 +5063,6 @@ async def generate_key_helper_fn( f"{CommonProxyErrors.not_premium_user.value}" }, ) - saved_token["permissions"] = saved_permissions if isinstance(saved_token["model_max_budget"], str): saved_token["model_max_budget"] = json.loads(saved_token["model_max_budget"]) router_settings = cast(dict | None, saved_token.get("router_settings"))