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

  1. Wait for the UTC-day rollover — the Redis counter (and the daily usage window) resets daily.
  2. If the product intent allows more resets, raise max_daily_resets in backend/copilot/config.py (or its env var).
  3. 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

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


AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14). Data as JSON: /api/errors/6d3a943c6d1ab0bc. Report an issue: GitHub.