This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+9 more
Affected surfaces
ReleasePort's take
Moderate signalThe release adds a /security-research team mode skill with exploitability calibration and CVSS v4.0 scoring, addressing multiple bug fixes across tooling components.
Why it matters: Introduces securityβfocused research capabilities using CVSSβ―v4.0 while fixing critical race conditions, configuration overrides, model handling, and Windows path issues that affect stability and reliability.
Summary
AI summaryBroad release touches Commit Summary, πͺ Cross-Platform Tooling Hardening, migration, and }.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Medium |
Adds /security-research team mode skill with exploitability calibration and CVSS v4.0 scoring. Adds /security-research team mode skill with exploitability calibration and CVSS v4.0 scoring. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Breaking | Medium |
Removes topβlevel `lsp` config key; migration required to `.opencode/lsp.json`. Removes topβlevel `lsp` config key; migration required to `.opencode/lsp.json`. Source: llm_adapter@2026-05-23 Confidence: high |
β |
| Bugfix | Medium |
Fixes parent-wake race condition that duplicated assistant streams. Fixes parent-wake race condition that duplicated assistant streams. Source: llm_adapter@2026-05-23 Confidence: high |
β |
| Bugfix | Medium |
Restores Atlas model override when resolution fails. Restores Atlas model override when resolution fails. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Allows multimodal-looker to trust any userβspecified vision model without provider declaration. Allows multimodal-looker to trust any userβspecified vision model without provider declaration. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Prevents automatic rewrite of `openai/gpt-5.3-codex` to `gpt-5.4`. Prevents automatic rewrite of `openai/gpt-5.3-codex` to `gpt-5.4`. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Reuses bundled ripgrep from OpenCode cache to avoid duplicate downloads. Reuses bundled ripgrep from OpenCode cache to avoid duplicate downloads. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Locks Windows astβgrep path matching to handle backslash and UNC suffixes consistently. Locks Windows astβgrep path matching to handle backslash and UNC suffixes consistently. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Preserves CJK terminal headers by avoiding NFC normalization mangling. Preserves CJK terminal headers by avoiding NFC normalization mangling. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Makes lateβarriving session IDs clickable for TUI subagent entries. Makes lateβarriving session IDs clickable for TUI subagent entries. Source: llm_adapter@2026-05-23 Confidence: low |
β |
| Bugfix | Medium |
Ensures `look_at` exits gracefully when child sessions produce no output. Ensures `look_at` exits gracefully when child sessions produce no output. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
β |
| Bugfix | Low |
Respects `/stop-continuation` after boulder completion, preventing stray nudges. Respects `/stop-continuation` after boulder completion, preventing stray nudges. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
β |
| Bugfix | Low |
Continues toolβpair validation after repairing missing `tool_result` blocks in multiβmessage conversations. Continues toolβpair validation after repairing missing `tool_result` blocks in multiβmessage conversations. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
β |
Full changelog
π‘οΈ /security-research β New Team Mode Skill
Spin up an adversarial 5-member security team in one command: 3 vulnerability hunters (surface, auth/data, runtime/supply) + 2 PoC engineers, all running in parallel. Every finding is calibrated by actual exploitability β no severity without an attack path. CWE classification + OWASP WSTG/ASVS methodology + CVSS v4.0 scoring built in.
/security-research
Requires team_mode.enabled: true in your oh-my-opencode.jsonc.
β‘ Parent-Wake Race Fixed β No More Duplicate Assistant Streams
Background-agent completion edges were duplicating parent-wake injections, occasionally starting a second assistant stream on the same task. The new parent-wake-dedupe layer catches this at BOTH the flush-time AND the prompt-async gate hold, so completion notifications now collapse to exactly one per logical event. (#4256 / #4019)
π§ Model Configuration Edge Cases Restored
Three fixes for users hitting model resolution corners:
- Atlas honors your override even when resolution fails (cold cache, no system default). Instead of silently dropping Atlas, it now registers with your chosen model. (#4255)
- multimodal-looker trusts your vision model β set
agents.multimodal-looker.modelto any provider/model and the vision-cache will accept it, no provider declaration needed. (#4209) openai/gpt-5.3-codexstops getting auto-rewritten β the canonical Codex powerhouse is no longer mistakenly migrated togpt-5.4. (#3777)
πͺ Cross-Platform Tooling Hardening
- OpenCode-bundled ripgrep reused β
~/.cache/opencode/bin/rgis probed first, so we stop duplicate-downloading ripgrep when OpenCode already has it. (#3805) - Windows ast-grep path matching locked β backslash + UNC suffixes now match the dist CLI consistently. Regression test pins this. (#4220)
- CJK terminal headers preserved β NFC normalization in
oh-my-opencode runoutput stops Hangul/CJK from mangling. (#4170)
β¨ TUI Quality of Life
- Clickable subagent entries β late-arriving session IDs are now captured before metadata publish, fixing the perpetual-spinner subagent bug. (#4252)
look_atno longer hangs β child sessions that produce no output exit gracefully viaallowStableIdleWithoutActivityinstead of waiting for the 120s timeout. (#4238)/stop-continuationrespected after boulder completion β no more stray completion nudges fired after you explicitly stopped. (#4149)- tool-pair-validator continues after repair β multi-message conversations with missing
tool_resultblocks now repair every affected message in one transform pass. (#4123)
β Breaking (cleanup): Top-level lsp Config Key Removed
Read this if your
oh-my-opencode.jsonchad anlsp:block. If you did not, you can ignore this section.
The migration in this release explicitly removes the top-level lsp config key and creates a timestamped .bak file next to your config. Move your server definitions to project-root .opencode/lsp.json β the new home, consumed by the lsp MCP server (backed by packages/lsp-tools-mcp).
Why this looks like a break but isn't: this key was already being silently stripped by the Zod schema since v3.x β custom LSP servers in this location have not been functional for several releases. This migration just makes the loss visible (via log + .bak backup) so you can actually recover.
To restore your servers (one-time):
# 1. Find the most recent backup created by this migration
ls -t ~/.config/opencode/oh-my-opencode.jsonc.bak.* 2>/dev/null | head -1
# or in your project:
ls -t .opencode/oh-my-opencode.jsonc.bak.* 2>/dev/null | head -1
# 2. Open the .bak file, copy the `lsp: { ... }` contents into project-root
# .opencode/lsp.json with this shape:
# {
# "$schema": "...",
# "servers": {
# "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }
# }
# }
(#4225 / #4279)
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.
Commit Summary
- 20d67be4 @EvangelosMoschou has signed the CLA in code-yeongyu/oh-my-openagent#4357
- 5e2f12fd Merge pull request #4348 from Yeachan-Heo/omc-team/you-are-one-of-5-parallel-work/worker-4
- 0c14c473 Merge pull request #4350 from Yeachan-Heo/omc-team/you-are-one-of-5-parallel-work/worker-3
- f390d365 Merge pull request #4352 from Yeachan-Heo/fix/atlas-config-model-override-4255
- 54513137 Merge pull request #4356 from Yeachan-Heo/fix/issue-3805-auto-tools-path
- bfc50789 fix: trust user-configured multimodal-looker model for vision (#4209)
- 779e2d2f fix(task): capture late-arriving sessionId so TUI subagent entry is clickable (#4252)
- 7d444eed fix(agents): honor user atlas model when resolution returns undefined (#4255)
- 6c691a1a fix(grep): probe OpenCode cache-backed bin for auto-downloaded rg (#3805)
- c0a6c667 Merge pull request #4346 from code-yeongyu/fix/agent-loop-dedupe-race-4256
- b3097e56 fix(background-agent): suppress redundant parent wakes
- 2bfad490 feat(skills): add security-research orchestration
- 1ecf4f64 @chouzz has signed the CLA in code-yeongyu/oh-my-openagent#4312
- 01d21962 Merge pull request #4238 from islee23520/fix/look-at-status-map-hang
- f511b4bc Merge pull request #4263 from YOMXXX/fix/gpt-5-3-codex-migration
- d06a5d7a Merge pull request #4272 from YOMXXX/fix/ast-grep-windows-cli-suffix-test
- 9da30095 Merge pull request #4279 from MoerAI/fix/migrate-orphan-lsp-config-key
- 74db81df Merge pull request #4285 from SpencerJung/fix/issue-4123-tool-pair-retrigger
- 6cac80fe Merge pull request #4290 from SpencerJung/fix/issue-4170-cjk-agent-header
- 12d7d104 Merge pull request #4282 from SpencerJung/fix/issue-4149-terminal-continuation-guard
- 6062df82 fix(migration): make 'lsp' migration guidance self-contained and update stale docs (addresses codex P2 on #4279)
- ed4c04e5 fix(cli): preserve CJK agent header text
- 28569307 fix(tool-pair-validator): continue after synthetic repairs
- 7dae2711 fix(atlas): honor stopped continuation after boulder completion
- a7429cc2 fix(migration): drop orphan 'lsp' config key so users see LSP moved to .opencode/lsp.json (fixes #4225)
- ccaf61e0 test(ast-grep): lock Windows backslash matching for ast_grep dist cli suffix (#4220)
- d788c3d1 fix(migration): stop rewriting explicit gpt-5.3-codex to gpt-5.4 (#3777)
- c4a51bee Cover look_at permanently absent session output
- b3a195d6 Avoid look_at status map wait hang
Thank you to 5 community contributors:
- @islee23520:
- Avoid look_at status map wait hang
- Cover look_at permanently absent session output
- @YOMXXX:
- fix(migration): stop rewriting explicit gpt-5.3-codex to gpt-5.4 (#3777)
- test(ast-grep): lock Windows backslash matching for ast_grep dist cli suffix (#4220)
- @MoerAI:
- fix(migration): drop orphan 'lsp' config key so users see LSP moved to .opencode/lsp.json (fixes #4225)
- fix(migration): make 'lsp' migration guidance self-contained and update stale docs (addresses codex P2 on #4279)
- @SpencerJung:
- fix(atlas): honor stopped continuation after boulder completion
- fix(tool-pair-validator): continue after synthetic repairs
- fix(cli): preserve CJK agent header text
- @Yeachan-Heo:
- fix(grep): probe OpenCode cache-backed bin for auto-downloaded rg (#3805)
Breaking Changes
- Top-level `lsp` config key removed; move definitions to `.opencode/lsp.json`
Security Fixes
- /security-research adds calibrated exploitability assessment and CVSS v4.0 scoring closing unspecified abuse vectors
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
Beta — feedback welcome: [email protected]