Codex Native Scheduler

Schedule unattended Codex CLI jobs natively

Wu Fei

@wufei-png

What This Skill Does

CLI tool that schedules, inspects, retries, pauses, resumes, stops, and deletes unattended Codex CLI jobs using macOS launchd, Linux systemd user timers, or Windows Task Scheduler. It stores private state under $CODEX_HOME/codex-native-scheduler and registers only the native backend for the current platform.

Replaces writing custom cron scripts or daemon processes for running Codex CLI jobs on a schedule by leveraging the operating system's native job scheduler.

When to Use It

  • Schedule a weekly Codex review job to run every Monday at 09:30
  • Pause a recurring Codex job without deleting its configuration
  • Retry a failed Codex run without incrementing the schedule count
  • Inspect the status and run history of a scheduled Codex job
  • Decommission all scheduled Codex jobs and preserve state before uninstalling
  • Create a recurring Codex job that uses a separate worktree to avoid directory conflicts

Install

$ openclaw skills install @wufei-png/codex-native-scheduler

Codex Native Scheduler

Use the bundled scripts/codex-schedule CLI. It stores private state under $CODEX_HOME/codex-native-scheduler and registers only the native backend for the current platform.

Workflow

  1. Run scripts/codex-schedule doctor before the first scheduled job on a host.

  2. Confirm the intended working directory, schedule, and whether the prompt may write files.

  3. Prefer --workspace worktree for write-capable recurring jobs. Direct jobs can conflict with other jobs using the same directory.

  4. Use exactly one prompt source and exactly one schedule:

    scripts/codex-schedule create \
      --name weekly-review \
      --cwd "$PWD" \
      --weekly-at mon@09:30 \
      --workspace worktree \
      --prompt-file ./weekly-review.md
    
  5. Inspect the returned job and native status with status. Use run-now only when the user explicitly wants an immediate manual run.

  6. Use runs and run-show for evidence. Raw JSONL, stderr, final output, and snapshots live in the reported run directory.

Configuration

Pass a Codex profile with --profile. Pass any Codex override repeatedly with -c key=value. Do not invent another permission acknowledgement or filter: Codex receives the values through codex exec --strict-config and enforces its own valid keys, authentication, approval, sandbox, and organization policies.

new_each_run is the default session mode. Use resume_fixed only when the task intentionally needs continuity; it forces overlap policy skip. Changing cwd or workspace mode for a fixed session requires update --reset-session. To continue an existing Codex session, create a direct resume_fixed job with --session-id SESSION_UUID; its --cwd should be the session's working directory. Seeded sessions do not inherit the scheduler's default profile and reject --profile and -c so the job cannot override the session's model settings. Profile and Codex overrides remain locked until update --reset-session starts a new session generation.

Operations

  • pause JOB unregisters future wakes and leaves an active run alone.
  • resume JOB registers future wakes again.
  • stop RUN stops one active run.
  • retry RUN creates a linked manual run and does not increment schedule count.
  • prune [JOB] --dry-run previews retention cleanup.
  • delete JOB --yes permanently deletes job state.
  • decommission unregisters every job and preserves state before uninstalling.
  • purge --yes removes state only after decommissioning.

Never enable Linux linger, edit Codex configuration, commit/merge/push a worktree, or delete a dirty worktree on the user's behalf.

Read references/semantics.md when exact count, catch-up, DST, retry, overlap, session, or retention behavior matters.

Top skills in this category

Free Ride - Unlimited free AI

@shaivpidadi

Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...

48470k

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

12941k

n8n

@thomasansems

Manage n8n workflows and automations via API. Use when working with n8n workflows, executions, or automation tasks - listing workflows, activating/deactivating, checking execution status, manually triggering workflows, or debugging automation issues.

6121k

Superpowers Dev Workflow

@wlshlad85

Spec-first, TDD, subagent-driven software development workflow. Use when: (1) building any new feature or app — triggers brainstorm → plan → subagent executi...

1827k

Claude Code Usage

@azaidi94

Check Claude Code OAuth usage limits (session & weekly quotas). Use when user asks about Claude Code usage, remaining limits, rate limits, or how much Claude usage they have left. Includes automated session refresh reminders and reset detection monitoring.

166.8k