7 views
-/https://github.com/berriai/litellm/issues/27884
GitHub · issue

#27884 [Bug]: Rate limit error message body leaks full SHA-256 token hash on 429 responses

  • State: open
  • Author: @jamiemardis
  • Labels: bug, SDK

### Check for existing issues

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

### What happened?

## Summary

When the parallel request limiter returns a 429 response, the JSON error body includes the full 64-character SHA-256 hash of the offending virtual key in the `error.message` field. This identifier is then visible to any HTTP client that hits the rate limit, including end users / customers of the proxy.

`redact_user_api_key_info: True` in `litellm_settings` does not affect this code path — only Langfuse callback metadata and a few other surfaces.

## Source

`litellm/proxy/hooks/parallel_request_limiter_v3.py`, around line 1261 (in litellm latest as of 2026-05-13 via `ghcr.io/berriai/litellm:main-stable`):

```python detail = ( f"Rate limit exceeded for {descriptor_key}: {descriptor_value}. " f"Limit type: {rate_limit_type}. " f"Current limit: {current_limit}, Remaining: {remaining_display}. " f"Limit resets at: {reset_time_formatted}" )

raise HTTPException( status_code=429, detail=detail, headers={ "retry-after": str(self.window_size), ... }, ) ```

When `descriptor_key == "api_key"`…

GitHub resolver

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

Refresh page
vote history (1 events)
#0 of 0 · 31d17h50m9s ago — entered · #import:https:::github.com:berriai:litellm post #3024
The left item requires a security-sensitive runtime change, careful handling of identifiers across error paths, regression coverage, and validation of client-visible behavior. The right item is primarily a documentation and entitlement-clarification update with limited code risk.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search