/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
$HOME/.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.
Worktree Hygiene (folded from superpowers:using-git-worktrees, 2026-09-02)
Guard 3 says one worktree per worker; these two checks say the worktree is safe to
work in. Folded when the superpowers plugin was dropped (XS-2) — source
superpowers/3.4.1/skills/using-git-worktrees/SKILL.md L55-69 and L120-134.
-
Verify the worktree root is git-ignored BEFORE creating anything in it. Repo law puts worktrees at
<repo>/.worktrees/<name>(AGENTS.md), so the only open question is whether git ignores that path here:# Probe a CHILD path, not the bare root: `.worktrees*/` is a directory-only # pattern, so `git check-ignore -q .worktrees` returns 1 on a fresh checkout # where the directory does not exist yet — a false "NOT ignored". git check-ignore -q .worktrees/probe || { echo ".worktrees NOT ignored"; exit 1; }Not ignored means every worker's checkout shows up as untracked files in the parent repo and can be committed by accident. Fix it (add the line, commit it) before the first
git worktree add, never after. (L55-69) -
Prove a clean baseline before the worker implements anything. Run the project's test command in the fresh worktree first and record the result in the manifest. A green baseline is what lets you attribute a later failure to the worker's change; without it you cannot tell a new bug from a pre-existing one. Baseline red is not a blocker by itself — report the failures and get an explicit go/no-go rather than silently building on top of them. (L120-134)
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
$HOME/.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.
Worktree Hygiene (folded from superpowers:using-git-worktrees, 2026-09-02)
Guard 3 says one worktree per worker; these two checks say the worktree is safe to
work in. Folded when the superpowers plugin was dropped (XS-2) — source
superpowers/3.4.1/skills/using-git-worktrees/SKILL.md L55-69 and L120-134.
-
Verify the worktree root is git-ignored BEFORE creating anything in it. Repo law puts worktrees at
<repo>/.worktrees/<name>(AGENTS.md), so the only open question is whether git ignores that path here:# Probe a CHILD path, not the bare root: `.worktrees*/` is a directory-only # pattern, so `git check-ignore -q .worktrees` returns 1 on a fresh checkout # where the directory does not exist yet — a false "NOT ignored". git check-ignore -q .worktrees/probe || { echo ".worktrees NOT ignored"; exit 1; }Not ignored means every worker's checkout shows up as untracked files in the parent repo and can be committed by accident. Fix it (add the line, commit it) before the first
git worktree add, never after. (L55-69) -
Prove a clean baseline before the worker implements anything. Run the project's test command in the fresh worktree first and record the result in the manifest. A green baseline is what lets you attribute a later failure to the worker's change; without it you cannot tell a new bug from a pre-existing one. Baseline red is not a blocker by itself — report the failures and get an explicit go/no-go rather than silently building on top of them. (L120-134)
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
33
3 models tested
Avg Cost / Run
$0.2649
across models
Fastest (p50)
3.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 | |||
| check-ignore-before-add | 2/3 | |||
| fixes-unignored-root | 2/3 | |||
| runs-baseline-first | 2/3 | |||
| reports-red-baseline-and-asks | 3/3 | |||
| no-silent-unignored-worktree | 2/3 |
Token Usage
Cost per Run
| Model | Input Tokens | Output Tokens | Cost / Run | Cost / 1K Runs |
|---|---|---|---|---|
| Opus 4.6 | 7,820 | 8,503 | $0.7550 | $755.00 |
| Sonnet 4.6 | 1,924 | 1,957 | $0.0351 | $35.10 |
| Haiku 4.5 | 2,822 | 3,062 | $0.0045 | $4.50 |
Response Time (p50)
Response Time (p95)
| Model | p50 | p95 | Overhead |
|---|---|---|---|
| Opus 4.6 | 8.1s | 12.7s | +58% |
| Sonnet 4.6 | 3.8s | 6.3s | +67% |
| Haiku 4.5 | 3.3s | 6.1s | +86% |
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
33
Models Tested
3
Evals Run
7
- +Initial release to Golems skill library
- +33 assertions across 7 eval scenarios
- +3 workflows included: agent, parallel, pipeline
- +Eval fixtures included