/codex-workflows
Verified headless Codex worktree fan-out. Triggers: codex-workflows, headless Codex, Codex parallel. NOT for healthy cmux single-worker tasks.
$ golems-cli skills install codex-workflowsUpdated today
Use this skill for headless parallel Codex dispatch or when cmux is unavailable. Healthy cmux panes remain the default for visible, reachable single-worker tasks; headless mode is a fan-out engine and degraded fallback, not a cmux replacement.
Run the harness through scripts/codex-workflows.sh. Detailed interfaces are in
workflows/agent.md, workflows/parallel.md, and workflows/pipeline.md.
Primitives
agentcreates one isolated worktree, launches one worker, verifies startup, and records it in an explicit manifest.parallelvalidates a JSON fan-out spec, launches every worker before watching, and keeps every outcome in one manifest.pipelineruns ordered stages, parallel within a stage, and stops on failure before the next stage unlesscontinue_on_failureis explicitly enabled.watchobserves process exit first, then parses the finished log once.status,harvest, andcleanupmake inspection and retirement mechanical.
Non-Negotiable Guards
- Discover the real default branch with
git remote show origin. Never assumemainormaster. - Launch
/Users/etanheyman/.local/bin/codexthrough/usr/bin/nohup. Never invoke barecodex; a captured PID is not a worker. - Use one worktree, branch, and log per worker. Grant workspace-write access to
the repository Git directory and explicit reporting paths with
--add-dir. - Verify startup after a grace period. Report
FAILED_LAUNCHloudly when the process died or launcher diagnostics show an executable, command, or fetch failure. - Never live-grep a worker stream. Wait for process exit, then extract exact
TASK_DONE, PR URLs, and failures from structured finished-log events. - Pin the bounded-work default to
gpt-5.6-lunawith explicitxhighormaxreasoning effort. Record the effective model/effort, output tokens, and wall-clock duration in the manifest and run log. - Treat
TASK_DONEas a signal, not artifact proof. Harvest only declared worktree-relative, non-symlink artifacts; do not clean up before harvest.
Degraded-Mode Contract
Every headless run and worker record must state the same four facts:
lead-reachable-onlyno-paneno-listen-nameno-self-monitor
Name the dispatching lead. ARM-MONITORS registration must describe the worker as lead-reachable-only; do not invent a pane, listen-name, or monitor.
Full SKILL.md source — includes LLM directives, anti-patterns, and technical instructions stripped from the Overview tab.
Use this skill for headless parallel Codex dispatch or when cmux is unavailable. Healthy cmux panes remain the default for visible, reachable single-worker tasks; headless mode is a fan-out engine and degraded fallback, not a cmux replacement.
Run the harness through scripts/codex-workflows.sh. Detailed interfaces are in
workflows/agent.md, workflows/parallel.md, and workflows/pipeline.md.
Primitives
agentcreates one isolated worktree, launches one worker, verifies startup, and records it in an explicit manifest.parallelvalidates a JSON fan-out spec, launches every worker before watching, and keeps every outcome in one manifest.pipelineruns ordered stages, parallel within a stage, and stops on failure before the next stage unlesscontinue_on_failureis explicitly enabled.watchobserves process exit first, then parses the finished log once.status,harvest, andcleanupmake inspection and retirement mechanical.
Non-Negotiable Guards
- Discover the real default branch with
git remote show origin. Never assumemainormaster. - Launch
/Users/etanheyman/.local/bin/codexthrough/usr/bin/nohup. Never invoke barecodex; a captured PID is not a worker. - Use one worktree, branch, and log per worker. Grant workspace-write access to
the repository Git directory and explicit reporting paths with
--add-dir. - Verify startup after a grace period. Report
FAILED_LAUNCHloudly when the process died or launcher diagnostics show an executable, command, or fetch failure. - Never live-grep a worker stream. Wait for process exit, then extract exact
TASK_DONE, PR URLs, and failures from structured finished-log events. - Pin the bounded-work default to
gpt-5.6-lunawith explicitxhighormaxreasoning effort. Record the effective model/effort, output tokens, and wall-clock duration in the manifest and run log. - Treat
TASK_DONEas a signal, not artifact proof. Harvest only declared worktree-relative, non-symlink artifacts; do not clean up before harvest.
Degraded-Mode Contract
Every headless run and worker record must state the same four facts:
lead-reachable-onlyno-paneno-listen-nameno-self-monitor
Name the dispatching lead. ARM-MONITORS registration must describe the worker as lead-reachable-only; do not invent a pane, listen-name, or monitor.
Completion Interpretation
parallel without --watch proves launch only, records completion_proven: false, prints LAUNCH_ONLY, and exits 75 so it cannot be mistaken for completed
work. With --watch, success requires every worker to reach completed.
failed_launch, failed, watch_timeout, parser_failed, and incomplete all
return nonzero. A watch timeout preserves the live process and log so another
watch can resume.
See references/manifest.md for states and
references/composition.schema.json for the fan-out/pipeline input contract.
Best Pass Rate
100%
Opus 4.6
Assertions
28
3 models tested
Avg Cost / Run
$0.1804
across models
Fastest (p50)
2.3s
Haiku 4.5
Behavior Evals
Phase 2 baseline — skill quality on ClaudeBehavior Baseline
| Assertion | Opus 4.6 | Sonnet 4.6 | Haiku 4.5 | Consensus |
|---|---|---|---|---|
| discovers-remote-head | 3/3 | |||
| absolute-codex-binary | 1/3 | |||
| pointer-prompt | 3/3 | |||
| pid-is-not-worker | 1/3 | |||
| lead-reachable-only | 3/3 | |||
| distinct-worktrees | 3/3 | |||
| distinct-branches | 3/3 | |||
| distinct-logs | 2/3 | |||
| single-manifest | 3/3 | |||
| no-live-stream-grep | 2/3 | |||
| does-not-trust-shell-zero | 1/3 | |||
| does-not-trust-pid | 2/3 | |||
| checks-process-identity | 3/3 | |||
| checks-launcher-diagnostics | 3/3 | |||
| failed-launch-verdict | 1/3 | |||
| waits-for-process-exit | 2/3 | |||
| assistant-message-only | 2/3 | |||
| ignores-tool-doc-text | 2/3 | |||
| persists-metrics | 3/3 | |||
| artifact-is-independent-proof | 2/3 | |||
| cmux-first | 2/3 | |||
| canonical-degraded-set | 3/3 | |||
| explicit-lead | 3/3 | |||
| not-a-cmux-replacement | 2/3 | |||
| parallel-within-stage | 1/3 | |||
| no-early-next-stage | 3/3 | |||
| stops-on-failure | 3/3 | |||
| records-policy | 2/3 |
Token Usage
Cost per Run
| Model | Input Tokens | Output Tokens | Cost / Run | Cost / 1K Runs |
|---|---|---|---|---|
| Opus 4.6 | 4,112 | 5,380 | $0.4652 | $465.20 |
| Sonnet 4.6 | 5,023 | 3,758 | $0.0714 | $71.40 |
| Haiku 4.5 | 2,388 | 3,221 | $0.0046 | $4.60 |
Response Time (p50)
Response Time (p95)
| Model | p50 | p95 | Overhead |
|---|---|---|---|
| Opus 4.6 | 5.6s | 10.1s | +81% |
| Sonnet 4.6 | 2.9s | 5.1s | +77% |
| Haiku 4.5 | 2.3s | 3.9s | +69% |
Last evaluated: 2026-03-12 · Data is generated from skill assertions (real cross-model benchmarks coming soon)
Changelog entries are derived from eval runs and skill version updates. Full cascading changelog (Phase 4D) coming soon.
Best Pass Rate
100%
Assertions
28
Models Tested
3
Evals Run
6
- +Initial release to Golems skill library
- +28 assertions across 6 eval scenarios
- +3 workflows included: agent, parallel, pipeline
- +Eval fixtures included