v4.12.0
Codex Has Teams Now
Codex can now work as a coordinated team, not just as one session plus isolated helpers. LazyCodex ships a Codex-only teammode skill that creates a named group of durable Codex threads under the current session as leader, records the team in .omo/teams, gives each member a concrete ownership area or perspective, and keeps shared artifacts on disk so the work can be inspected, resumed, archived, or deleted cleanly.
Team members are real Codex threads created through codex_app.create_thread, not ephemeral spawned agents. The bundled controller script owns team.json, guide.md, member bindings, status updates, artifacts, optional worktree paths, and cleanup. That makes team work useful for jobs where multiple perspectives need to coordinate with each other: code areas that overlap, release reviews, adversarial audits, broad investigations, and long-running parallel work where the leader still needs a durable control plane.
Team Mode Demos
GitHub usually plays the GIF previews inline. If your client freezes large GIFs, use the MP4 originals below; they preserve the source video quality and open in the browser's native video player.
Demo 1
Demo 2
Safer LazyCodex Installs and Marketplace Payloads
LazyCodex installation is stricter about what it activates. Hook command targets are validated, Windows hook paths are covered, marketplace installs preserve their update and re-approval boundary, Bun global installs are detected more reliably, and Codex plugin hooks are now shipped as split per-hook manifests with display metadata that is easier to inspect.
Team Mode Guardrails
The team workflow now rejects weak or unsafe composition: single-member teams, duplicate member focus after trimming, spawn_agent substitutes, symlink writes into team guides, symlink-based delete escapes, and unresolved state paths. Members are also instructed to communicate frequently with small status updates, which makes the leader session much less blind during parallel work.
More Reliable OpenCode Runtime Wakes
OpenCode-side parent wake handling and delegate-task polling were hardened around stale sessions, live-route probes, placeholder sleep waits, terminal errors, background output polling, and plugin component reloads. The practical effect is fewer silent stalls when background work finishes or internal wakes race with session state.
Release Operations Now Fail Earlier
The publish workflow now gates npm publication on the release source-state PR landing first. If protected-branch checks or branch rules block that PR, publishing stops before packages are pushed to npm, preventing a repeat of the half-published v4.12.0 failure mode.
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 197dcbe Merge pull request #5441 from code-yeongyu/release/v4.12.0-source-state-20260620
- eae7cff test(publish): cover release state gate dependencies
- 3354198 fix(publish): gate npm publish on release state merge
- 6544c2d Merge pull request #5440 from code-yeongyu/release/v4.12.0-source-state-20260620
- f7ccce7 Merge pull request #5436 from code-yeongyu/code-yeongyu/fix-codex-qa-app-server-empty-catch-20260619
- 837a433 fix(opencode): surface terminal errors after internal wakes
- 69efd37 fix(opencode): reload plugin components per config call
- 8fa2432 fix(codex-installer): validate Windows hook command targets
- 1a7db73 test(codex): split teammode safety fixtures
- b8bb8f2 fix(codex-qa): report app-server cleanup errors
- 9bd10f3 Merge pull request #5433 from code-yeongyu/code-yeongyu/fix-opencode-plugin-components-retry-20260619
- ef90216 Merge pull request #5432 from code-yeongyu/code-yeongyu/fix-codex-teammode-composition-20260619
- 5b36860 fix(opencode): avoid caching fallback plugin agents
- 9d54872 fix(opencode): retry plugin component load failures
- 4dd556d fix(codex): enforce teammode composition invariants
- 9ccd57c Merge pull request #5431 from code-yeongyu/code-yeongyu/fix-codex-hook-manifest-publish-20260619
- 9b451ac test(publish): avoid catch helper in validator pin
- 0936bb2 fix(publish): stage split codex hook manifests
- c6b2286 Merge pull request #5430 from code-yeongyu/code-yeongyu/fix-opencode-wake-probe-wait-live-dispatch
- 9cc9242 test(qa): cover wake probe usage errors
- 46860f9 test(qa): harden opencode wake split verdict
- e12a08f Merge pull request #5429 from code-yeongyu/code-yeongyu/fix-codex-qa-hook-false-green
- 8bc5a40 test(qa): fail release probes on hidden hook regressions
- 54cb8f0 Merge pull request #5428 from code-yeongyu/code-yeongyu/fix-codex-installer-release-blockers
- 282cbd5 Merge pull request #5427 from code-yeongyu/code-yeongyu/fix-codex-teammode-delete-symlink
- 076494b fix(codex-installer): validate hook targets during activation
- eb62bc3 fix(codex): guard teammode delete symlink paths
- fdffe50 Merge pull request #5426 from code-yeongyu/code-yeongyu/fix-opencode-wake-split-qa
- eb3d74c Merge pull request #5425 from code-yeongyu/code-yeongyu/fix-codex-start-work-boulder-parity
- 03016b0 Merge pull request #5424 from code-yeongyu/code-yeongyu/fix-codex-teammode-safety
- 2dce46f Merge pull request #5423 from code-yeongyu/code-yeongyu/fix-lazycodex-bun-global-update
- fe327c3 fix(codex): trust resolved teammode state paths
- 6a1b784 test(opencode-qa): clarify wake split probe metrics
- a634dde fix(codex-installer): detect bun global lazycodex updates
- cc48c8f fix(codex-start-work): align boulder reader parity
- 137dd3b fix(codex): reject trimmed duplicate teammode members
- 6e199bc fix(codex): refuse teammode guide symlink writes
- bf97ec7 Merge pull request #5422 from code-yeongyu/feat/work-with-pr-auto-merge
- 815fa4a docs(work-with-pr): default to auto-merge and wait until actually merged
- 0c1a18f Merge pull request #5421 from code-yeongyu/feat/codex-teammode-frequent-comms
- f891995 feat(codex): teammode members over-communicate; drop the teammode tests
- b5b9058 Merge pull request #5420 from code-yeongyu/code-yeongyu/fix-ci-background-output-poll
- bbed944 test(omo-opencode): relax background output poll timing
- ee529e2 Merge pull request #5419 from code-yeongyu/fix/codex-teammode-symlink-exec
- 67ff48b Merge pull request #5418 from code-yeongyu/code-yeongyu/fix-codegraph-node26-binary
- eb03216 fix(codex): make teammode team.mjs runnable through a symlinked install
- fa1af86 build(codex): refresh codegraph wrappers
- 0b4b580 fix(codex): prefer node support hint for codegraph
- a73ce99 Merge pull request #5417 from code-yeongyu/feat/codex-teammode-min-members
- 82ede97 fix(codex): require codex_app.create_thread for every member, forbid spawn_agent
- 7ff14a3 docs(codex): require 2+ members, aspect-split responsibility, and disband
- 45fd3a3 feat(codex): flag a teammode team with fewer than two members
- 3351820 Merge pull request #5416 from code-yeongyu/feat/codex-teammode-script-v2
- 52a2826 test(codex): skip the teammode symlink test when symlinks are unavailable
- 1607f14 Merge pull request #5412 from code-yeongyu/code-yeongyu/fix-5401-stale-parent-wake
- 830d25f refactor(codex): rewrite teammode skill to the script-driven v2 model
- e6bcead feat(codex): add cross-platform teammode controller script
- b8bb874 fix(opencode): probe live route health endpoint
- 2c68798 fix(background-agent): recheck parent wake safety
- 4483530 Merge pull request #5410 from code-yeongyu/code-yeongyu/fix-5397-agent-config-hot-path
- 5d4e79c Merge pull request #5415 from code-yeongyu/code-yeongyu/fix-lazycodex-issues-59-60
- 9afc426 Merge pull request #5411 from code-yeongyu/code-yeongyu/fix-5389-sync-poller-all-complete
- dcc6c6e Merge pull request #5413 from code-yeongyu/code-yeongyu/fix-5391-sisyphus-sleep-loop
- ef426b1 test(omo-opencode): split config cache coverage
- 0ebae5f Merge pull request #5414 from code-yeongyu/codex-teammode-skill
- ab5e8ae fix(opencode): guard placeholder sleeps during pending wakes
- b283de2 fix(delegate-task): harden sync poller wake completion
- 2ed4af0 fix(background-agent): release stale unknown parent wake deferrals
- 7222115 feat(codex): add teammode skill
- 795b65c Merge pull request #5409 from code-yeongyu/code-yeongyu/fix-5183-bun-global-trust
- 5f3c9bc fix(omo-opencode): cover config cache dependencies
- 17258d6 Merge pull request #5098 from sjawhar/fix/anthropic-fable-mythos-adaptive-thinking
- 7644821 fix(opencode): block placeholder sleep waits after delegation
- 6108611 fix(delegate-task): complete sync poller after internal wake
- 195b1b3 fix(omo-opencode): cache resolved config agents
- 4095df8 fix(codex): handle bun global lazycodex trust
- a343af7 Merge pull request #5407 from code-yeongyu/fix/ulw-plan-interview-honor-explicit-ask
- 9eaa5c0 fix(codex): bundle start-work stop cli
- 69a2562 fix(codex): trust provisioned codegraph launcher
- 4e5639f fix(ulw-plan): align the routing summary with the owner-decision term
- ac421c9 fix(ulw-plan): mirror the interview fix to the OpenCode edition (shared-skills)
- c015bd2 fix(ulw-plan): honor explicit ask + give the fork filter teeth (Codex edition)
- 2397913 fix(thinking): defer to adaptive thinking for Claude Fable/Mythos models
- b949c34 Merge pull request #5394 from code-yeongyu/code-yeongyu/ci-job-summaries-20260618
- b570f74 test(script): discover workflow summary jobs
- 4b01f20 Merge pull request #5375 from code-yeongyu/test/codex-package-smoke-fixture-dedup-v2
- feaa1b5 Merge pull request #5393 from code-yeongyu/code-yeongyu/fix-codex-display-names
- 106749c test(codex): normalize skill metadata paths
- 75a5f76 test(script): cover workflow job summaries
- b7fc071 test(ultrawork): apply package smoke formatting
- 371053b fix(codex): support hook manifest arrays
- c5299bf fix(codex): prefix skill display names
- 19664b4 fix(codex): name plugin hook metadata
- e7d5764 chore(codex): sync plugin lockfile version
- 660602e test(omo-codex): clarify package smoke fixture helpers
- a09732a test(ultrawork): align package smoke guidance contracts
- 09d49f8 test(omo-codex): rebuild lsp before package smoke tests
Thank you to 1 community contributor:
- @sjawhar:
- fix(thinking): defer to adaptive thinking for Claude Fable/Mythos models

