Summary
Cron jobs with delivery.mode: announce and delivery.channel: discord fail with Unsupported channel: discord even when the Discord plugin is loaded and functioning for other operations.
Environment
- OpenClaw version: 2026.2.6-3
- OS: Linux 6.8.0-90-generic (x64)
- Node: v22.21.0
Steps to Reproduce
- Create a cron job with isolated session and Discord delivery:
openclaw cron add \
--name "Test Cron" \
--cron "0 15 * * *" \
--session isolated \
--message "Test message" \
--announce \
--channel discord \
--to "1458652710915276885"
-
Run the job: openclaw cron run <jobId>
-
Check run history: openclaw cron runs --id <jobId>
Expected Behavior
The job should run and deliver the output to the Discord channel.
Actual Behavior
- The agent runs successfully and generates output (~69 seconds, real content produced)
- Delivery fails with:
error: "Unsupported channel: discord"
- The Discord plugin shows as
loaded in openclaw plugins list
- Manual sends via
openclaw message send --channel discord ... work fine
- Cron jobs targeting the same channel but using the messaging tool internally succeed
Evidence
{
"status": "error",
"error": "Unsupported channel: discord",
"summary": "[Agent successfully generated content here]",
"durationMs": 69302
}
Meanwhile:
$ openclaw plugins list | grep discord
│ Discord │ discord │ loaded │ ...
Analysis
The error originates from src/infra/outbound/targets.ts line ~130:
const plugin = getChannelPlugin(params.channel);
if (!plugin) {
return {
ok: false,
error: new Error(\`Unsupported channel: ${params.channel}\`),
};
}
This suggests getChannelPlugin('discord') returns undefined in the cron delivery code path, even though the plugin is loaded. This is similar to the fixed issue #1327 where CLI commands had the same problem due to plugin registry not being loaded in certain code paths.
Workaround
Have the agent send the message directly using the discord/message tool in the prompt, bypassing the delivery mechanism.
Possibly Related
Summary
Cron jobs with
delivery.mode: announceanddelivery.channel: discordfail withUnsupported channel: discordeven when the Discord plugin is loaded and functioning for other operations.Environment
Steps to Reproduce
Run the job:
openclaw cron run <jobId>Check run history:
openclaw cron runs --id <jobId>Expected Behavior
The job should run and deliver the output to the Discord channel.
Actual Behavior
error: "Unsupported channel: discord"loadedinopenclaw plugins listopenclaw message send --channel discord ...work fineEvidence
{ "status": "error", "error": "Unsupported channel: discord", "summary": "[Agent successfully generated content here]", "durationMs": 69302 }Meanwhile:
Analysis
The error originates from
src/infra/outbound/targets.tsline ~130:This suggests
getChannelPlugin('discord')returns undefined in the cron delivery code path, even though the plugin is loaded. This is similar to the fixed issue #1327 where CLI commands had the same problem due to plugin registry not being loaded in certain code paths.Workaround
Have the agent send the message directly using the discord/message tool in the prompt, bypassing the delivery mechanism.
Possibly Related