---
title: Cron Jobs
area: automation
tags: [automation, health, assistant, cron]
created: 2026-03-18
updated: 2026-04-28
status: active
related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Plans/Daily Schedule]]
---

# OpenClaw Cron Jobs

This note reflects the **live OpenClaw cron inventory** as checked on 2026-04-13.

All jobs run via the OpenClaw cron scheduler.

## Enabled jobs

### obsidian-inbox-watcher
- **Agent:** `automation`
- **Schedule:** every 5 minutes
- **Session target:** isolated
- **Purpose:** watches `/mnt/swarm-common/obsidian-vault/will/inbox/` for inbound notes, classifies them, handles them, moves them to `processed/`, and notifies Will via Telegram

### Daily follow-up: Discord Unknown Channel bug
- **Agent:** `main`
- **Schedule:** daily at `15:00 UTC`
- **Session target:** main
- **Purpose:** reminder to review the tracked Discord outbound `Unknown Channel` bug and only send Will an update if there is meaningful progress or a clear next step

### Model best-practices sync (OpenAI+Anthropic)
- **Agent:** `automation`
- **Schedule:** Mondays at `09:00` America/Los_Angeles
- **Session target:** isolated
- **Purpose:** refresh local tool-calling / model best-practice hint files from official docs
- **Current note:** enabled, but the last recorded run errored due timeout / rate-limit issues

### Shift water reminder
- **Agent:** `automation`
- **Schedule:** hourly on weekdays at `14:00–21:00` America/Los_Angeles
- **Session target:** isolated
- **Purpose:** Telegram water reminder during work shift
- **Current note:** repaired on 2026-04-13 to send directly with the `message` tool to Will's Telegram DM after isolated cron runs repeatedly failed while trying to rediscover the chat target

### Shift walk reminder
- **Agent:** `automation`
- **Schedule:** weekdays at `14:00` and `20:00` America/Los_Angeles
- **Session target:** isolated
- **Purpose:** Telegram walk reminder
- **Current note:** repaired on 2026-04-13 to use an explicit Telegram target in the cron payload

### Shift walk reminder (30min offset)
- **Agent:** `automation`
- **Schedule:** weekdays at `15:30`, `18:30`, `21:30` America/Los_Angeles
- **Session target:** isolated
- **Purpose:** offset Telegram walk reminder
- **Current note:** repaired on 2026-04-13 to use an explicit Telegram target in the cron payload

### Enable shift reminders
- **Agent:** `automation`
- **Schedule:** one-shot at `2026-04-07 16:00 UTC`
- **Session target:** isolated
- **Purpose:** enable the three work-shift reminder jobs when the new [[Plans/Daily Schedule]] goes live
- **Status:** disabled after the one-shot run errored

### Tax Reminder
- **Agent:** `main`
- **Schedule:** one-shot at `2026-04-14 12:00 UTC`
- **Session target:** main
- **Purpose:** tax deadline reminder

### n8n Gmail trigger failure monitor
- **Agent:** `main`
- **Schedule:** daily at `09:00` and `21:00` America/Los_Angeles
- **Session target:** isolated
- **Purpose:** read-only health check for workflow `whtdorf7yJMVYeHm`
- **Current note:** as of 2026-04-28, alerts only on factual failure states (workflow inactive, Gmail Trigger node missing, or recent failed executions). Idle time alone no longer pages `#ops-alerts`.

## Disabled jobs (planned / staged)

### obsidian-inbox-watcher
- **Agent:** `automation`
- **Schedule:** every 5 minutes
- **Session target:** isolated
- **Purpose:** watches `/mnt/swarm-common/obsidian-vault/will/inbox/` for inbound notes, classifies them, handles them, moves them to `processed/`, and notifies Will via Telegram
- **Current note:** disabled after repeated timeouts

## OS cron (VM)

### MinIO backup
- **Schedule:** every 6 hours at minute `17`
- **Purpose:** full `~/.openclaw` backup to MinIO bucket `zap`
- **Behavior note:** backup script now tolerates benign hot-backup `tar` race warnings like `file changed as we read it`, but fails hard on non-benign archive creation errors so broken archives are less likely to be silently uploaded
- **Failure alerting:** cron should call `scripts/backup-to-minio-wrapper.sh`, which appends output to `logs/minio-backup.log` and sends a Discord alert to `#general` if the backup exits non-zero

### Session transcript cleanup
- **Schedule:** daily at `03:17` (America/Los_Angeles)
- **Script:** `scripts/cleanup-session-transcripts.sh`
- **Purpose:** delete session `.jsonl` files older than 90 days from `~/.openclaw/agents/main/sessions/`
- **Log:** `logs/cleanup-sessions.log`
- **Added:** 2026-03-31

## Operational notes

### Google Calendar CLI approvals
- Local preferred setup now uses a stable workspace script allowlist target for calendar reads: `/home/openclaw/.openclaw/workspace/scripts/gog-calendar-read.sh`
- The script reads only `GOG_ACCOUNT` and `GOG_KEYRING_PASSWORD` from `~/.openclaw/credentials/gog.env` and then execs `gog calendar events ...` with explicit env vars.
- This replaced the earlier version-pinned Homebrew Cellar allowlist path and avoids approval churn when `gogcli` is upgraded.
- Operational rule: calendar helper scripts should avoid `bash -lc` wrappers and avoid sourcing the whole env file; prefer the stable wrapper script or direct `gog` invocation with explicit env vars.

## Note

Earlier versions of this note listed several jobs that are not present in the current live cron inventory anymore. This file was refreshed from the actual runtime state on 2026-03-27.
