# LFCS Cron Jobs — Registry

**Last updated:** 2026-06-12 by Hermes

## Active Jobs

| Job ID | Name | Schedule | Next run (AEST) | Status | Deliver |
|--------|------|----------|-----------------|--------|---------|
| 5fd07b6b83f2 | morning-digest | Daily 05:00 | 2026-06-13 05:00 | ⚠️ PAUSED — Google OAuth token expired May 11, needs re-auth | Telegram 7377499346 |
| 9047588dd026 | window-digest | Mon-Fri 18:00 | 2026-06-12 18:00 | ✅ active | Telegram 7377499346 |
| 5c6b3bb3ede7 | tender-watch | Daily 07:00 | 2026-06-13 07:00 | ⏸ paused — needs search API key (TAVILY_API_KEY or BRAVE_SEARCH_API_KEY) | Telegram 7377499346 |
| f481ba22c69c | rateright-weekly | Sat 08:00 | 2026-06-13 08:00 | ✅ active | Telegram 7377499346 |
| 74522c9d2bb7 | self-health | Sun 18:00 | 2026-06-14 18:00 | ✅ active | Telegram 7377499346 |

## Re-enabling paused jobs

```bash
# Re-enable morning-digest after OAuth re-auth
hermes cron resume 5fd07b6b83f2

# Re-enable tender-watch after adding search API key
hermes cron resume 5c6b3bb3ede7
```

## Google OAuth re-auth (morning-digest)

Token expired. Steps:
1. User opens this URL in browser, signs in as mcloughlinmichael.r@gmail.com, approves only `gmail.readonly` + `calendar.readonly`:
```
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=890850960489-5hejo1gd3apvpn1nu1183ohk4u9rlnev.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A1&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly&access_type=offline&prompt=consent
```
2. User pastes code from URL (after `?code=`) — browser shows `ERR_UNSAFE_PORT` on localhost:1, this is normal
3. Run: `python3 /root/.hermes/profiles/siteops/skills/productivity/google-workspace/scripts/setup.py --auth-code "CODE"`
4. Resume: `hermes cron resume 5fd07b6b83f2`