Files
superpowers/skills/using-superpowers/references/codex-tools.md
Drew Ritter 3921dc9998 exp(codex): surgical spinout mitigations for PRI-2672 manual App validation
Experiment branch — NOT for merge without eval evidence (writing-skills
discipline; RED/GREEN campaign to follow if the manual run validates).

Two targeted changes against the measured Codex 5.6-era spinout
(36% of SDD runs >8h, PRI-2672):

1. codex-tools.md — SDD dispatch rules: fork_turns "none" on every
   spawn (the default "all" forks the whole transcript and refuses
   model/effort overrides — S2's terminal 13-agent final wave was all
   full-history forks at sol/xhigh); capability-check for 0.145+ spawn
   params with an explicit terra/high role table (re-review terra/medium),
   no sol seats, no effort escalation between fix rounds; honest
   inheritance warning for <=0.144 where routing is impossible (T0-probed
   on 0.144.4: schema is {task_name, message, fork_turns} only, role
   TOMLs inert).

   Role-table bet: census shows task seats already ran terra/high in the
   spinout sessions — the surgical bet is fork_turns:none + no-sol-seats
   + wave termination, not task-seat downgrade. T1 cross-review matrix
   will refine reviewer tiers (may support terra/medium or lower).

2. SKILL.md final review — wave closure is policy, not a verdict:
   strong reviewers find real defects indefinitely, so "review until
   clean" never terminates; new breakage in the final fix diff joins
   residual adjudication instead of opening wave two; one-off human
   review procedures (competing reviewers, scoring) never become
   standing. Two matching rationalization-table rows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 12:36:50 -07:00

3.8 KiB

Subagent dispatch requires multi-agent support

Add to your Codex config (~/.codex/config.toml):

[features]
multi_agent = true

This enables spawn_agent, wait_agent, and close_agent for skills like dispatching-parallel-agents and subagent-driven-development. When using subagent-driven-development, close reviewer subagents when their review returns. Keep each implementer subagent open until its task's review passes — the fix loop resumes the implementer — then close it. If your harness cannot send another message to a spawned agent, dispatch each fix round as a fresh implementer carrying the brief, the report file, and the findings.

SDD dispatch: pin fork_turns and the model on every spawn

Every spawn_agent call in subagent-driven-development sets fork_turns: "none". The parameter defaults to "all", which forks your entire session transcript into the child — the opposite of the fresh, constructed context SDD requires — and a full-history fork also refuses model and effort overrides. Never omit the parameter, and never pass "all" or a turn count for an SDD dispatch.

Before Task 1, check your spawn_agent tool schema for model and reasoning_effort parameters (present on Codex 0.145+).

If the parameters exist, set both explicitly on every dispatch:

Role model reasoning_effort
Implementer (all rounds) gpt-5.6-terra high
Task reviewer gpt-5.6-terra high
Scoped re-review gpt-5.6-terra medium
Final whole-branch review gpt-5.6-terra high

On Codex this table IS the Model Selection mapping — including the final review, which stays on terra/high rather than "most capable available." Never give a subagent your session's model when you run a frontier config (sol at xhigh or max): reviewer tier never exceeds implementer tier, and a fix round never gets an effort bump. Rounds 4-5's "more capable model" means a fresh implementer at the same tier; a task that genuinely needs more than terra/high is a BLOCKED escalation to your human partner, not a quiet tier climb. Frontier-tier subagents at inherited effort are the measured top driver of Codex SDD runs spinning out to 8+ hours (PRI-2672): review seats that inherited sol found real-but-endless defects every round, and fix diffs ballooned instead of converging.

If the parameters do not exist (Codex 0.144 and earlier), every child inherits your session's model and effort and no override is possible — role files in ~/.codex/agents/ do not attach to spawns either. Say so to your human partner before starting a plan of more than a few tasks, and offer the choice: proceed with inheritance, or restart the session at a lower effort so the whole run — controller and children — pays the lower rate.

Environment Detection

Skills that create worktrees or finish branches should detect their environment with read-only git commands before proceeding:

GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)
  • GIT_DIR != GIT_COMMON → already in a linked worktree (skip creation)
  • BRANCH empty → detached HEAD (cannot branch/push/PR from sandbox)

See using-git-worktrees Step 0 and finishing-a-development-branch Step 1 for how each skill uses these signals.

Codex App Finishing

When the sandbox blocks branch/push operations (detached HEAD in an externally managed worktree), the agent commits all work and informs the user to use the App's native controls:

  • "Create branch" — names the branch, then commit/push/PR via App UI
  • "Hand off to local" — transfers work to the user's local checkout

The agent can still run tests, stage files, and output suggested branch names, commit messages, and PR descriptions for the user to copy.