LazyCodex Can Keep Itself Fresh
LazyCodex now checks for updates from the Codex startup hook. The check is throttled, lock-protected, and runs with recursion guards so ordinary sessions do not repeatedly invoke the installer. Users who prefer manual control can disable it with LAZYCODEX_AUTO_UPDATE_DISABLED=1 or OMO_CODEX_AUTO_UPDATE_DISABLED=1.
Autonomous Codex by Default
New Codex installs now default to autonomous permissions, including non-TUI installs. The explicit escape hatch remains: pass --no-codex-autonomous to leave existing Codex permission settings untouched.
ULW Loop from the Expected Command Path
omo ulw-loop is now wired through the root CLI, and LazyCodex passes ulw-loop through to OMO. The router finds the Codex-local binary first and falls back to the newest cached component, so durable goal execution no longer depends on knowing internal install paths.
Better Codex Defaults and Migration
LazyCodex now ships a model catalog and managed config migration path for Codex. Fresh installs get deterministic default model and reasoning settings, while existing user-customized reasoning values stay intact.
Built-In LazyCodex Bug Reports
The new lcx-report-bug skill gives LazyCodex users a packaged way to produce structured issue reports with the right context. The publish workflow also has a default LazyCodex marketplace sync path when the required GitHub secret is available, keeping npm and the Codex plugin bundle ready to move together.
Smoother Upgrades
This release also cleans stale managed codex-lsp shims during upgrades, warns when a platform binary version does not match the main package, injects auth for fresh oh-my-opencode run servers, deduplicates discovered skills before prompt rendering, fixes model fallback routing, and tightens runtime edge cases around telemetry env parsing, team inline specs, tmux placeholder quoting, background task cleanup, hook timeouts, and Look At answer extraction.
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Rename transition updates across package detection, plugin/config compatibility, and install surfaces.
- Task and tool behavior updates, including delegate-task contract and runtime registration behavior.
- Task-system default behavior alignment so omitted configuration behaves consistently across runtime paths.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- 2a5ce62 Merge remote-tracking branch 'origin/dev' into dev
- 21760a9 feat(omo-codex): add lcx report bug skill
- 180f1ad fix(omo-codex): migrate managed codex model config
- 8bab866 fix(omo-codex): read codex defaults from model catalog
- 68ce5ec Merge pull request #4693 from code-yeongyu/code-yeongyu/codex-installer-model-defaults
- f6704ae fix(codex): set installer model defaults
- 723a25c test(omo-codex): harden aggregate compatibility assertions
- c30adf4 Merge remote-tracking branch 'origin/dev' into dev
- e5745de fix(omo-codex): configure codex default model
- f75cb63 fix(omo-codex): harden lazycodex workflow compatibility
- 36f095c Merge pull request #4690 from code-yeongyu/code-yeongyu/bug-3757-deprecated-opencode-models
- e15acfd Merge pull request #4688 from code-yeongyu/code-yeongyu/bug-3648-look-at-thinking
- cb20b8e fix(model-fallback): avoid retired opencode model routes
- d2ee8d0 Merge pull request #4264 from YOMXXX/fix/todowrite-disabler-allow-write
- 4130134 ci(lazycodex): sync marketplace by default
- b0b71ac fix(omo-codex): harden lazycodex orchestration prompts
- 793ba19 fix(look-at): extract thinking model answers
- 11f070b Merge pull request #4335 from YOMXXX/fix/transcript-cache-no-grow-postooluse
- effe5d6 Merge pull request #4687 from code-yeongyu/code-yeongyu/bug-3562-anthropic-hyphen
- 6653966 fix(model-core): preserve anthropic hyphen IDs
- 2814bb1 Merge pull request #4686 from code-yeongyu/code-yeongyu/bug-3362-ralph-pending-bg
- 5ba3cf1 Merge pull request #4685 from code-yeongyu/code-yeongyu/bug-3315-comment-checker-path
- 338010b fix(ralph-loop): wait for pending background tasks
- b25bac9 fix(comment-checker): resolve path-only binary
- 76f0e6c Merge pull request #4684 from code-yeongyu/code-yeongyu/bug-3250-skill-description
- 18ba56a fix(skill): avoid duplicate skill listings
- 9dddab2 Merge pull request #4683 from code-yeongyu/code-yeongyu/bug-3212-oracle-tool-result
- adedbb4 fix(ralph-loop): log completion toast failures
- 44ce488 fix(ralph-loop): reject spoofed verification text
- 4c7aa08 fix(ralph-loop): recover oracle tool-result verification
- 2ea3835 Merge pull request #4682 from code-yeongyu/code-yeongyu/fix-2926-start-work-explicit-miss
- 7cac1e7 fix: auto-select single plan after start-work name miss
- cec3f25 Merge pull request #4415 from PeterPonyu/fix/tmux-status-map-normalization
- 594b446 Merge pull request #4354 from Yeachan-Heo/fix/issue-3787-skills-paths-discovery
- b8c9213 Merge branch 'dev' into fix/tmux-status-map-normalization
- 1928318 Merge pull request #4355 from Yeachan-Heo/fix/issue-3772-epipe-log-bloat
- 0faff4f Merge branch 'dev' into fix/issue-3787-skills-paths-discovery
- d57ac14 Merge pull request #4678 from code-yeongyu/code-yeongyu/bug-3975-wsl-config
- 9508943 Merge pull request #4681 from code-yeongyu/code-yeongyu/bug-3945-k2p6-thinking
- 8ffb921 Merge branch 'dev' into fix/issue-3772-epipe-log-bloat
- 24707cb Merge branch 'dev' into fix/issue-3787-skills-paths-discovery
- 579c5fc Merge pull request #4680 from code-yeongyu/code-yeongyu/bug-3968-provider-concurrency
- 255fb45 fix(model-core): also exclude k2-p6/k2.p6 separated forms, fix comment formatting
- a297427 fix(installer): preserve inferred WSL username casing
- ba6a7b9 fix(background-agent): group fallback retries by provider concurrency
- 58e5a1e Honor provider-level background concurrency limits
- 66df6f8 fix(installer): avoid WSL homedir fallback
- a8c2b9f fix(installer): keep WSL config on Linux home
- 35e793d Merge pull request #4677 from code-yeongyu/code-yeongyu/fix-4085-internal-continue
- 5cd23de fix(runtime-fallback): mark synthetic 'continue' fallback as internal (#4085)
- 6135753 Merge pull request #4296 from SpencerJung/fix/issue-4105-command-hang-timeout
- 7a65af2 Merge pull request #4676 from code-yeongyu/fix/issue-4144-background-reminder-contract
- de87e45 Merge pull request #4675 from code-yeongyu/fix/4670-cli-agent-id
- 7ddef67 Merge remote-tracking branch 'origin/dev' into fix/issue-4144-background-reminder-contract
- d4eb6f5 Merge remote-tracking branch 'origin/dev' into fix/4670-cli-agent-id
- a3b43f7 fix(cli): dispatch run agents by id
- 5393547 Merge pull request #4294 from SpencerJung/fix/issue-4130-connect-agent-registry
- 6427f75 Merge pull request #4673 from code-yeongyu/code-yeongyu/fix-ast-grep-4188-validation
- f9ac671 fix(ast-grep-mcp): reject non-file shim candidates
- a7475e8 fix(ast-grep-mcp): resolve Windows executable shims
- 35281e3 Merge pull request #4273 from YOMXXX/fix/doctor-reasoning-effort-max
- 31c46b5 Merge pull request #4667 from code-yeongyu/fix/4598-tui-plugin-export-detection
- bc1b5cc Merge pull request #4668 from code-yeongyu/fix/4262-lsp-windows-pathext
- 9fdfeec Merge pull request #4669 from code-yeongyu/fix/4251-keyword-idempotent
- a298c0d Merge pull request #4671 from code-yeongyu/code-yeongyu/context7-default-mcp
- 12fa523 fix(codex): keep Context7 MCP plugin-scoped
- 068e40c fix: avoid duplicate keyword mode injection
- f29364b fix(lsp): update Windows wrapper resolution
- 0286a68 Merge pull request #4485 from MoerAI/fix/posthog-env-permissive-parsing
- 8fe5af7 fix(doctor): allow file tui registrations
- 41714ea Merge pull request #4577 from Hungdoan565/fix/inject-auth-on-fresh-server-start-4572
- 4d5373d Merge pull request #4666 from code-yeongyu/fix/team-create-inline-schema-4656
- 6764d99 fix(doctor): gate tui advice on package export
- 6a05e09 fix(team-mode): expose inline team spec schema
- 0c67eab Merge pull request #4665 from code-yeongyu/feature/lazycodex-full-access-installer
- 98990d9 LazyCodex: delegate autonomous installs by default
- e3612e8 Codex: propagate autonomous installer default
- d593e46 Codex: skip autonomous permissions prompt
- ead80eb Codex: default installs to autonomous permissions
- bf863b5 Merge pull request #4663 from code-yeongyu/code-yeongyu/remove-effect-dependency
- fe28e0f fix(lazycodex): wire startup auto update
- 5760892 Merge pull request #4537 from MoerAI/fix/platform-binary-version-mismatch-warning
- 1fb5e35 Merge pull request #4574 from MoerAI/fix/skills-deduplicate-discovered-array
- 847b7f9 Merge pull request #4575 from Hungdoan565/fix/available-skills-dedup-4573
- 48eaefd Merge pull request #4639 from dihak/fix/tmux-placeholder-shell-quoting
- 48efdfe refactor(deps): remove direct effect dependency
- 61fd97e fix(install): honor non-tui provider setup
- be422db fix(postinstall): remove em dash from version-mismatch.js JSDoc per AGENTS.md
- d2bc0d1 fix(postinstall): compare full semver including prerelease suffix
- c8befcd fix(postinstall): warn when platform binary version differs from main package (fixes #3918)
- b74758a fix(tmux): escape quotes in placeholder command
- d74a0b3 fix(cli/run): inject server auth into client on fresh server start
- e67df0a fix(agents): deduplicate availableSkills to prevent double rendering in prompts
- d635147 fix(agents): deduplicate discovered skills before agent prompt render (fixes #4573)
- b3c593f fix(posthog): make OMO_DISABLE_POSTHOG env parsing case-insensitive and trim-tolerant (fixes #4368)
- 5ba1278 Normalize tmux subagent status maps
- d4b53d1 fix(background-agent): narrow EPIPE/ECONNRESET filter to stdio-or-shutdown
- b9f5c62 fix(skills): host opencode.jsonc wins over plugin config; drop unmaterialized urls
- 70c7791 fix(background-agent): swallow EPIPE/ECONNRESET in shutdown error listeners (#3772)
- 5f1a8bd fix(skills): respect host opencode.jsonc skills.paths in plugin discovery (#3787)
- c7ae1b3 fix(transcript): keep cached baseEntries pinned to last session fetch (#3647)
- 1c16bb6 docs: list reasoningEffort
xhighandmaxin features.md / configuration.md (#4165) - 02096c0 fix(command-executor): settle timed-out hook commands
- 66fefc3 fix(agent-config): refresh agent registry on config apply
- e78e872 fix(session-state): reset registered agent aliases
- 2feef13 fix(gpt-5.5): block synthetic background reminders
- 2a3933f test(doctor,schema): lock reasoningEffort 'max' acceptance against #4165 regression
- 3b4c93b fix(tasks-todowrite-disabler): stop blocking TodoWrite to keep todo panel live (#3764)
Thank you to 9 community contributors:
- @YOMXXX:
- fix(tasks-todowrite-disabler): stop blocking TodoWrite to keep todo panel live (#3764)
- test(doctor,schema): lock reasoningEffort 'max' acceptance against #4165 regression
- docs: list reasoningEffort
xhighandmaxin features.md / configuration.md (#4165) - fix(transcript): keep cached baseEntries pinned to last session fetch (#3647)
- fix(runtime-fallback): mark synthetic 'continue' fallback as internal (#4085)
- @SpencerJung:
- fix(gpt-5.5): block synthetic background reminders
- fix(session-state): reset registered agent aliases
- fix(agent-config): refresh agent registry on config apply
- fix(command-executor): settle timed-out hook commands
- fix(ast-grep-mcp): resolve Windows executable shims
- @Yeachan-Heo:
- fix(skills): host opencode.jsonc wins over plugin config; drop unmaterialized urls
- fix(background-agent): narrow EPIPE/ECONNRESET filter to stdio-or-shutdown
- @PeterPonyu:
- Normalize tmux subagent status maps
- Honor provider-level background concurrency limits
- @MoerAI:
- fix(posthog): make OMO_DISABLE_POSTHOG env parsing case-insensitive and trim-tolerant (fixes #4368)
- fix(agents): deduplicate discovered skills before agent prompt render (fixes #4573)
- fix(postinstall): warn when platform binary version differs from main package (fixes #3918)
- fix(postinstall): compare full semver including prerelease suffix
- fix(postinstall): remove em dash from version-mismatch.js JSDoc per AGENTS.md
- Merge pull request #4639 from dihak/fix/tmux-placeholder-shell-quoting
- Merge pull request #4575 from Hungdoan565/fix/available-skills-dedup-4573
- Merge pull request #4574 from MoerAI/fix/skills-deduplicate-discovered-array
- Merge pull request #4537 from MoerAI/fix/platform-binary-version-mismatch-warning
- @Hungdoan565:
- fix(agents): deduplicate availableSkills to prevent double rendering in prompts
- fix(cli/run): inject server auth into client on fresh server start
- @dihak:
- fix(tmux): escape quotes in placeholder command
- @wolfkill:
- fix: avoid duplicate keyword mode injection
- @Ruifeng-Zhang:
- fix(model-core): also exclude k2-p6/k2.p6 separated forms, fix comment formatting