/ultrareview consumes free quota when failing due to server-side rate limit
Description
When /ultrareview fails with a server-side error explicitly marked as "not your usage limit" (i.e., Anthropic-side throttling), the failed attempt is still counted against the user's free quota (Free ultrareview X of 3).
This seems unintentional — a failure that the user has no control over should not consume the user's quota.
Steps to reproduce
- Run
/ultrareview <PR#>against a public PR - The cloud review process initializes, runs Setup ✓ Find ✓ Verify ✓, then fails at the Deduplicate step with:
API Error: Server is temporarily limiting requests (not your usage limit) — Rate limited - The tracking session shows "Review failed" at the top
- The user retries with the same
/ultrareview <PR#>command - Counter now shows
Free ultrareview 2 of 3instead of1 of 3— the failed attempt was counted
Expected behavior
Failed reviews caused by server-side rate limits or infrastructure errors should not be counted against the user's free quota. The counter should remain at 1 of 3 until a review actually completes (Setup → Find → Verify → Deduplicate all green).
Actual behavior
The failed attempt counts as 1 of 3 free reviews used, leaving the user with fewer attempts than expected. In our case, after one server-side failure we had 2 of 3 used — meaning a single Anthropic-side rate-limit cost us 33% of our monthly free quota for nothing.
Environment
- Claude Code v2.1.115 on macOS (Darwin 25.4.0)
- Repository: standard Next.js / TypeScript app, public GitHub repo
- Date: 2026-05-05 ~10:45–11:15 Europe/Istanbul
Tracking URLs
- Failed first attempt: https://claude.ai/code/session_01XGqUB5ypRyF5C965oFDVwF
- Retry (running at time of report): https://claude.ai/code/session_018JxERHpK7w4MUxLheyRQt4
Suggested fix
- Detect server-side errors (rate-limit, 5xx, infrastructure failures) before incrementing the quota counter
- OR provide a manual "report failed run" mechanism so users can reclaim quota for failures outside their control
- OR refund quota automatically when a review fails after the Setup/Find phase (the user has no way to influence success at that point)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