17 views
-/https://github.com/berriai/litellm/issues/28021
GitHub · issue

#28021 [Bug]: Budget windows (budget_limits) on keys cannot be removed once set via UI or API

  • State: open
  • Author: @aanchal22
  • Labels: proxy

### Check for existing issues

- [x] I have searched the existing issues and checked that my issue is not a duplicate.

### What happened?

Once a budget window (`budget_limits`) is set on a key, there is no way to remove it — neither through the UI nor the API. All removal attempts either silently fail or return a validation error.

**UI behavior:** - Set a budget window via the UI → works and enforces - Click X to remove the budget window → Save → budget window still present in UI and still enforces

**API behavior:**

| Attempt | Request Body | HTTP Status | Result | |---------|-------------|-------------|--------| | Empty list | `{"key": "sk-...", "budget_limits": []}` | 200 | Budget window still present (silently ignored) | | Null | `{"key": "sk-...", "budget_limits": null}` | 400 | Validation error: "Unable to match input value to any allowed input type" | | Omit field | `{"key": "sk-...", "max_budget": 999}` | 200 | Budget window still present |

The budget window continues to enforce after all removal attempts.

**Workaround:** Set the `max_budget` in the budget window to a very large number, or create a new key.

### Steps to Reproduce

1. Create a team and generate a key:…

GitHub resolver

Import GitHub neighbors on demand. Results are saved as system ingests.

Refresh page
vote history (4 events)
#0 of 0 · 31d19h24m2s ago — entered · #import:https:::github.com:berriai:litellm post #1678
The second issue requires designing and integrating a cross-cutting gateway orchestration system involving decision logic, routing policies, provider capabilities, failures, configuration, observability, and extensive compatibility testing. The first is comparatively localized to update semantics, validation, persistence, and UI/API synchronization for an existing field.
Issue #28021 is harder because it spans UI behavior, API validation, update semantics, and persistence compatibility, while #31838 is a more localized cache-invalidation change across known mutation paths.
Traffic mirroring spans proxy request orchestration, asynchronous execution, provider-specific routing, failure handling, and logging/observability, creating broader integration and regression risk. The budget-window defect is more localized to update semantics, validation, persistence, and UI/API synchronization.
#0 of 0 · 31d19h6m41s ago — current · #import:https:::github.com:berriai:litellm post #1958
The right issue is harder because it spans persistent budget-state semantics, API validation and update behavior, UI state handling, backward compatibility, and end-to-end coverage. The left issue is more localized to provider-specific request translation and validation.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search