-
-
Notifications
You must be signed in to change notification settings - Fork 69.6k
[Matrix] No retry on M_LIMIT_EXCEEDED — message lost permanently #36027
Copy link
Copy link
Closed as not planned
Closed as not planned
Copy link
Description
Problem
When the Matrix homeserver returns M_LIMIT_EXCEEDED with retry_after_ms, OpenClaw does not retry the send and the message is permanently lost.
Reproduction
- Self-hosted Synapse with default rate limiting
- Agent processes a long-running request (10+ minutes due to API timeouts/retries)
- Agent generates reply and attempts to send
- Synapse returns
M_LIMIT_EXCEEDEDwithretry_after_ms: 1120(1.1 seconds) - OpenClaw logs
[matrix] final reply failed: Error: M_LIMIT_EXCEEDED: Too Many Requestsand drops the message
Observed logs
2026-03-05T08:56:31.667Z [diagnostic] lane wait exceeded: lane=session:agent:code:matrix:direct:@vitaliy:m.neomentor.tech waitedMs=743990 queueAhead=0
2026-03-05T11:56:36.733+03:00 MatrixHttpClient (REQ-2382) {
errcode: 'M_LIMIT_EXCEEDED',
error: 'Too Many Requests',
retry_after_ms: 1120
}
2026-03-05T08:56:36.746Z [matrix] final reply failed: Error: M_LIMIT_EXCEEDED: Too Many Requests
Expected behavior
When the homeserver returns M_LIMIT_EXCEEDED with retry_after_ms, OpenClaw should wait the specified time and retry (at least once). The retry_after_ms value is typically small (1-2 seconds), so this would not noticeably delay delivery.
Environment
- OpenClaw: 2026.3.2
- Matrix plugin: @openclaw/matrix 2026.3.2
- Homeserver: Synapse (self-hosted)
- E2EE: enabled
Related
- Plugin/extension channel delivery failures are silent and unrecoverable #29126 (general plugin delivery failures are silent/unrecoverable)
- The built-in Telegram channel likely handles rate limits internally; Matrix should follow the same pattern.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Fields
Give feedbackNo fields configured for issues without a type.