Install
openclaw skills install openclaw-msg-delivery-guideEnsure later replies actually reach the user in OpenClaw. Use when the user asks for reminders, scheduled checks, follow-up notifications, completion updates, recurring monitoring, or any task where execution and user-visible delivery happen in different steps. Default to cron for scheduled or notification-critical tasks, use subagent completion for background-result handoff, use direct reply when finishing now, and avoid heartbeat unless the user explicitly wants a soft, low-precision follow-up.
openclaw skills install openclaw-msg-delivery-guidePrevent this failure mode:
Treat execution and delivery as separate things. Starting work is not the same as binding a later user-visible message.
Before saying things like:
be able to answer all 3:
If any answer is unclear, resolve the delivery path first: choose the mechanism, bind the target, and only then promise the follow-up.
Default map:
message send: visible result already sent by toolFor anything like:
prefer:
--at for a single future reply--cron for repeated checks--session isolated when the run should execute independently and deliver its own resultDo not default to cron main-session runs unless the user explicitly wants main-session / heartbeat-style behavior.
Starting exec / process / a long-running task only means work has started.
It does not mean the user will later receive an update.
If the user expects a later message, bind a real follow-up path.
Use one-shot cron, not heartbeat.
openclaw cron add \
--name "Reply in 5 minutes" \
--at "5m" \
--session isolated \
--message "Reply to the user with the requested follow-up. If nothing meaningful changed, say that clearly." \
--announce \
--channel <channel> \
--to <destination>
Use subagent when the main need is background execution plus completion report.
Required behavior:
Use recurring cron isolated + explicit delivery.
openclaw cron add \
--name "Hourly site check" \
--cron "0 * * * *" \
--session isolated \
--message "Check the target site. Notify only when there is a real change; otherwise stay silent." \
--announce \
--channel <channel> \
--to <destination>
messageIf the user-visible result has already been delivered via message(action=send), do not send a duplicate normal reply; return only:
NO_REPLY
exec and assume completion will surface automaticallyAfter add/edit:
openclaw cron list~/.openclaw/cron/jobs.jsonFor recurring jobs, do not rely on the schedule before doing this manual trigger once.
Verify at least:
at vs cron)Do not require model verification here; use the default model unless the user explicitly asked for a model override.
When changing a cron job, do not trust CLI output alone; verify the stored job.
Verify:
For long-running work, classify the expected update style before promising follow-up:
For recurring checks, prefer:
When the result should come back to the same chat, derive delivery target from current session metadata instead of hardcoding user-specific identifiers.