[BUG] Rate limit errors triggered by unthrottled keystroke API calls in Claude Code Web interface

Status Fixed / completed
Maintainer reply ✓ Yes — amorriscode
Activity 13 comments · opened Nov 9, 2025 · closed Nov 18, 2025
💡 Likely answer: A maintainer (amorriscode, contributor) responded on this thread — see the highlighted reply below.

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

  1. Open Claude Code Web interface
  2. 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")
  3. Open browser DevTools Network panel and filter for "dust/generate_title_and_branch"
  4. 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
  1. Once rate limit is hit, observe cascade of 14+ rapid retry attempts
  2. See multiple error notifications spam the interface

Technical Details

Root causes:

  1. No debouncing: The API call handler is attached directly to the input's onChange event with no debounce delay
  2. Premature API calls: Title generation runs before user has finished composing their thought, making the generated titles meaningless
  3. No retry backoff: When a 429 is received, the code immediately retries multiple times instead of implementing exponential backoff
  4. 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:

  1. Only trigger title generation after message submission, not during typing
  2. 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

View original on GitHub ↗

13 Comments

gerrywastaken · 9 months ago

The label should be area:claude-code-web as it is the frontend causing the requests. This doesn't seem like an API issue, but the client's use of the API.

steebchen · 9 months ago

running into this as well

SoulFireMage · 9 months ago

I'm hitting this. Tried to use it on my phone and just typing causes the issue. Means I cannot use Claude code Web at all. I start to ask it about creating a repository and each keystroke gave me the red box of doom about rate limits..

MTW-Development · 9 months ago

Same issue.
Very weird that they aren't able to fix this faster. Maybe they should start using Claude Code.

Anyways. I got another issue, maybe one of you has experienced something similar. I have used like 7% of the free 250$ and now get this message whenever I click the orange arrow to start a task:
{"type": "exceeded_limit", "resetsAt":
1762999200, "remaining": null, "perModelLimit": false, "representativeClaim": null, "overageStatus": null, "overageResetsAt": null, "overageDisabledReason": null, "windows": null, "debug_req_est_usage": null, "debug_req_actual_usage": null}

gerrywastaken · 9 months ago

I suspect the issue is just

<img width="251" height="190" alt="Image" src="https://github.com/user-attachments/assets/c60b236b-c87d-4c04-863f-345436a716c6" />

With that many bugs it can be difficult to sort thought and spot the critical ones. It is just lost in the noise.

@SoulFireMage Yup. That's the exact bug I pointed out in the issue. They spam themselves with requests when you type, trying to predict what to call the branch name and title.

jcobol · 9 months ago

This bug is a hindrance. Please fix

IMS94 · 9 months ago

I'm also facing the same issue.

gerrywastaken · 9 months ago

Hey stop adding "Me too" comments here

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.

amorriscode contributor · 9 months ago

Got a fix for this. It’ll be released in the next day or so!

gerrywastaken · 9 months ago

Thanks @amorriscode. I haven't seen the red popup in my short use, but I noticed the page is still sending inference requests to Anthropic as people change the beginning of the message. e.g. by deleting characters. Will this still hit rate limits?

https://github.com/user-attachments/assets/437b1940-5fcf-4f7e-8081-9b8f507e4da8

amorriscode contributor · 9 months ago
Thanks @amorriscode. I haven't seen the red popup in my short use, but I noticed the page is still sending inference requests to Anthropic as people change the beginning of the message. e.g. by deleting characters. Will this still hit rate limits? 2025-11-20.01-28-19.mp4

Hey @gerrywastaken, thanks for the video! Can you make sure you're actually on the latest client with a hard refresh? There's a debounce implement and I can't repro what you're showing. 🤔

gerrywastaken · 9 months ago

@amorriscode sorry for the delay. I just tried in a private window, disabled cache and did a hard refresh.

It seems like maybe loading previous conversations has some effect on this as the rate of requests. It seemed to increase near the end of the video 3:30 (ish) after switching the cache back on and selecting coversations.

Perhaps there are multiple handlers each with a debounce being spawened? (just a guess, I didn't check)

I'm running Firefox btw. The low video quality is because github has a 10MB limit. I didn't wish to expose the converation, so I put a black box over that area.

https://github.com/user-attachments/assets/50327b51-1c90-4af8-a295-e348af9c7268

github-actions[bot] · 9 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.