openclaw - 💡(How to fix) Fix [Bug] Isolated cron session delivery fails with 'Channel is required' even when delivery.channel is explicitly set [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#60921Fetched 2026-04-08 02:45:37
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Error Message

[cron:d9adc227-...] Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.

Channel plugin is running normally — multiple successful outbound messages via wecom-outbound are visible in the same log file.

Root Cause

Using sessionTarget: "main" + payload.kind: "systemEvent" works because the main session always has channel context.

Fix Action

Workaround

Using sessionTarget: "main" + payload.kind: "systemEvent" works because the main session always has channel context.

Code Example

Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.

---

{
  "sessionTarget": "isolated",
  "payload": { "kind": "agentTurn", "message": "..." },
  "delivery": {
    "mode": "announce",
    "channel": "wecom",
    "to": "wecom:SXF7526",
    "accountId": "default",
    "bestEffort": true
  }
}

---

[cron:d9adc227-...] Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.
RAW_BUFFERClick to expand / collapse

Bug Description

When a cron job uses sessionTarget: "isolated" with delivery.mode: "announce" and explicitly sets delivery.channel, delivery.to, delivery.accountId, and delivery.bestEffort: true, the delivery still fails with:

Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.

Environment

  • OpenClaw version: 2026.4.2
  • Node: v22.22.1
  • OS: Linux 6.8.0-101-generic (x64)
  • Channel: wecom (enterprise WeChat bot, WebSocket mode)

Steps to Reproduce

  1. Configure a cron job with the following settings:
{
  "sessionTarget": "isolated",
  "payload": { "kind": "agentTurn", "message": "..." },
  "delivery": {
    "mode": "announce",
    "channel": "wecom",
    "to": "wecom:SXF7526",
    "accountId": "default",
    "bestEffort": true
  }
}
  1. Wait for the cron job to trigger automatically (not manually via dashboard)
  2. The agent completes successfully and generates a summary, but delivery fails

Observed Behavior

  • Manual trigger (via OpenClaw dashboard "Run" button): delivery succeeds ✅
  • Automatic trigger: delivery fails with Channel is required

The difference appears to be that manual triggers inherit the active session's channel context, while auto-triggered isolated sessions start completely fresh and cannot resolve the delivery channel from the job configuration alone.

Expected Behavior

When delivery.channel is explicitly set, the delivery layer should resolve the channel from the global channel registry, regardless of whether the session has prior channel context.

Workaround

Using sessionTarget: "main" + payload.kind: "systemEvent" works because the main session always has channel context.

Logs

[cron:d9adc227-...] Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.

Channel plugin is running normally — multiple successful outbound messages via wecom-outbound are visible in the same log file.

extent analysis

TL;DR

Set sessionTarget to "main" instead of "isolated" to ensure channel context is available for delivery.

Guidance

  • Verify that the delivery.channel is correctly set to "wecom" in the cron job configuration.
  • Check the channel plugin logs to confirm that the wecom channel is properly configured and running.
  • Consider using the provided workaround by setting sessionTarget to "main" and payload.kind to "systemEvent" as a temporary solution.
  • Review the OpenClaw documentation to see if there are any specific requirements or limitations for using sessionTarget: "isolated" with delivery.mode: "announce".

Example

No code snippet is provided as the issue is more related to configuration and session management.

Notes

The issue seems to be related to the session context and how it affects the delivery layer's ability to resolve the channel. The provided workaround suggests that using a main session can resolve the issue, but it may have other implications that need to be considered.

Recommendation

Apply the workaround by setting sessionTarget to "main" and payload.kind to "systemEvent", as it has been confirmed to work in the provided test case. This change allows the delivery layer to inherit the active session's channel context, ensuring that the channel is properly resolved.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING