Significant-Gravitas/AutoGPT · warning · HTTPException
You've used all {config.max_daily_resets} resets for today.
Error message
You've used all {config.max_daily_resets} resets for today. What it means
HTTP 429 from POST /usage/reset (routes.py:1061). The paid reset is capped per day by `max_daily_resets` (default 5, backend/copilot/config.py:380, '0 = unlimited'). When the user's Redis-tracked reset count for today is >= the cap, the endpoint rejects further resets for the rest of the UTC day. This prevents whales from infinitely buying resets.
Source
Thrown at autogpt_platform/backend/backend/api/features/chat/routes.py:1061
)
if daily_limit <= 0:
raise HTTPException(
status_code=400,
detail="No daily limit is configured — nothing to reset.",
)
# Check max daily resets. get_daily_reset_count returns None when Redis
# is unavailable; reject the reset in that case to prevent unlimited
# free resets when the counter store is down.
reset_count = await get_daily_reset_count(user_id)
if reset_count is None:
raise HTTPException(
status_code=503,
detail="Unable to verify reset eligibility — please try again later.",
)
if config.max_daily_resets > 0 and reset_count >= config.max_daily_resets:
raise HTTPException(
status_code=429,
detail=f"You've used all {config.max_daily_resets} resets for today.",
)
# Acquire a per-user lock to prevent TOCTOU races (concurrent resets).
if not await acquire_reset_lock(user_id):
raise HTTPException(
status_code=429,
detail="A reset is already in progress. Please try again.",
)
try:
# Verify the user is actually at or over their daily limit.
# (rate_limit_reset_cost intentionally omitted — this object is only
# used for limit checks, not returned to the client.)
usage_status = await get_usage_status(
user_id=user_id,
daily_cost_limit=daily_limit,View on GitHub (pinned to 9c8bb5550f)
Solutions
- Wait for the UTC-day rollover — the Redis counter (and the daily usage window) resets daily.
- If the product intent allows more resets, raise max_daily_resets in backend/copilot/config.py (or its env var).
- Client-side: parse the 429 detail ('You've used all N resets for today.') and show the remaining-reset count from the usage status instead of the button.
Example fix
# before max_daily_resets: int = Field(default=5, ge=0) # after — allow more paid resets per day max_daily_resets: int = Field(default=10, ge=0)
Defensive patterns
Strategy: try-catch
Validate before calling
// surface remaining resets before the call if the status exposes the count
const usage = await getUsageStatus();
if (usage.resets_used >= usage.max_daily_resets) {
showCountdownToUtcMidnight();
} else {
await post('/chat/usage/reset');
} Try / catch
try { await post('/chat/usage/reset'); } catch (e) { if (e.status === 429 && /resets for today/.test(e.detail)) { showDailyCapReached(); return; } throw e; } Prevention
- Show reset count remaining in the UI before users hit the cap
- Never auto-retry a 429 daily-cap response
- Track that the cap resets at UTC midnight when displaying messaging
When it happens
Trigger: The user has already performed config.max_daily_resets successful resets today (count tracked via increment_daily_reset_count) and calls /usage/reset again. max_daily_resets > 0 (default 5).
Common situations: Heavy CoPilot users burning through their daily cost cap 5+ times in one day; scripts or automations retrying resets; support tickets from power users the day after a release that lowered the cap.
Related errors
- Rate limit reset is not available.
- Rate limit reset is not available (credit system is disabled
- No daily limit is configured — nothing to reset.
- Your weekly limit is also reached. Resetting the daily limit
- Insufficient credits to reset your rate limit.
AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14).
Data as JSON: /api/errors/6d3a943c6d1ab0bc.
Report an issue: GitHub.