Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fix common cron job failures in Clawdbot/Moltbot - message delivery issues, tool timeouts, timezone bugs, and model fallback problems.
.claude/skills/sundial-org-ez-cronjob/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 86% | 0% |
A comprehensive guide to diagnosing and fixing cron job issues in Clawdbot/Moltbot. This skill documents common failure patterns and their solutions, learned through production debugging.
Use this skill when:
cron toolAlways use these flags together for reliable delivery:
bashclawdbot cron add \ --name "my-job" \ --cron "0 9 * * 1-5" \ --tz "America/New_York" \ --session isolated \ --message "[INSTRUCTION: DO NOT USE ANY TOOLS] Your prompt here" \ --deliver --channel telegram --to "CHAT_ID" \ --best-effort-deliver
| Flag | Purpose | Why It Matters | |------|---------|----------------| | --session isolated | Creates dedicated session | Prevents message loss in busy conversations | | --tz "TIMEZONE" | Sets explicit timezone | Avoids UTC confusion | | --deliver | Sends to channel | Required for Telegram/WhatsApp | | --best-effort-deliver | Don't fail on delivery error | Graceful degradation |
cron Tool Deadlockcron list or cron addThe internal cron tool creates a deadlock between the agent process and gateway.
Never use the cron tool directly. Use exec (or bash) instead:
bash# CORRECT - uses exec to bypass deadlock exec: clawdbot cron list exec: clawdbot cron add --name "reminder" --at "+5m" --message "Hello" # INCORRECT - causes timeout cron list # DO NOT USE cron add ... # DO NOT USE
If you're an AI agent reading this: when the user asks you to manage cron jobs, always use the exec/bash tool to run clawdbot cron commands. Never invoke the cron tool directly.
Using --session main or --system-event causes messages to get lost when there's an active conversation in the main session.
Always use --session isolated:
bash# CORRECT - isolated session, guaranteed delivery clawdbot cron add \ --name "daily-standup" \ --cron "0 9 * * 1-5" \ --session isolated \ --deliver --channel telegram --to "-100XXXXXXXXXX" # INCORRECT - messages can be lost clawdbot cron add \ --name "daily-standup" \ --session main \ --system-event \ ...
After creating a job, test it:
bash# Run the job immediately to verify delivery clawdbot cron run <job-id>
Missing timezone specification defaults to UTC.
Always specify timezone explicitly:
bash# CORRECT - explicit timezone clawdbot cron add \ --cron "0 9 * * 1-5" \ --tz "America/New_York" \ ... # INCORRECT - defaults to UTC clawdbot cron add \ --cron "0 9 * * 1-5" \ ...
| Region | Timezone ID | |--------|-------------| | US Eastern | America/New_York | | US Pacific | America/Los_Angeles | | UK | Europe/London | | Central Europe | Europe/Berlin | | India | Asia/Kolkata | | Japan | Asia/Tokyo | | Australia Eastern | Australia/Sydney | | Brazil | America/Sao_Paulo | | Bolivia | America/La_Paz |
exec, read, or other tools when it shouldn'tSome fallback models (especially smaller/faster ones) don't follow system instructions as strictly as primary models.
Embed instructions directly in the message:
bash# CORRECT - instruction embedded in message clawdbot cron add \ --message "[INSTRUCTION: DO NOT USE ANY TOOLS. Respond with text only.] Generate a motivational Monday message for the team." # INCORRECT - relies only on system prompt clawdbot cron add \ --message "Generate a motivational Monday message for the team."
text[INSTRUCTION: DO NOT USE ANY TOOLS. Write your response directly.] Your actual prompt here. Be specific about what you want.
bash# Check job details clawdbot cron show <job-id> # Check recent logs tail -100 /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep -i cron # Check gateway errors tail -50 ~/.clawdbot/logs/gateway.err.log
| Cause | Fix | |-------|-----| | Model quota exceeded | Wait for quota reset or switch model | | Invalid chat ID | Verify channel ID with --to | | Bot removed from group | Re-add bot to Telegram group | | Gateway not running | clawdbot gateway restart |
If nothing works:
bash# Remove the problematic job clawdbot cron rm <job-id> # Restart gateway clawdbot gateway restart # Recreate with correct flags clawdbot cron add ... (with all recommended flags)
bashclawdbot cron list
bashclawdbot cron show <job-id>
bashclawdbot cron run <job-id>
bash# Today's logs filtered for cron tail -200 /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep -i cron # Gateway errors tail -100 ~/.clawdbot/logs/gateway.err.log # Watch logs in real-time tail -f /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep --line-buffered cron
bashclawdbot gateway restart
bashclawdbot cron add \ --name "daily-standup-9am" \ --cron "0 9 * * 1-5" \ --tz "America/New_York" \ --session isolated \ --message "[INSTRUCTION: DO NOT USE ANY TOOLS. Write directly.] Good morning team! Time for our daily standup. Please share: 1. What did you accomplish yesterday? 2. What are you working on today? 3. Any blockers? @alice @bob" \ --deliver --channel telegram --to "-100XXXXXXXXXX" \ --best-effort-deliver
bashclawdbot cron add \ --name "quick-reminder" \ --at "+20m" \ --delete-after-run \ --session isolated \ --message "[INSTRUCTION: DO NOT USE ANY TOOLS.] Reminder: Your meeting starts in 10 minutes!" \ --deliver --channel telegram --to "-100XXXXXXXXXX" \ --best-effort-deliver
bashclawdbot cron add \ --name "weekly-report-friday" \ --cron "0 17 * * 5" \ --tz "America/New_York" \ --session isolated \ --message "[INSTRUCTION: DO NOT USE ANY TOOLS.] Happy Friday! Time to wrap up the week. Please share your weekly highlights and any items carrying over to next week." \ --deliver --channel telegram --to "-100XXXXXXXXXX" \ --best-effort-deliver
Before creating any cron job, verify:
exec: clawdbot cron add (not the cron tool directly)--session isolated is set--tz "YOUR_TIMEZONE" is explicit--deliver --channel CHANNEL --to "ID" for message delivery--best-effort-deliver for graceful failures[INSTRUCTION: DO NOT USE ANY TOOLS]clawdbot cron run <id> after creationSkill authored by Isaac Zarzuri. Based on production debugging experience with Clawdbot/Moltbot.
Other measured skills in the registry, with their headline benchmark lift.