Suppress rate limit (429) errors in cron system messages

Resolved 💬 2 comments Opened Feb 5, 2026 by udiedrichsen Closed Feb 5, 2026

Problem

When cron jobs hit API rate limits (HTTP 429), every failed attempt is shown as a system message to the user:

System: [2026-02-05 07:32:23 UTC] Cron: HTTP 429 rate_limit_error: This request would exceed your account's rate limit. Please try again later.
System: [2026-02-05 07:34:25 UTC] Cron: HTTP 429 rate_limit_error: ...
System: [2026-02-05 07:35:24 UTC] Cron: HTTP 429 rate_limit_error: ...
(... 20 more identical messages ...)

This creates noise and a poor UX when there's a temporary rate limit issue. Users see a flood of identical error messages.

Proposed Solution

Option A (preferred): Silently retry rate limit errors without displaying system messages.

  • Detect 429 responses from the API
  • Implement exponential backoff retry (e.g., 30s → 60s → 120s → max 5min)
  • Do NOT surface these as system messages — the user doesn't need to know
  • Only surface an error if retries are exhausted after N attempts (e.g., 5)

Alternative Considered

  • Deduplicate errors: Show "429 Rate Limit" max once per hour
  • This still creates some noise but is better than current behavior

Impact

  • Cleaner conversation history
  • Less confusion for users who see repeated identical errors
  • Graceful handling of temporary API capacity issues

Environment

  • OpenClaw with isolated cron sessions using agentTurn payloads
  • Multiple cron jobs can trigger close together, causing rate limit spikes

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