#Cron is not working

1 messages · Page 1 of 1 (latest)

hidden falcon
#

HI,

My crone is not working. I added Telegram, channel ID and my DM ID. But none of them were delivered.


          HEARTBEAT_OK — quiet night, nothing urgent.
        
Not delivered
openai/gpt-5.4-mini
openrouter
8873 tokens
4/22/2026, 3:40:16 AM
Run at 4/22/2026, 3:40:03 AM
12708ms
Open run chat```
soft scaffoldBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

late hamletBOT
#

The good news is your cron did run. OK + HEARTBEAT_OK means the scheduler/agent side worked, so this looks like a delivery problem, not a cron-execution problem.

First, can you paste these?

openclaw --version
openclaw status --all
openclaw cron list
openclaw message send --channel telegram --target "<same target you used in cron>" --message "cron test"

A few likely causes here:

  • the cron job has announce on, but the saved channel / to target is missing or invalid
  • the Telegram target is wrong (to must be the actual Telegram chat id, not the bot id)
  • the bot can’t post to that Telegram destination
  • the job was created on an older version and needs normalization
#

Also, if this is an older cron job, run:

openclaw doctor --fix

That one is specifically recommended for legacy cron delivery fields.

One more important detail: the ID in your screenshot looks like a run id, not necessarily the job id. To inspect the job properly:

openclaw cron list
openclaw cron runs --id <job-id> --limit 50

For Telegram delivery, target format should be:

hidden falcon
#

Let's do it step by step, one step at a time to fix the cron and setup

late hamletBOT
#

Yep, let’s do it one step at a time.

Step 1: please run this and paste the output:

openclaw --version

Version mismatch causes a weird amount of cron/delivery issues, so I want to rule that out first.

hidden falcon
#

OpenClaw version: OpenClaw 2026.4.20 (115f05d)
OS: Windows 11
Installed on: WSL2 Ubuntu Linux

late hamletBOT
#

Nice, that version is recent, so we can stop blaming an old build.

Step 2: test Telegram delivery outside cron with the exact same target you used in the cron job:

openclaw message send --channel telegram --target "<same target>" --message "cron test"

Then tell me 2 things:

  1. did the Telegram message arrive?
  2. what output did the command print?

That will tell us immediately whether the problem is Telegram delivery or cron delivery config.

hidden falcon
#

No message

openclaw message send --channel telegram --target "<same target>" --message "cron test" 🦞 OpenClaw 2026.4.20 (115f05d) — I'm not AI-powered, I'm AI-possessed. Big difference. │ ◇ Error: Unknown target "<same target>" for Telegram. Hint: <chatId>

late hamletBOT
#

Ah, yep, that error is expected, you pasted my placeholder literally 😅

Step 2 again: run it with your real Telegram target, ideally your DM chat ID first:

openclaw message send --channel telegram --target 123456789 --message "cron test"

Use:

  • 123456789 for a DM
  • -1001234567890 for a group/channel
  • -1001234567890:topic:42 for a forum topic

Then paste:

  1. the exact command you ran, with the real target
#
  1. the output
  2. whether the message arrived

If you are not sure what target you used in cron, paste the cron To value first and I’ll tell you if it looks right.

hidden falcon
#

7900865099

This is my Telegram ID. Fill the command

late hamletBOT
#

Run this exactly:

openclaw message send --channel telegram --target 7900865099 --message "cron test"

Then paste:

  1. the command output
  2. whether the message arrived in Telegram
hidden falcon
#

Got the message

``

#

openclaw message send --channel telegram --target 7900865099 --message "cron test"                                                                                                                                                                                                                                    🦞 OpenClaw 2026.4.20 (115f05d) — Type the command with confidence—nature will provide the stack trace if needed.                                                                                                                                                                                                                             │                                                                                                                                                                      ◇                                                                                                                                                                      ✅ Sent via Telegram. Message ID: 40   

late hamletBOT
#

Perfect, that narrows it down a lot.

Your Telegram setup works. The problem is now almost certainly the saved cron delivery target/config.

Step 3: run this and paste the output:

openclaw cron list

I want the job ID for the failing cron, then I’ll give you the exact openclaw cron edit ... command to point it at 7900865099.

#

Nice, that confirms Telegram delivery is healthy. So we’re definitely in cron config territory now.

Next step: please run this and paste the output:

openclaw cron list

I need the job ID of the failing cron so I can give you the exact fix command.

hidden falcon
#

I added a cron so It can show on the list

openclaw cron list 🦞 OpenClaw 2026.4.20 (115f05d) — Somewhere between 'hello world' and 'oh god what have I built.' │ ◇ ID Name Schedule Next Last Status Target Delivery Agent ID Model 1d5c2712-57ca-43c6-834a-f8742986ddf2 Night greetings at 2026-04-21 23:18Z in 4m - idle isolated announce -> telegram:7900865099 (explicit) - -

late hamletBOT
#

Nice, this one looks configured correctly:

  • delivery: announce -> telegram:7900865099
  • target: explicit
  • session: isolated

Step 4: manually trigger it now:

openclaw cron run 1d5c2712-57ca-43c6-834a-f8742986ddf2

Then tell me:

  1. what the command printed
  2. whether the Telegram message arrived
#

If it arrives, the old cron was probably just saved with bad delivery settings.

hidden falcon
#

Alright, seems like the telegram is workin now. I'm testing it now on Discord. Ill send the output and the update

late hamletBOT
#

Perfect, that’s a good sign.

If the fresh cron delivers on Telegram and Discord, then the original problem was most likely the old cron’s saved delivery config, not your channel setup.

Send the output when you’ve got it, and we’ll confirm the fix from there.

hidden falcon
#

Discord channel and Telegram cron is working, but DM is not working up. It shows error. My USer ID: 1302991150763999302

late hamletBOT
#

Yep, I think we found the Discord DM issue.

For Discord DMs, the target must be:

user:1302991150763999302

Not just the bare numeric ID. On Discord, bare numeric IDs are treated as channels.

Next step: test a direct Discord DM with the correct target format:

openclaw message send --channel discord --target user:1302991150763999302 --message "discord DM test"

Then tell me:

#
  1. what output it prints
  2. whether the DM arrives

If that works, we’ll use the same user:... format in the cron target.

hidden falcon
#

Got the DM. Ill add now with user format and see

late hamletBOT
#

Nice, that should be the fix.

For future reference:

  • Discord DMuser:<id>
  • Discord channelchannel:<id>
  • Telegram → plain chat id like 7900865099

Try the cron with user:1302991150763999302, and if it works you’re done. Send me the result and I’ll confirm.

hidden falcon
#

It also worked when I clicked on her profile and copied the channel id

late hamletBOT
#

Yep, that also makes sense.

On Discord, a DM can be addressed either as:

  • user:<your-user-id>
  • channel:<dm-channel-id>

So if copying the DM channel id from the profile flow worked, that’s valid too.

The root issue was just this:

  • bare Discord numeric IDs are ambiguous
  • for cron targets, use user:<id> or channel:<id>
  • for Telegram, use the plain chat id

So you should be good now 🎉

#

If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution.
That helps Answer Overflow index it for the next person.

hidden falcon
#

announce (discord -> user:1302991150763999302)

It didn't send. Ill add the crone again and send the cron list

late hamletBOT
#

Hold off on recreating it for a second, I want to catch the failing job while it’s still there.

Next step: run this and paste the Discord DM cron row:

openclaw cron list

If you see more than one cron, paste the one that says it delivers to Discord DM.

After that, I’ll give you the exact next command to inspect the failure reason.

hidden falcon
#

None is still right now. Cause all was onetime run with "at" cron

The output:

openclaw cron list                                                                                                                                                                                                                                                                                                    🦞 OpenClaw 2026.4.20 (115f05d) — I'm not magic—I'm just extremely persistent with retries and coping strategies.                                                                                                                                                                                                                             │                                                                                                                                                                      ◇                                                                                                                                                                      No cron jobs.    ```


