![[Bug]: v1.86.0 regression — UI/SSO/CLI session token's $0.25 max_ui_session_budget incorrectly used as ceiling for /key/generate, blocking n](https://www.chat-gpts.plus/wp-content/uploads/2026/07/29073-96e48c69.jpg)
[Bug]: v1.86.0 regression — UI/SSO/CLI session token’s $0.25 max_ui_session_budget incorrectly used as ceiling for /key/generate, blocking n
快速结论:该报错出现在 LiteLLM v1.86.0 及以上版本中,非管理员用户(包括团队管理员)通过 UI、CLI JWT 或 SSO 登录后,在 Dashboard 或 API 创建 key 时,若 `max_budget` 大于 0.25 美元会报错。优先检查是否为 UI/SSO/CLI 会话令牌误用了 `max_ui_session_budget` 常量。
问题场景
用户使用 LiteLLM Proxy v1.86.0+,以非 admin 角色(如 team admin)通过 UI、实验性 UI JWT、CLI JWT 或 SSO/`/login` 流程登录后,尝试通过 Dashboard 的”Create Key”界面或直接调用 `POST /key/generate` API 创建 key,并设置 `max_budget` 大于 0.25 美元时触发。该限制也适用于为团队创建 key 的场景。
报错原文
{
"error": {
"message": "max_budget (100.0) cannot exceed the caller's own max_budget (0.25).",
"type": "internal_server_error",
"param": "None",
"code": "400"
}
}
原因分析
LiteLLM 在 v1.86.0 版本中引入了委托权限预算上限检查(commit 410ce761dc,对应 GHSA-q775-qw9r-2r4g),该逻辑在 `litellm/proxy/management_endpoints/key_management_endpoints.py:742-756` 中实现。问题在于,当用户通过 UI、CLI JWT 或 SSO 登录时,系统会生成一个合成的 `UserAPIKeyAuth` 令牌,该令牌的 `max_budget` 被硬编码为 `litellm.max_ui_session_budget` 常量(值 0.25 美元),定义在 `litellm/__init__.py:407`。这个常量的本意是限制 Dashboard 中”Test Key”面板的交互聊天成本,而非表达用户对团队预算的管理权限。
新引入的上限检查未区分真实 API 密钥与合成会话令牌,导致该 0.25 美元限额被错误地应用于非管理员用户的 key 创建请求。即使该用户是团队管理员并拥有更高的团队预算权限,也无法创建超过 0.25 美元的 key。
环境排查
- LiteLLM Proxy 版本:v1.86.0 及更新版本
- 用户角色:非 PROXY_ADMIN(如 team admin、internal user)
- 认证方式:UI 会话、实验性 UI JWT、CLI JWT 或 SSO/`/login` 流程
- 请求路径:`POST /key/generate` 或 Dashboard 的”Create Key”界面
解决步骤
- 确认问题一致性(可选):检查 `/key/update` 端点是否存在同样问题。Issue 指出 `/key/update` 缺少相同的预算上限检查,因此可以通过先创建 `max_budget=0` 的 key,再调用 `/key/update` 将 `max_budget` 提高到 100 来绕过限制。这意味着当前行为存在不一致性。
- 临时绕过方案:
- 步骤 A:使用 `POST /key/generate` 创建 key,设置 `{“team_id”: “”, “max_budget”: 0}`(该请求会成功)。
- 步骤 B:使用 `POST /key/update` 更新刚创建的 key,设置 `{“key”: “”, “max_budget”: 100}`(该请求不会触发预算上限检查)。
- 可优先尝试:降级 LiteLLM 至 v1.85.x 版本以恢复预期行为。注意:这将同时移除 GHSA-q775 的安全修复。
- 等待上游修复:Issue 已建议修改委托权限检查逻辑,使其在会话令牌场景下忽略 `user_api_key_dict.max_budget`,或改为查询团队的 `max_budget`。可关注 BerriAI/litellm #29073 的后续修复提交。
验证方法
使用非 admin 用户的 UI 会话令牌或 CLI JWT,尝试创建 `max_budget` 大于 0.25 美元的 key。如果成功返回 key 信息(无 400 错误),或者通过上述临时绕过方案成功创建并更新 key 的预算,则说明问题已规避或修复。



