-
-
Notifications
You must be signed in to change notification settings - Fork 69.4k
[Bug]: False 'API rate limit reached' on all models despite APIs being fully functional #32828
Description
Summary
OpenClaw displays ⚠️ API rate limit reached. Please try again later. for every configured model, even though the underlying APIs are fully functional and responding correctly when tested outside of OpenClaw.
I have verified that the same API keys work perfectly with Claude Code and Qwen Code — requests go through without any rate limit issue. The problem is exclusively within OpenClaw's gateway/cooldown mechanism.
Steps to reproduce
- Configure multiple models in OpenClaw (e.g., Claude, Qwen, or any other provider)
- Send a message in any chat
- All models return the "API rate limit reached" error
- Test the same API keys directly with Claude Code or Qwen Code → they work fine
Expected behavior
If the upstream API is responding normally and not returning 429 errors, OpenClaw should relay the response to the user without showing rate limit warnings.
Actual behavior
Every model configured in OpenClaw responds with:
⚠️ API rate limit reached. Please try again later.
No model is usable, despite the APIs being confirmed as functional through external clients.
Environment
- Models affected: All configured models (Claude, Qwen, etc.)
- Verified working with: Claude Code (CLI), Qwen Code — same API keys, no rate limit
Possibly related issues
- [Bug]: after updating to 2026.2.22-2 all models break #24839 — All models break after update with false rate limit
- 500/503 errors misclassified as rate_limit, triggering unnecessary cooldowns #22294 — 500/503 errors misclassified as
rate_limit, triggering unnecessary cooldowns - [Bug]: Model-Specific google-gemini-cli 429 Error Triggers Global Auth Profile Cooldown (Killing Fallbacks) #13623 — Model-specific 429 triggers global auth profile cooldown
- Anthropic API key fallback not triggered when subscription hits rate limit — both providers share cooldown bucket #30030 — Providers sharing cooldown bucket despite being separate
This seems to be part of a broader pattern where OpenClaw's cooldown/rate-limit detection is overly aggressive or misclassifies non-rate-limit errors, effectively locking out all models even when the APIs are healthy.