--- name: codex-host description: Run the great_cto controlled Codex lifecycle with controller-owned writes, verifier evidence, human gates and optional artifact release. when_to_use: Use when the user asks Codex to run or inspect a full great_cto pipeline rather than only use an individual skill. effort: high allowed-tools: Read, Bash --- # Controlled Codex host Use the version-pinned npm entrypoint below. A Codex plugin install loads skills and MCP configuration, but it does not add the `great-cto` npm binary to `PATH`. Do not imitate Claude Code hooks or manually chain roles: the controller reads `shared/pipeline.toml`, persists the cursor and owns every write and gate transition. ## Preflight ```sh npx --yes great-cto@3.58.1 codex-host doctor npx --yes great-cto@3.58.1 codex-host list --dir /absolute/project ``` `doctor.state=blocked` means do not start. Docker may be unavailable when no checks/release policy is requested; GitHub CLI may be unavailable when the local adapter is used. The run store must not be group/world accessible. For mixed-host runs, also require `doctor.checks.claude.state=available`. ## Start Policies must be operator-owned absolute files outside the worker project. Allowed paths are explicit controller write boundaries. ```sh npx --yes great-cto@3.58.1 codex-host start \ --dir /absolute/project \ --prompt "the requested outcome" \ --allow src,tests,docs \ --checks-policy /absolute/operator/checks.json \ --release-policy /absolute/operator/release.json ``` Read the returned `status`, `pending` and `release` object. Never treat exit 2 as success: it means a gate, manual action or blocked evidence requires attention. Since 3.47.0, independent graph roles can run on both hosts with `--routes qa-engineer=claude-code,security-officer=codex` on `start`. The controller dispatches only a symmetric join pair concurrently, checks both proposals for overlap, serializes writes and runs the existing verifier and human gates. The route map is fixed for the run. An interrupted wave must be inspected; never start replacement workers against an uncertain wave. ## Gates and recovery Show the operator the exact gate/release summary and wait for explicit approval. Then pass back the controller-issued token; never synthesize or persist one in a project file. ```sh npx --yes great-cto@3.58.1 codex-host approve RUN_UUID --token GATE_TOKEN npx --yes great-cto@3.58.1 codex-host approve-release RUN_UUID --token RELEASE_TOKEN npx --yes great-cto@3.58.1 codex-host resume RUN_UUID ``` Use `recover` only after inspecting the recorded reason. Recovery reuses the same candidate and refuses unknown partial writes. `cancel` revokes unexecuted approval but does not delete external audit evidence. ## Release boundary The local and GitHub Release adapters publish immutable artifacts and declare `activation: none`. They do not deploy traffic. Local rollback means selecting a previous directory; GitHub rollback is a newly gated superseding release. Production activation needs a separate adapter and approval contract. Detailed policy schemas and limitations are in `docs/HOST-CODEX.md`.