Codex-settings autonomous-skill
Use when work must continue across multiple Codex sessions with `.autonomous/` tracking, resumable execution, or autonomous handoff. Use for long-running, multi-session, or resume-later tasks.
install
source · Clone the upstream repo
git clone https://github.com/feiskyer/codex-settings
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/feiskyer/codex-settings "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/autonomous-skill" ~/.claude/skills/feiskyer-codex-settings-autonomous-skill && rm -rf "$T"
manifest:
skills/autonomous-skill/SKILL.mdsource content
Autonomous Skill - Long-Running Task Execution
Execute complex, long-running tasks across multiple sessions using a dual-agent pattern (Initializer + Executor) with automatic session continuation via Codex non-interactive mode.
Quick Start
Use the
run-session.sh script to manage autonomous tasks:
# Start a new autonomous task ~/.codex/skills/autonomous-skill/scripts/run-session.sh "Build a REST API for todo app" # Continue an existing task ~/.codex/skills/autonomous-skill/scripts/run-session.sh --task-name build-rest-api-todo --continue # List all tasks and their progress ~/.codex/skills/autonomous-skill/scripts/run-session.sh --list # Show help ~/.codex/skills/autonomous-skill/scripts/run-session.sh --help
The runner intentionally leaves
--model unset so Codex uses the active config.toml or selected profile model by default.
Directory Structure
All task data is stored in
.autonomous/<task-name>/ under the project root:
project-root/ └── .autonomous/ ├── build-rest-api/ │ ├── task_list.md # Master task checklist │ ├── progress.md # Session-by-session notes │ ├── session.id # Last Codex session ID for resumption │ └── session.log # Codex stdout/stderr transcript with JSON events ├── refactor-auth/ │ ├── task_list.md │ ├── progress.md │ └── session.id └── ...
This allows multiple autonomous tasks to run in parallel without conflicts.
Script Options
Usage: run-session.sh "task description" Start new task (auto-generates name) run-session.sh --task-name <name> --continue Continue specific task run-session.sh --list List all tasks run-session.sh --help Show help Options: --task-name <name> Specify task name explicitly --continue, -c Continue existing task --no-auto-continue Don't auto-continue after session --max-sessions N Limit to N sessions --list List all existing tasks --resume-last Resume the most recent Codex session --network Enable danger-full-access sandbox for tasks that need broader shell access
Workflow Overview
User Request → Generate Task Name → Create .autonomous/<task-name>/ → Execute Codex Sessions ↓ ┌───────────────┐ │ task_list.md │ │ exists? │ └───────┬───────┘ │ ┌───────────────────────┴───────────────────────┐ │ NO YES │ ▼ ▼ ┌───────────────┐ ┌───────────────┐ │ INITIALIZER │ │ EXECUTOR │ │ - Analyze │ │ - Read state │ │ - Break down │ │ - Next task │ │ - Create │ │ - Implement │ │ task_list │ │ - Mark done │ └───────────────┘ └───────────────┘ │ ▼ ┌───────────────┐ │ All complete? │ └───────┬───────┘ │ ┌───────────────┴───────────────┐ │ NO YES │ ▼ ▼ Auto-continue Exit with success (3 sec delay)
Usage Examples
Example 1: Start New Task
~/.codex/skills/autonomous-skill/scripts/run-session.sh "Build a REST API for todo app"
Output:
ℹ Generated task name: build-rest-api-todo ========================================== SESSION 1 - build-rest-api-todo ========================================== ========================================== INITIALIZER SESSION ========================================== Task: Build a REST API for todo app Task Name: build-rest-api-todo Task Directory: .autonomous/build-rest-api-todo [Codex creates task_list.md with 25 tasks...] ✓ Initializer session complete ℹ Session ID saved: 550e8400-e29b-41d4-a716-446655440000 === Progress: 0/25 === Continuing in 3 seconds... (Press Ctrl+C to pause)
Example 2: Continue Existing Task
~/.codex/skills/autonomous-skill/scripts/run-session.sh --task-name build-rest-api-todo --continue
Example 3: Resume with Session Context
# Resume the Codex session (preserves conversation context) ~/.codex/skills/autonomous-skill/scripts/run-session.sh --task-name build-rest-api-todo --continue --resume-last
Example 4: List All Tasks
~/.codex/skills/autonomous-skill/scripts/run-session.sh --list
Output:
========================================== AUTONOMOUS TASKS ========================================== ✓ build-rest-api-todo (25/25 - 100% complete) [session: 550e8400...] ○ refactor-auth (12/30 - 40%) [session: 661f9511...] ? incomplete-task (no task_list.md)
Example 5: With Network Access
# Enable network access for tasks that need API calls ~/.codex/skills/autonomous-skill/scripts/run-session.sh --network "Fetch data from GitHub API and analyze"
Key Files
For each task in
.autonomous/<task-name>/:
| File | Purpose |
|---|---|
| Master task list with checkbox progress |
| Session-by-session progress notes |
| Last Codex session ID for resumption |
| JSON Lines output from Codex sessions |
Important Notes
- Task Isolation: Each task has its own directory, no conflicts
- Task Naming: Auto-generated from description (lowercase, hyphens, max 30 chars)
- Task List is Sacred: Never delete or modify task descriptions, only mark
[x] - One Task at a Time per Session: Focus on completing tasks thoroughly
- Auto-Continue: Sessions auto-continue with 3s delay; Ctrl+C to pause
- Session Resumption: Use
to preserve Codex conversation context--resume-last - Configured Model: The runner does not pass
; it uses the active Codex config/profile model--model - Network Mode:
switches the sandbox override to--network
while keeping approval policy non-interactivedanger-full-access - Git Hygiene: Consider adding
to.autonomous/
to avoid committing logs.gitignore
Codex CLI Reference
The script uses these Codex commands internally. It intentionally uses config overrides instead of
--full-auto so unattended runs do not inherit on-request approvals from the current CLI:
# Non-interactive execution with file edits (fully autonomous) # Uses the configured model from the active Codex config/profile codex exec \ -c 'approval_policy="never"' \ -c 'sandbox_mode="workspace-write"' \ --skip-git-repo-check \ --json \ "prompt" # Resume previous session codex exec resume \ -c 'approval_policy="never"' \ -c 'sandbox_mode="workspace-write"' \ --skip-git-repo-check \ --json \ <SESSION_ID> \ "prompt" # Full access (file edits + shell network / unrestricted filesystem) - use with caution! codex exec \ -c 'approval_policy="never"' \ -c 'sandbox_mode="danger-full-access"' \ --skip-git-repo-check \ --json \ "prompt"
Troubleshooting
| Issue | Solution |
|---|---|
| Task not found | Run to see existing tasks |
| Multiple tasks | Specify task name with |
| Session stuck | Check in task directory |
| Need to restart | Delete task directory and start fresh |
| Resume failed | Remove to start fresh session |
| Run paused for approval | Ensure the updated runner is using overrides |
| Codex not found | Install Codex CLI: |