Significant-Gravitas/AutoGPT · error · HTTPException

No daily limit is configured — nothing to reset.

Error message

No daily limit is configured — nothing to reset.

What it means

HTTP 400 from POST /usage/reset (routes.py:1046). After fetching the user's effective limits via get_global_rate_limits, the endpoint checks that a daily cost limit exists (daily_limit > 0). If the resolved daily_cost_limit_microdollars is 0 there is no daily counter to clear, so the paid reset would buy nothing and the request is rejected. Note the config comment in copilot/config.py: '0 means no spend allowed', so a 0 limit can also come from tier overrides.

Source

Thrown at autogpt_platform/backend/backend/api/features/chat/routes.py:1046

        raise HTTPException(
            status_code=400,
            detail="Rate limit reset is not available.",
        )

    if not settings.config.enable_credit:
        raise HTTPException(
            status_code=400,
            detail="Rate limit reset is not available (credit system is disabled).",
        )

    daily_limit, weekly_limit, tier = await get_global_rate_limits(
        user_id,
        config.daily_cost_limit_microdollars,
        config.weekly_cost_limit_microdollars,
    )

    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.",
        )

View on GitHub (pinned to 9c8bb5550f)

Solutions

  1. Check the user's tier overrides and global config: set daily_cost_limit_microdollars to a positive value for that tier (backend/copilot/config.py:366 area or tier override source).
  2. If a 0-limit tier is intentional (blocked users), surface that state in the UI as 'no daily allowance' instead of offering a paid reset.
  3. Client-side: read the daily limit from the usage-status endpoint before offering the reset button.

Example fix

# before
# tier override zeroes the daily cap -> /usage/reset returns 400
daily_cost_limit_microdollars = 0

# after
# give the tier a real daily cap so the reset has meaning
daily_cost_limit_microdollars = 2_000_000  # $2.00/day in microdollars
Defensive patterns

Strategy: validation

Validate before calling

// fetch effective limits before offering a reset
const usage = await getUsageStatus();
if (usage.daily.limit <= 0) {
  showNotice('Your plan has no daily allowance to reset');
} else if (usage.daily.used >= usage.daily.limit) {
  await post('/chat/usage/reset');
}

Try / catch

try { await post('/chat/usage/reset'); } catch (e) { if (e.status === 400 && /nothing to reset/.test(e.detail)) { showPlanNotice(); return; } throw e; }

Prevention

When it happens

Trigger: Calling /usage/reset when the user's tier resolves daily_cost_limit_microdollars to 0 — either the global config default is 0 or the user's tier override sets 0. get_global_rate_limits(user_id, config.daily_cost_limit_microdollars, ...) returned 0 for the daily slot.

Common situations: Tier-based limit overrides that zero out the daily cap for trial/blocked tiers; a fresh deployment that never set DAILY_COST_LIMIT_MICRODOLLARS and defaults to 0; user confusion between 'blocked tier' (limit 0) and 'hit my limit'.

Related errors


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