This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+9 more
Affected surfaces
Summary
AI summaryBroad release touches Commit Summary, prompts-core, π₯ Team-Mode UX, and π Web.
Full changelog
v4.5.0 β Publish Safety & Internal Refactor
This release hardens runtime safety (fallback loops, parent-wake stalls, publish payload) and lands the long-running prompts-core refactor that splits every agent/mode prompt into versioned markdown.
π‘οΈ Publish Safety Hardening
Three guard rails that close production-impact pre-publish gaps:
- runtime-fallback no longer trusts
isRetryable: trueon 4xx errors. If a provider mis-tagged a 401/403/404 as retryable, every configured fallback model would burn in an infinite loop. The signal is now gated to absent status codes, 5xx, the configuredretry_on_errorslist, and{408, 425, 429}. - parent-wake escapes a second stuck state. When the assistant's text stream died mid-message with no pending tool call, parent-wake deferred forever and background-agent completions never reached the parent. A bounded escape path now dispatches after
toolCallDeferMaxMs. - npm payload blocks internal-only assets. Nested
.npmignoreper published dot-directory + a newscript/package-layout-exclusion.test.tspermanent guard. Drop a__draft-foo/SKILL.mdinto.opencode/skills/and CI fails before it ships to npm.
π Ralph-Loop Liveness
Three independent stuck-state escapes for ralph-loop:
- Oracle dispatch wait is now time-bounded (30-minute hard ceiling); previously a crashed/OOM-killed oracle session would freeze the loop forever.
- Loop auto-stops when the latest assistant turn made zero model progress (both token counts at zero AND no assistant content).
- The double-fire race fix no longer ignores in-flight oracle dispatches that never complete.
π Background-Agent Delivery
Four fixes converge on one outcome β completion alerts get through:
- Debounced active parent wake flushes (no more thundering herd on burst completion).
- Completion wakes deliver during active parent turns instead of being silently dropped.
- Dispatched parent wake failures are isolated so one failure does not cascade.
- Atlas subagents retry on provider usage-limit errors (no more dead-end runs).
π₯ Team-Mode UX
- Leaders now wake on unread mailbox messages (#4464). Idle leads no longer sleep through worker pings.
- Model overrides preserved across team-mode boundaries.
- Lead closes teams on its own initiative β no more lingering teams burning session / mailbox / member-turn budget.
π§ Prompts-Core Migration (50+ commits, zero user-facing API change)
Every agent and mode prompt now lives in versioned markdown under packages/prompts-core/:
- Atlas: 5 variants (default / GPT / Gemini / Kimi / Opus-4.7)
- Prometheus: full prompt + variant table
- Ultrawork: 4 variants (default / GPT / Gemini / planner)
- Mode prompts: search / analyze / team / hyperplan
Companion dist-bundle test scans the built bundle for unique prompt signatures; a future Bun upgrade that silently regresses markdown inlining will fail CI loudly instead of breaking installs at first agent load.
π§ Continuation + Validators
fix(continuation): resolves registered agent names before dispatching prompts (#4417) β fixes the empty-string bug when display names like"Atlas - Plan Executor"were used.fix(prompt-async-gate): retry object-form path on runtime type errors (#4417).fix(thinking-block-validator): avoid duplicate thinking prepends (#4374) β kills the dual-thinking-streams race.
π©Ί Doctor + Help JSON Schemas
oh-my-opencode doctor, sandbox, status, and acp now expose JSON schemas for their help output β enables shell completion, structured CLI introspection, and --help consistency.
ποΈ Internal Package Layering
Workspace split into 9 published packages: utils / model-core / prompts-core / rules-engine / agents-md-core / ast-grep-core / comment-checker-core / hashline-core / boulder-state. Internal cleanup β no breaking changes to the plugin API.
π Web
- Marketing site canonical domain migrated to omo.dev.
- README translations refreshed for ja / ko / ru / zh-cn.
π Reviewer Note
This release was gated by a publish-debate-vortex hyperultradebate β 6 hostile category-member agents (quick / unspecified-low / unspecified-high / deep / ultrabrain / artistry) cross-attacked the 103-commit changeset across 3 rounds. The 3 must-fix blockers it identified β runtime-fallback boolean guard, parent-wake stuck escape, npm payload exclusion β all landed in this release.
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-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
- 52ba1257 Merge branch 'fix/pre-publish-blockers-v4.5.0'
- 8e28e29c fix(package): block internal-only assets from publish payload
- 5c0cc0de @Hungdoan565 has signed the CLA in code-yeongyu/oh-my-openagent#4492
- ec552bcf fix(ralph-loop): stop loop when latest assistant turn made no model progress
- 9810bad3 docs(publish-skill): pin Jobdori bot ID in Discord release commands
- 91aa9154 @fcmfcm01 has signed the CLA in code-yeongyu/oh-my-openagent#4482
- be2ed2b2 Merge pull request #4479 from code-yeongyu/fix-4470-momus-cancels-main
- 3b421c6e fix(background-agent): isolate dispatched parent wake failures
- b03e08b4 Merge pull request #4478 from code-yeongyu/fix-4164-bg-reminder-timing
- e1fde719 Merge pull request #4477 from code-yeongyu/fix-4374-dual-thinking-streams
- ec7ce51e fix(background-agent): debounce active parent wake flushes
- 6a561446 fix(background-agent): deliver completion wakes during active parent turns
- e443e86d fix(thinking-block-validator): avoid duplicate thinking prepends
- 037d017a Merge pull request #4476 from code-yeongyu/fix-4464-team-leader-wake
- 3e099108 @2wndrhs has signed the CLA in code-yeongyu/oh-my-openagent#4475
- 58025f9b fix(team-mode): wake leaders on unread mailbox messages (#4464)
- 759b5668 Merge pull request #4474 from code-yeongyu/fix-4441-omo-evidence-ignore
- 3e115948 chore(repo): untrack .omo/evidence and .omo/notepads per .gitignore
- dc050745 @hanakokoizumi has signed the CLA in code-yeongyu/oh-my-openagent#4467
- 939f2b8b @SoShymKing has signed the CLA in code-yeongyu/oh-my-openagent#4469
- 03eb9fff Merge pull request #4465 from code-yeongyu/fix-4417-atlas-path-and-start-work
- 28efc4e8 fix(continuation): resolve registered agent name before dispatching prompt (#4417)
- a5cee769 fix(prompt-async-gate): retry object-form path on runtime type error (#4417)
- c25c3383 Merge pull request #4454 from code-yeongyu/fix-4448-npm-pack-dot-dirs
- 94d9d932 Merge pull request #4453 from code-yeongyu/fix-4419-atlas-subagent-fallback
- 0d0be435 Merge pull request #4452 from code-yeongyu/fix-4449-tool-execute-after-stall
- 9c56bf22 test(script): typecheck package layout regression
- 72119b3a fix(package): ship dot-directory command assets
- f57532cb fix(tool-execute-after): narrow metadata warning tools
- dc845a88 chore(web): migrate canonical domain to omo.dev
- 6551f389 fix(background-agent): retry Atlas subagents on usage limits
- 767f5a61 fix(model-core): retry OpenAI usage_limit_reached fallbacks
- 6343feb6 Merge pull request #4450 from code-yeongyu/fix-4447-subagent-task-deny
- 4a68db02 fix(tool-execute-after): gate metadata recovery warnings
- 75d1ff4c fix(plugin-handlers): deny task for read-only subagents
- 9be97de6 Merge pull request #4435 from code-yeongyu/fix/issue-4429-team-mode-model-override
- 9fd52cb6 feat(help): #689 acp help JSON schema
- eed88e41 feat(help): #689 acp help JSON schema
- bab9caa6 feat(help): #688 sandbox help JSON schema
- 1fdb88a3 feat(help): #688 sandbox help JSON schema
- 2c6c42f8 feat(help): #687 status help JSON schema
- 36e394a5 feat(help): #687 status help JSON schema
- a73e4db1 feat(help): #686 doctor help JSON schema
- 21713dcd fix(agents): preserve model overrides with team mode
- 776da68e feat(help): #686 doctor help JSON schema
- ce4b11b0 fix(cli): add explicit helpOption configuration for consistent help-flag ordering
- 3e0a975d test(dist-bundle): assert inlined prompt content survives bundling
- 14b3523a fix(ralph-loop): time-bound oracle dispatch wait to prevent stall
- 69c955f6 fix(parent-wake): bound assistant-text defer to escape stuck sessions
- f05e0cbe fix(runtime-fallback): gate retryable signal on status-code allowlist
- 222adeb6 fix(runtime-fallback): honor retryable signal
- de7f1d88 Merge pull request #4400 from code-yeongyu/refactor/prompts-core-oracle-cleanup
- 8f09c02c docs: scrub remaining references to migrated files
- d18cadb1 test(ultrawork): add byte-exact characterization test
- e0b37b46 test(prometheus): add byte-exact characterization test
- 9d204250 docs(keyword-detector): rewrite AGENTS.md for prompts-core migration
- 87e28d26 docs(prometheus): rewrite AGENTS.md for thin-loader structure
- 640d7f7b Merge pull request #4396 from code-yeongyu/fix/session-scoped-internal-wake
- 3d0b4c4a fix(parent-wake): block unfinished assistant wakes
- 2ea7c492 Merge pull request #4390 from code-yeongyu/refactor/prometheus-to-prompts-core
- 1f32b885 refactor(prometheus): remove migrated section TypeScript files
- 8fc429a5 refactor(prometheus): load prompt variants from prompts-core
- 3806d93d feat(prompts-core): wire Prometheus variant table
- fa0500e9 feat(prompts-core): add Prometheus prompt markdown variants
- 4749eab2 Merge pull request #4389 from code-yeongyu/refactor/mode-prompts-to-prompts-core
- 803f030b Merge remote-tracking branch 'origin/dev' into refactor/mode-prompts-to-prompts-core
- 528f083f Merge pull request #4388 from code-yeongyu/refactor/atlas-to-prompts-core
- 63ef72d1 docs(agents): document prompts-core mode prompts
- 80361c05 chore(prompts-core): wire markdown prompt packaging
- 2c8e2dac refactor(mode-prompts): migrate hyperplan prompt
- e79baf59 refactor(mode-prompts): migrate team prompt
- 3b7f51d5 refactor(mode-prompts): migrate analyze prompt
- 5cefbdbb refactor(mode-prompts): migrate search prompt
- c187dba5 test(keyword-detector): capture mode prompt baselines
- 8451ecd1 docs(atlas): document prompts-core prompt ownership
- 582c768b refactor(atlas): remove migrated TypeScript prompts
- 4975c354 refactor(atlas): load prompt variants from prompts-core
- 96a93650 build(prompts-core): bundle markdown prompt variants
- 91351d73 feat(prompts-core): support bundled prompt sources
- b77fed28 feat(prompts-core): add Atlas Opus 4.7 prompt markdown
- 2adcec8f feat(prompts-core): add Atlas Kimi prompt markdown
- d5995b38 feat(prompts-core): add Atlas Gemini prompt markdown
- 19237611 feat(prompts-core): add Atlas GPT prompt markdown
- 565d0994 feat(prompts-core): add Atlas default prompt markdown
- a92e25a1 test(atlas): add prompt byte preservation baselines
- 66445241 Merge pull request #4386 from code-yeongyu/refactor/ultrawork-to-prompts-core
- 79beeeee docs: document ultrawork prompt markdown location
- d217efc1 build(prompts): inline markdown prompt imports
- e772c468 refactor(ultrawork): move planner prompt to prompts-core
- e51acd0a refactor(ultrawork): move gemini prompt to prompts-core
- a818bbd9 refactor(ultrawork): move gpt prompt to prompts-core
- 9c366cce refactor(ultrawork): move default prompt to prompts-core
- 39b3cbcb chore(ultrawork): capture prompt baseline hashes
- 46ad6bfd Merge pull request #4385 from code-yeongyu/refactor/prompts-core-foundation
- 436c6187 fix(prompts-core): block prompt path traversal
- 74d5f701 chore(prompts-core): wire package typecheck
- da0fa83f test(prompts-core): audit opencode coupling
- c44a6bdb feat(prompts-core): add prompt loader
- 6301bcf0 feat(prompts-core): add variant resolver
- 4338ddb8 feat(prompts-core): add package skeleton
- 87de0563 refactor(model-core): move model family detectors
- e1e9f348 Merge pull request #4382 from code-yeongyu/feat/ultrawork-prompt-tdd-evidence-tightening
- d073bf1b feat(ultrawork): enforce TDD, scenario contract, durable notepad, reviewer gate
- 39a549a3 Merge pull request #4381 from code-yeongyu/fix/team-mode-closure-prompts
- 5f1fb0c5 fix(team-mode): make lead close teams on its own initiative
- a4dcbb6b docs(publish): use Jobdori bot for releases
- 1473f93f Merge pull request #4380 from code-yeongyu/fix/ralph-loop-oracle-double-fire-race
- 9a1dd756 fix(ralph-loop): skip handleFailedVerification when oracle dispatch is in flight (#4256)
- 3523dab0 @niStee has signed the CLA in code-yeongyu/oh-my-openagent#4378
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Earlier breaking changes
Beta — feedback welcome: [email protected]