Isolated crons, scripts, reminders, and status checkers sent it, but the agent forgot? Put deliveries in the session transcript.
OpenClaw --command crons and external scripts can call
openclaw message send directly. The message reaches the chat, but it bypasses
the agent run loop, so the owning agent's session transcript never records that
delivery.
Cron To Session Transcript sends the message and appends the delivered text into the owning agent's transcript.
openclaw skills install @obuchowski/cron-to-transcriptReplace a bare cron/script send:
openclaw message send --channel telegram -t "$CHAT" --thread-id "$TOPIC" -m "$MSG"with:
bash ~/.openclaw/skills/cron-to-transcript/scripts/send-to-transcript.sh \
--agent ula --account ula \
--to "$CHAT" --thread-id "$TOPIC" \
--source agenda-dispatch \
--message "$MSG"- Sends via
openclaw message send ... --json. - Resolves the owning agent's current
sessionFile. - Appends one transcript-only assistant row with the delivered text.
- Optionally dedupes cron retries with
--idem <key>.
The internal row intentionally uses OpenClaw's existing delivery marker
(provider: "openclaw", model: "delivery-mirror"), because core recognizes
that shape and handles transcript-only delivery rows correctly.
- Reads only
agents/<agent>/sessions/sessions.json. - Appends one JSONL line to the matched transcript.
- Writes state/log files under
<openclaw-home>/cron-to-transcript/. - Runs no model and performs no destructive operations.
- Makes no network calls of its own beyond the
openclaw message sendCLI delivery.
See SECURITY.md for details.
bash scripts/send-to-transcript.sh --dry-run --agent X --to <chat> --thread-id <t> --message "hi"
bash scripts/send-to-transcript.sh --no-send --agent X --to <chat> --thread-id <t> --message "hi"MIT. Issues and PRs: https://github.com/obuchowski/openclaw-cron-to-transcript