Summary
On OpenClaw 2026.5.19, isolated cron jobs with delivery.mode="announce" to Discord fail at delivery with:
OutboundDeliveryError: discordVoice outbound adapter is unavailable.
The agent run itself succeeds and produces a normal text summary, but outbound delivery is marked failed.
Environment
- OpenClaw:
2026.5.19 (a185ca2)
- Channel: Discord
- Cron job: isolated, announce delivery to Discord channel
- Config:
messages.tts.auto = "always"
Repro Steps
- Configure Discord channel/account and a cron job with
delivery.mode="announce" to a Discord text channel.
- Set
messages.tts.auto to "always".
- Run the cron job manually with
openclaw cron run <job-id>.
- Inspect run history with
openclaw cron runs --id <job-id> --expect-final.
Observed
- Cron execution produces valid summary text.
- Final run status contains:
error: OutboundDeliveryError: discordVoice outbound adapter is unavailable.
delivery.resolved.ok: true (discord target resolved)
delivery.delivered: false
delivery.fallbackUsed: true
Expected
For text-only cron announce delivery targets, outbound should use normal Discord text path and succeed (or gracefully bypass voice route), even when messages.tts.auto="always".
Additional Notes
- Setting
messages.tts.auto to non-always mode (e.g. tagged) avoided the failure in local testing.
- This looks like a regression in Discord + cron + auto-TTS delivery routing.
Example run ids
manual:b6d6d387-11c9-4dbe-b220-83f35d28a987:1779365221918:1
manual:b6d6d387-11c9-4dbe-b220-83f35d28a987:1779368021934:1
Summary
On OpenClaw 2026.5.19, isolated cron jobs with
delivery.mode="announce"to Discord fail at delivery with:OutboundDeliveryError: discordVoice outbound adapter is unavailable.The agent run itself succeeds and produces a normal text summary, but outbound delivery is marked failed.
Environment
2026.5.19 (a185ca2)messages.tts.auto = "always"Repro Steps
delivery.mode="announce"to a Discord text channel.messages.tts.autoto"always".openclaw cron run <job-id>.openclaw cron runs --id <job-id> --expect-final.Observed
error: OutboundDeliveryError: discordVoice outbound adapter is unavailable.delivery.resolved.ok: true(discord target resolved)delivery.delivered: falsedelivery.fallbackUsed: trueExpected
For text-only cron announce delivery targets, outbound should use normal Discord text path and succeed (or gracefully bypass voice route), even when
messages.tts.auto="always".Additional Notes
messages.tts.autoto non-alwaysmode (e.g.tagged) avoided the failure in local testing.Example run ids
manual:b6d6d387-11c9-4dbe-b220-83f35d28a987:1779365221918:1manual:b6d6d387-11c9-4dbe-b220-83f35d28a987:1779368021934:1