This one after I added a cron so itll show in the list:

openclaw cron list 🦞 OpenClaw 2026.4.20 (115f05d) — It's not "failing," it's "discovering new ways to configure the same thing wrong." │ ◇ ID Name Schedule Next Last Status Target Delivery Agent ID Model 6d34f7de-e920-47a4-a937-4707f5bb9bf5 Night Greetings at 2026-04-21 23:51Z in 7m - idle isolated announce -> discord:channel:1302991150763999302 (explicit)

late hamletBOT
#

There it is, we found it.

Your cron is currently targeting:

discord:channel:1302991150763999302

That means OpenClaw is treating your user ID as a channel target, not a DM user target.

Fix this exact job with:

openclaw cron edit 6d34f7de-e920-47a4-a937-4707f5bb9bf5 --announce --channel discord --to "user:1302991150763999302"

Run that, then paste the output. After that we’ll do one final test.

hidden falcon
#

Alright, my PC closed before. Ill run the cron list again and share it here

late hamletBOT
#

Yep, send the new openclaw cron list output.

Also, one important note: cron only runs while the Gateway is actually running, so if the PC/WSL box was closed asleep/off, the one-shot job would not fire during that time.

Paste the list and we’ll pick it up from there.

hidden falcon
#

openclaw cron list                                                                                                                                                                                                                                                                                                                                                                                                                                      🦞 OpenClaw 2026.4.20 (115f05d) — Built by lobsters, for humans. Don't question the hierarchy.                                                                                                                                                                                                                                                                                                                                                                                  │                                                                                                                                                                                                                                       ◇                                                                                                                                                                                                                                       ID                                   Name                     Schedule                         Next       Last       Status    Target    Delivery                                                         Agent ID   Model              ef4aa198-6edc-4a59-bc9c-01ba921004a9 Morning Greeting (Dis... at 2026-04-22 00:35Z             in 7m      -          idle      isolated  announce -> discord:channel:1302991150763999302 (explicit) 

