Skip to content

Lab Zero v1.21.0 — Codex helper agents, re-wire hint, model-invocable ceremonies

Latest

Choose a tag to compare

@rayrage213 rayrage213 released this 26 Sep 19:28

Updating to this release: from v1.20.0, one bash update.sh run is enough. From an older version, follow the v1.20.0 note below (two runs), because your current updater predates the one-run fix. If you use Codex, re-run the harness wiring afterwards — from this release on, the updater prints the exact line (see below).

  • The two helper agents now work on Codex too. bootstrap.sh --harness …,codex generates Codex versions of lab-reader and lab-reviewer as .codex/agents/lab-reader.toml and .codex/agents/lab-reviewer.toml, from the same .claude/agents/lab-zero/ files Claude Code uses. Like the rest of .codex/, they're generated on your machine and git-ignored — nothing new is committed. Three limits, stated plainly:

    • Read-only by instruction only. On Claude Code the helpers are limited to read/search tools. On Codex, a helper runs with your session's permissions, and Lab Zero sets no sandbox for it (it ships no permission settings on either harness). Its instructions tell it not to edit or run state-changing commands; nothing enforces that.
    • Codex starts a helper only when asked — by you, or by a skill or project instruction. In our live test, /lab-plan's review step picked lab-reviewer on its own; for lab-reader, ask for it by name.
    • Trust the project first. In an untrusted project Codex loads none of them — the spawn tool doesn't even offer an agent type. A one-off -c projects.…trust_level override on the command line was not enough in our test; the project's trust entry in ~/.codex/config.toml was.

    They inherit your session's model and reasoning effort (no model or effort is pinned). Each generated file's first line says it was generated and names its own path. Re-wiring overwrites or removes only files whose first line names them, and dropping Codex removes only those. A file you wrote yourself under the same name is left alone, with a warning. To customize a helper, copy it to a new name — the copy is yours and is never touched. Live-tested on codex-cli 0.153.4 (model gpt-5.6-sol): lab-reader answered by name with correct file:line citations, and /lab-plan spawned lab-reviewer (confirmed in Codex's own session log as agent_role: lab-reviewer), which inherited the session's model, effort and sandbox. Codex's agent format may still change.

  • The helpers' own instructions no longer name Claude-only tools. They said "the toolset is Read, Grep, and Glob only", which isn't true on Codex. They now say: read, search, and list files — no edits, no fixes, no state-changing commands.

  • Both updaters tell Codex users exactly how to re-wire. The Codex layer is git-ignored, so update.sh never refreshes it. When your .lab/harnesses includes codex, the updater's last lines now print the exact command, with an absolute path and your recorded harness set, e.g. LAB_BOOTSTRAP_SKIP_ENGINE=1 bash /path/to/bootstrap.sh --harness claude,codex (wiring only — no reinstall, no reindex). The project updater's old hint was relative and said --harness codex, which would have dropped Claude from a claude,codex workspace's recorded set; it's replaced. The Lab's updater had no hint at all.

  • The agent can now start /audit, /discover-skills and /review-corrections itself. They carried disable-model-invocation: true, which Codex ignores — so on Codex they were already model-invocable, while on Claude Code the flag also blocked the agent from starting them even when you asked for one. The flag is gone, so both harnesses behave the same, like /lab-plan and /bro already did. You can still run each by name as before. One side effect: the session-start reminders ("run /review-corrections…", "run /discover-skills…") may now lead the agent to start that ceremony itself at the start of a session.

  • Calmer wording in /wrap and /discover-skills. Recent models (GPT-6 Astra and current Claude alike) can over-react to capitalized, emphatic instructions. /wrap's drift-gate line, its two "do NOT"s, /discover-skills' worthiness bar, its anti-pattern heading, and its description now say the same things in plain case. The two real stop-gates in /wrap and the one NEVER in /review-corrections are unchanged.