Problem
When the Slack message tool encounters message_not_found or fileId required errors, the agent retries in a tight loop rather than failing fast. This burns through API rate limits and cascades into failures for all other sessions (cron jobs, heartbeats, etc).
What happened
A Slack session got stuck retrying message_not_found (9 rapid retries) and fileId required (4 retries) on a thread target. This exhausted the Anthropic API rate limit, which then caused every subsequent heartbeat (every 15 min) and cron job to fail for ~4 hours.
Suggested fixes
-
Fail fast on non-retryable Slack errors: message_not_found, fileId required, channel_not_found are permanent errors — retrying won't help. The tool should return an error to the agent immediately instead of retrying.
-
Rate limit isolation: Ideally, rate limit budget for cron/heartbeat sessions should be isolated from interactive/Slack sessions, so one runaway session can't starve everything else.
-
Circuit breaker for message tool: After N consecutive failures on the same target, stop retrying and surface the error.
Environment
- OpenClaw version: 2026.3.2
- Channel: Slack (Socket Mode)
- Model: anthropic/claude-opus-4-6
Logs
[tools] message failed: fileId required (x4)
[tools] message failed: message_not_found (x9)
API rate limit reached (every 15 min, 4-5 retries each, ~4 hours total)
Problem
When the Slack message tool encounters
message_not_foundorfileId requirederrors, the agent retries in a tight loop rather than failing fast. This burns through API rate limits and cascades into failures for all other sessions (cron jobs, heartbeats, etc).What happened
A Slack session got stuck retrying
message_not_found(9 rapid retries) andfileId required(4 retries) on a thread target. This exhausted the Anthropic API rate limit, which then caused every subsequent heartbeat (every 15 min) and cron job to fail for ~4 hours.Suggested fixes
Fail fast on non-retryable Slack errors:
message_not_found,fileId required,channel_not_foundare permanent errors — retrying won't help. The tool should return an error to the agent immediately instead of retrying.Rate limit isolation: Ideally, rate limit budget for cron/heartbeat sessions should be isolated from interactive/Slack sessions, so one runaway session can't starve everything else.
Circuit breaker for message tool: After N consecutive failures on the same target, stop retrying and surface the error.
Environment
Logs