late hamletBOT
#

Yep, same issue again, it’s still saved as:

discord:channel:1302991150763999302

So the To field was entered as a channel target again. For a Discord DM, it must be:

user:1302991150763999302

Run this exact fix:

openclaw cron edit ef4aa198-6edc-4a59-bc9c-01ba921004a9 --announce --channel discord --to "user:1302991150763999302"
#

Then run:

openclaw cron list

and paste the output so I can confirm it saved correctly this time.

hidden falcon
#

openclaw cron list                                                                                                                                                                                                                                                                                                                                                                                                                                      🦞 OpenClaw 2026.4.20 (115f05d) — If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.                                                                                                                                                                                                                                                                                                                                                             │                                                                                                                                                                                                                                       ◇                                                                                                                                                                                                                                       ID                                   Name                     Schedule                         Next       Last       Status    Target    Delivery                                                         Agent ID   Model                                                                                                                                                                                                                                                      ef4aa198-6edc-4a59-bc9c-01ba921004a9 Morning Greeting (Dis... at 2026-04-22 00:35Z             in 5m      -          idle      isolated  announce -> discord:channel:1302991150763999302 (explicit)


Still showing channel

late hamletBOT
#

If the list still shows discord:channel:..., then the edit did not stick.

So the next thing I need is the exact output of the edit command itself.

Please run this exact command and paste its output:

openclaw cron edit ef4aa198-6edc-4a59-bc9c-01ba921004a9 --announce --channel discord --to user:1302991150763999302

Two possibilities now:

  1. the edit command is failing and we’ll see why
  2. it says success, but still rewrites to channel: which would smell like a real bug

Paste the edit output first, then we’ll know which one it is.

hidden falcon
#

This time I added new cron and added

user id: 1302991150763999302

Now the output

c3e89617-4aef-4866-84c4-cb1f6325caa8 Morning Greeting (Dis... at 2026-04-22 00:40Z             in 9m      -          idle      isolated  announce -> discord:user id:1302991150763999302 (explicit)       -          -

Fixed?

late hamletBOT
#

Close, but not fixed yet.

Right now it says:

discord:user id:1302991150763999302

It must be exactly:

user:1302991150763999302

No space, no id.

Fix this exact job:

#
openclaw cron edit c3e89617-4aef-4866-84c4-cb1f6325caa8 --announce --channel discord --to user:1302991150763999302

Then run:

openclaw cron list

and paste the row. I want to see it show:

announce -> discord:user:1302991150763999302
hidden falcon
#

openclaw cron list

late hamletBOT
#

Yep, run:

openclaw cron list

Then paste the output row for that Discord DM cron here. I need to see whether it now says:

announce -> discord:user:1302991150763999302
hidden falcon
#

Now both are showing channel:


ef4aa198-6edc-4a59-bc9c-01ba921004a9 Morning Greeting (Dis... at 2026-04-22 00:35Z             in 1m      -          idle      isolated  announce -> discord:channel:1302991150763999302 (explicit)       -          -                                                                                                                                                                                                                                                          c3e89617-4aef-4866-84c4-cb1f6325caa8 Morning Greeting (Dis... at 2026-04-22 00:40Z             in 6m      -          idle      isolated  announce -> discord:channel:1302991150763999302 (explicit)       -          - 

late hamletBOT
#

Okay, I’m pretty sure this is the workaround path now.

Cron keeps saving your Discord DM target as a channel anyway, so using your user ID there is the wrong thing for this code path.

Use the actual Discord DM channel ID instead, the one you said worked when you copied it from the profile flow.

So the cron target should be:

channel:<your-working-discord-dm-channel-id>

Next step: paste that working DM channel ID here, and I’ll give you the exact openclaw cron edit ... command.

If this workaround is needed, it also smells like a real bug in Discord cron target handling.

hidden falcon
#

Here's the channel ID:

1495627881609429032

I clicked my Bot profile and coped it

late hamletBOT
#

Perfect. Use that DM channel ID as the cron target.

Run this exact command for the newer Discord DM cron:

openclaw cron edit c3e89617-4aef-4866-84c4-cb1f6325caa8 --announce --channel discord --to channel:1495627881609429032

Then run:

openclaw cron list

and paste the row. I want to see it show:

#
announce -> discord:channel:1495627881609429032
hidden falcon
#

If I turn on my PC, then do I need to open Ubuntu terminal and type: openclaw or It'll auto load with bootup?

late hamletBOT
#

Short version:

  • If you installed the daemon/service with openclaw onboard --install-daemon or openclaw gateway install, you should not need to keep a terminal open.
  • If you did not install the daemon, then yes, you need to start it manually, not just openclaw, but the gateway command.
  • On WSL2, cron only works while the WSL Ubuntu + Gateway are actually running. If the PC sleeps/shuts down, cron stops.

The quickest check is:

openclaw gateway status

If it is not installed as a service, install it with:

openclaw gateway install
hidden falcon
#

How do I know if my Web UI is public and can anyone access it or just me and secured?

#

How do I know if my Web UI is public and can anyone access it or just me and secured?

late hamletBOT
#

Good question.

Usually, if you’re opening the UI at http://127.0.0.1:18789 or http://localhost:18789, it is not public. That is local-only.

What decides exposure is mainly:

  • gateway.bind
    • loopback = local machine only
    • lan, tailnet, or custom = reachable beyond localhost
  • gateway.auth.mode
    • token, password, or trusted-proxy = protected
    • none = not protected, risky if non-loopback

So the simple rule is:

  • loopback + token/password = just you, reasonably secured
  • lan/tailnet/custom + token/password = reachable remotely, but protected
#

Yep, this one is not public.

The important lines are:

  • Gateway: bind=loopback (127.0.0.1)
  • Probe note: Loopback-only gateway; only local clients can connect.
  • Listening: 127.0.0.1:18789

So your Web UI is currently:

  • local-only
  • not open to the public internet
  • reachable only from the same machine/WSL side

Also, your gateway service is installed and enabled:

  • Service: systemd (enabled)
#

So that part looks healthy too.

If you ever want remote access later, use Tailscale Serve or an SSH tunnel, not bind=lan. Docs: https://docs.openclaw.ai/web

hidden falcon
#

Alright, so whenever i turn on my PC, the Bot will auto be active?

late hamletBOT
#

Almost, but with one important WSL2 caveat:

  • Yes, your OpenClaw gateway is installed as a systemd service, so it should auto-start when your Ubuntu/WSL environment starts.
  • No, that does not always mean immediately at Windows boot. WSL itself has to be running first.

So the practical version is:

  • PC on + WSL running → bot should be active
  • PC asleep/off → bot is not active
  • Windows booted, but WSL never started yet → bot may not be active yet

The quick check after boot is:

openclaw gateway status
#

If you want truly reliable cron without worrying about sleep/WSL startup, an always-on box like a VPS/Raspberry Pi is the cleaner setup.

hidden falcon
#

Alright, thanks a lot. I'll close the thread now.

late hamletBOT
#

Glad we got you unstuck 🎉

If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution.
That helps Answer Overflow index it for the next person.

If anything weird comes back, open a fresh thread and we’ll dig in.