[BUG] Rate limit errors triggered by unthrottled keystroke API calls in Claude Code Web interface
Hi please stop adding "Me too" comments here. They are likely never seen.
If you are encountering the same issue, feel free to post your screen shot under:
https://x.com/Gerry/status/1988742652335116677?s=20
That way Anthropic sees a visual of how many of us are encountering this problem (reply notifications propagate up) and they are all in one place so we can see how many.
----
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
TLDR: You are DDoSing yourselves and blaming users with a flood of popups
😁
<img width="1642" height="341" alt="Image" src="https://github.com/user-attachments/assets/ea7fd31a-6d2c-43c7-abf4-d9befbc7d35c" />
The Claude Code Web interface makes an API call to /api/organizations/{org_id}/dust/generate_title_and_branch on every single keystroke while typing a message in the input box. This results in excessive API calls that trigger rate limiting (429 errors) before the user has even submitted their message. When rate limited, the retry logic fires off multiple immediate retry attempts with no backoff, causing a cascade of 14+ additional 429 errors in rapid succession. Users are shown repeated error messages blaming them for exceeding rate limits when they are simply typing normally.
<img width="1195" height="1849" alt="Image" src="https://github.com/user-attachments/assets/e08f4851-5611-4319-a560-0220375c0b57" />
What Should Happen?
The title and branch name generation should only occur once, after the user submits their complete message, not on every keystroke. Retry logic should implement exponential backoff to prevent cascading failures when rate limits are hit.
Error Messages/Logs
Console shows multiple errors:
Uncaught (in promise) Error: Number of concurrent connections has exceeded your rate limit. Please try again later or contact sales at https://www.anthropic.com/contact-sales to discuss your options for a rate limit increase.
NextJS 41
4 4328-bc19f3d4d818915c.js:1:12246
Network panel shows:
* Repeated POST requests to https://claude.ai/api/organizations/{org_id}/dust/generate_title_and_branch
* First 429 response triggers 14 immediate retry attempts
* All retries also receive 429 responses
* Each 429 generates a user-facing error notification
Steps to Reproduce
- Open Claude Code Web interface
- Start typing a message in the input box (e.g., "Ok now I want to do some work to improve the UI and UX however to do this we likely need to")
- Open browser DevTools Network panel and filter for "dust/generate_title_and_branch"
- Observe that a POST request is fired for every keystroke:
- After typing "Ok now I want to do some work to improve the UI and however to do this we likely need t" → API call with this partial text
- After typing next character "o" → Another API call with "...need to"
- Continue for every keystroke
- Once rate limit is hit, observe cascade of 14+ rapid retry attempts
- See multiple error notifications spam the interface
Technical Details
Root causes:
- No debouncing: The API call handler is attached directly to the input's onChange event with no debounce delay
- Premature API calls: Title generation runs before user has finished composing their thought, making the generated titles meaningless
- No retry backoff: When a 429 is received, the code immediately retries multiple times instead of implementing exponential backoff
- Resource waste: Each keystroke generates a separate LLM inference call that is immediately discarded when the next keystroke occurs
Example API payloads observed:
{"first_session_message":"Ok now I want to do some work to improve the UI and however to do this we likely need t"}
{"first_session_message":"Ok now I want to do some work to improve the UI and UX however to do this we likely need to"}
Example API responses (immediately discarded):
{"title":"Improve UI and resolve dependencies","branch_name":"claude/improve-ui"}
Claude Model
Sonnet 4.5
Is this a regression?
Unknown
Last Working Version
N/A
Claude Code Version
Web interface (latest as of November 9, 2025)
Platform
Anthropic API
Operating System
Linux (Ubuntu)
Terminal/Shell
N/A - Web Interface
Proposed fixes:
- Only trigger title generation after message submission, not during typing
- Implement exponential backoff in retry logic (e.g., 1s, 2s, 4s, 8s delays)
Impact:
- Users cannot use the product normally due to rate limiting from typing
- Wasted compute resources generating titles for incomplete messages
- Poor user experience with spam of error notifications
- Users are blamed for "excessive connections" when the issue is purely client-side implementation
Browser information:
Testing performed in Firefox on Linux
This issue has 13 comments on GitHub. Read the full discussion on GitHub ↗