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-schedulerCodex 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
-
Run
scripts/codex-schedule doctorbefore the first scheduled job on a host. -
Confirm the intended working directory, schedule, and whether the prompt may write files.
-
Prefer
--workspace worktreefor write-capable recurring jobs. Direct jobs can conflict with other jobs using the same directory. -
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 -
Inspect the returned job and native status with
status. Userun-nowonly when the user explicitly wants an immediate manual run. -
Use
runsandrun-showfor 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 JOBunregisters future wakes and leaves an active run alone.resume JOBregisters future wakes again.stop RUNstops one active run.retry RUNcreates a linked manual run and does not increment schedule count.prune [JOB] --dry-runpreviews retention cleanup.delete JOB --yespermanently deletes job state.decommissionunregisters every job and preserves state before uninstalling.purge --yesremoves 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
@shaivpidadiManages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...
Playwright (Automation + MCP + Scraper)
@ivangdavilaAutomates, 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).
n8n
@thomasansemsManage 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.
Superpowers Dev Workflow
@wlshlad85Spec-first, TDD, subagent-driven software development workflow. Use when: (1) building any new feature or app — triggers brainstorm → plan → subagent executi...
Claude Code Usage
@azaidi94Check 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.