Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
Matrix cron announce delivery stores the Matrix room ID lowercased when creating a scheduled job, so the agent generates the scheduled final message but delivery fails because Matrix room IDs are case-sensitive.
Steps to reproduce
- Run OpenClaw 2026.4.24 with the Matrix channel enabled.
- Use a Matrix room whose room ID contains uppercase characters, for example
!AbCdEf1234567890:example.org.
- From that Matrix room, ask the agent to send a message in 1 minute.
- Observe that the immediate acknowledgement is sent to the correctly-cased Matrix room ID.
- Inspect the created cron job.
- Wait for the cron job to fire.
Expected behavior
The cron job should preserve the canonical Matrix room ID casing in sessionKey, sessionTarget, and especially delivery.to, or otherwise use preserved Matrix delivery metadata when sending. The scheduled final message should be delivered to the same Matrix room that received the immediate acknowledgement.
Actual behavior
The immediate acknowledgement is delivered successfully to the correctly-cased room ID.
The created cron job stores the same room ID lowercased in both sessionKey and delivery.to. When the cron job fires, the agent generates the final text, but Matrix delivery fails because Synapse rejects the lowercased room ID.
OpenClaw version
2026.4.24
Operating system
Linux 6.8.0-107-generic
Install method
Docker image based on ghcr.io/openclaw/openclaw:2026.4.24-amd64
Model
openai-codex/gpt-5.5
Provider / routing chain
OpenClaw -> openai-codex
Additional provider/model setup details
The model successfully generated the scheduled final text. The failure is in Matrix cron announce delivery, not model execution.
Logs, screenshots, and evidence
# Correctly-cased immediate acknowledgement delivery
setting pendingEvent status to encrypting in !AbCdEf1234567890:example.org event ID ~!AbCdEf1234567890:example.org:m<redacted>.1 -> undefined
setting pendingEvent status to sending in !AbCdEf1234567890:example.org event ID ~!AbCdEf1234567890:example.org:m<redacted>.1 -> undefined
setting pendingEvent status to sent in !AbCdEf1234567890:example.org event ID $<redacted> -> $<redacted>
# Created cron job stores lowercased Matrix room ID
{
"id": "<redacted>",
"agentId": "alpha",
"sessionKey": "agent:alpha:matrix:channel:!abcdef1234567890:example.org",
"sessionTarget": "session:agent:alpha:matrix:channel:!abcdef1234567890:example.org",
"payload": {
"kind": "agentTurn",
"message": "Reminder message",
"timeoutSeconds": 60
},
"delivery": {
"mode": "announce",
"to": "!abcdef1234567890:example.org",
"channel": "matrix"
}
}
# Cron run generated the final text but delivery failed
{
"action": "finished",
"status": "error",
"error": "M_UNKNOWN: MatrixError: [500] non-create event for room of unknown version in !abcdef1234567890:example.org",
"summary": "Ping - one minute's up.",
"delivery": {
"intended": {
"channel": "matrix",
"to": "!abcdef1234567890:example.org",
"source": "explicit"
},
"resolved": {
"ok": true,
"channel": "matrix",
"to": "!abcdef1234567890:example.org",
"accountId": "default",
"source": "explicit"
},
"fallbackUsed": true,
"delivered": false
}
}
Queue 'message' giving up on event ~!abcdef1234567890:example.org:m<redacted>.2
Impact and severity
Affected: Matrix users who use cron announce delivery from rooms with mixed-case Matrix room IDs.
Severity: High for scheduled reminders/cron announcements, because scheduled messages are generated but not delivered.
Frequency: Reproduced on repeated 1-minute reminder attempts from the same mixed-case Matrix room.
Consequence: Missed scheduled Matrix messages; failed one-shot jobs may retry unless removed or moved to failed delivery state.
Additional information
Related but not exact matches:
This report is specifically about cron job creation for Matrix announce delivery: delivery.to is already lowercased in the stored cron job before the scheduled run executes.
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
Matrix cron announce delivery stores the Matrix room ID lowercased when creating a scheduled job, so the agent generates the scheduled final message but delivery fails because Matrix room IDs are case-sensitive.
Steps to reproduce
!AbCdEf1234567890:example.org.Expected behavior
The cron job should preserve the canonical Matrix room ID casing in
sessionKey,sessionTarget, and especiallydelivery.to, or otherwise use preserved Matrix delivery metadata when sending. The scheduled final message should be delivered to the same Matrix room that received the immediate acknowledgement.Actual behavior
The immediate acknowledgement is delivered successfully to the correctly-cased room ID.
The created cron job stores the same room ID lowercased in both
sessionKeyanddelivery.to. When the cron job fires, the agent generates the final text, but Matrix delivery fails because Synapse rejects the lowercased room ID.OpenClaw version
2026.4.24
Operating system
Linux 6.8.0-107-generic
Install method
Docker image based on
ghcr.io/openclaw/openclaw:2026.4.24-amd64Model
openai-codex/gpt-5.5
Provider / routing chain
OpenClaw -> openai-codex
Additional provider/model setup details
The model successfully generated the scheduled final text. The failure is in Matrix cron announce delivery, not model execution.
Logs, screenshots, and evidence
Impact and severity
Affected: Matrix users who use cron announce delivery from rooms with mixed-case Matrix room IDs.
Severity: High for scheduled reminders/cron announcements, because scheduled messages are generated but not delivered.
Frequency: Reproduced on repeated 1-minute reminder attempts from the same mixed-case Matrix room.
Consequence: Missed scheduled Matrix messages; failed one-shot jobs may retry unless removed or moved to failed delivery state.
Additional information
Related but not exact matches:
This report is specifically about cron job creation for Matrix announce delivery:
delivery.tois already lowercased in the stored cron job before the scheduled run executes.