This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+9 more
Affected surfaces
ReleasePort's take
Light signalThe v4.17.0 release updates the default install model to GPT‑5.6 Sol with a 372K context window and introduces several ULW-loop improvements.
Why it matters: Defaulting to GPT‑5.6 Sol expands prompt capacity by 372K tokens, directly affecting installation workflows; bugfixes (severity 40) correct size‑tier routing, stop behavior, and security guards in ULW loops.
Summary
AI summaryBroad release touches Commit Summary, ulw-loop, lazycodex, and omo-codex.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Default install model set to GPT‑5.6 Sol with 372K context window. Default install model set to GPT‑5.6 Sol with 372K context window. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
ULW loops now auto‑resume via Stop hook with a two‑strike cap. ULW loops now auto‑resume via Stop hook with a two‑strike cap. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
Introduces difficulty‑tier routing for workers, delegating based on change size and risk. Introduces difficulty‑tier routing for workers, delegating based on change size and risk. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
Senpi task TUI now shows resolved model details, contextual status, and sanitized output excerpts. Senpi task TUI now shows resolved model details, contextual status, and sanitized output excerpts. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
| Feature | Low |
Prompt and skill changes are now tested at behavioral seams (parsed values, runtime sentinels, artifact equality) instead of fragile sentence matching. Prompt and skill changes are now tested at behavioral seams (parsed values, runtime sentinels, artifact equality) instead of fragile sentence matching. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes ULW size‑tier guidance to correctly select worker difficulty. Fixes ULW size‑tier guidance to correctly select worker difficulty. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Adds answer‑when‑answerable stop rule to Codex directive for ULW. Adds answer‑when‑answerable stop rule to Codex directive for ULW. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Binds QA evidence to its capture commit, preventing stale‑HEAD relabeling. Binds QA evidence to its capture commit, preventing stale‑HEAD relabeling. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Hardens Stop‑hook deferral and resume directive per review in ULW loop. Hardens Stop‑hook deferral and resume directive per review in ULW loop. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Registers spawn‑guard PreToolUse root manifest for ULW loop. Registers spawn‑guard PreToolUse root manifest for ULW loop. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Removes nested component .mcp.json from marketplace bundle and plugin cache. Removes nested component .mcp.json from marketplace bundle and plugin cache. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Stops continuation from every /stop‑continuation entry point in ULW. Stops continuation from every /stop‑continuation entry point in ULW. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Low |
Sanitizes terminal control sequences in Senpi TUI to prevent distortion from untrusted output. Sanitizes terminal control sequences in Senpi TUI to prevent distortion from untrusted output. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
| Bugfix | Low |
Fixes nested component MCP manifests with invalid relative daemon paths from being shipped in Codex bundles. Fixes nested component MCP manifests with invalid relative daemon paths from being shipped in Codex bundles. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
Full changelog
Codex Work That Scales to the Task
LazyCodex now selects low-, medium-, or high-difficulty workers from the actual change size and risk instead of routing every implementation through one general executor. New installs default to GPT-5.6 Sol with a 372K context window, while exploration and deep-analysis categories use the new Luna and Terra routes. The result is cheaper handling for narrow work and stronger reasoning where a change genuinely needs it.
ULW Loops Recover and Prove the Right Revision
Interrupted ULW runs can now resume automatically through a bounded Stop hook. Evidence is isolated by attempt, tied to the commit that produced it, and checked before the final reviewer starts. Spawn guards and reviewer preflight checks prevent runaway fan-out and stop stale evidence from being relabeled as proof for a newer HEAD.
More Useful, Safer Task Output
The Senpi task TUI now shows resolved model details and contextual status, control, and output excerpts. Rows are width-bounded and terminal control sequences are sanitized, so narrow terminals and untrusted task output no longer distort the interface.
Cleaner Plugin Installs and Honest Prompt QA
Codex bundles no longer ship nested component MCP manifests with invalid relative daemon paths. Prompt and skill changes are now tested at behavioral seams—parsed values, runtime sentinels, and shipped-artifact equality—rather than fragile sentence matching or word-count tests that block legitimate prose improvements.
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.
- Install and publish workflow hardening, including safer release sequencing and package/install fixes.
Commit Summary
- b4673bf07 Merge pull request #6050 from code-yeongyu/fix/ulw-size-tier-guidance
- 9741e995a feat(omo-codex): size-drive the ulw worker-tier selection
- d6a4631f6 Merge pull request #6049 from code-yeongyu/fix/ulw-agent-tier-config
- cdc710aae feat(omo-codex): emphasize code-mode parallel fan-out in hephaestus gpt-5.6 discovery
- 339e85b49 refactor(omo-codex): remove redundant lazycodex-executor agent; gate the workers
- e0734a8a6 fix(ultrawork): add answer-when-answerable stop rule to codex directive
- 7e26cae44 Merge pull request #6047 from code-yeongyu/fix/ulw-loop-evidence-commit-identity
- be7ea8f95 fix(ulw-loop): make the tool surface V2-native for GPT-5.6 (sol/terra)
- 940849332 Merge pull request #6048 from code-yeongyu/fix/codex-ulw-explore-first-plan-gate
- 1cc0be6c4 fix(ulw-loop): bind QA evidence to its capture commit to stop stale-HEAD relabeling
- 1a079089e test(ultrawork): pin explore-first scope-gated planning invariants
- 647cf1f29 fix(ultrawork): gather context before scope-gated planning in codex directive
- 09514c223 Merge pull request #6046 from code-yeongyu/fix/omo-codex-drop-nested-mcp-manifest
- 367d3b007 chore(package): ship git-bash-mcp package.json for vendored-MCP parity
- 661f9a3fe fix(lazycodex-sync): drop nested component .mcp.json from the marketplace bundle
- 740f034cf fix(codex-install): drop nested component .mcp.json from the plugin cache
- 28024d963 Merge pull request #6045 from code-yeongyu/fix/team-mode-deflake-windows-ci
- 7baf2bdb1 test(team-mode): give concurrency cases an explicit 30s per-test timeout
- 860e01cdc test(team-mode): make launch-concurrency probe waits event-driven
- 1a2c5dcdd Merge pull request #6044 from code-yeongyu/feat/lazycodex-gate-reviewer-high
- e278bc735 Merge pull request #6041 from code-yeongyu/feat/lazycodex-default-model-gpt-5.6-sol
- b70edfc76 feat(lazycodex): drop gate-reviewer reasoning effort to high
- 13addbf1d Merge pull request #6040 from code-yeongyu/feat/lazycodex-worker-medium-qa-plan-retune
- 8d610cf64 test(omo-codex): pin gpt-5.6-sol default; keep v1 legacy paths covered
- 81c0d8faa feat(omo-codex): default install model to gpt-5.6-sol/372k/high
- eda430f3b Merge pull request #6039 from code-yeongyu/fix/stop-continuation-session-suppression
- 45ac7be80 feat(lazycodex): retune worker-medium, qa-executor, and plan model tiers
- c611246f0 fix(stop-continuation): stop continuation from every /stop-continuation entry point
- 17104e1f6 Merge pull request #6038 from code-yeongyu/fix/worker-toml-nickname-charset
- 7124b08c2 test(codex-plugin): pin the codex nickname charset for bundled agent TOMLs
- 37d9b83ed fix(ultrawork-agents): worker nicknames violate codex role-loader charset
- 2ce3caec6 Merge pull request #6036 from code-yeongyu/feat/ulw-loop-infra-hooks
- 384cb0d26 fix(ulw-loop): harden Stop-hook deferral and resume directive per review
- f00b58114 feat(ulw-loop): register the spawn-guard PreToolUse root manifest
- bfd32af67 feat(ulw-loop): spawn fan-out cap and gate-reviewer artifact preflight guard
- 067f34b0e Merge pull request #6035 from code-yeongyu/docs/omomomo-command-roster
- ee2958b78 feat(ulw-loop): register the Stop resume hook on the root manifest surface
- 68ea25839 feat(ulw-loop): auto-resume interrupted runs via Stop hook with two-strike cap
- 235c0dc3d docs: fix stale agent roster in omomomo command copies
- bbdd08042 Merge pull request #6034 from code-yeongyu/docs/model-claims-audit
- 2b25d6492 Merge pull request #6031 from code-yeongyu/feat/ulw-loop-gate-middle-states
- c44d199f6 docs: fix omomomo agent roster, landing writing label, sync pre-publish-review skill
- 0b83b6aba docs(reference): sync agent and category chain tables with model-core
- 80ef1c81f docs(guide): correct stale model claims in orchestration, installation, overview, matching
- d463a2c73 docs: fix stale agent chains in READMEs across all languages
- a88c7f1fa fix(ulw-loop): make component tests pass on win32 CI
- 87b52059b fix(ci): run ulw-loop component suite before the plugin bundling build
- 2e40dbde2 style(ulw-loop): sort quality-gate imports per biome
- 1433f3842 chore(omo-codex): regenerate bundled installer from current source
- aaf328fb7 docs(ulw-plan): migrate scaffold evidence templates to the attempt directory
- fe552e683 fix(ulw-loop): make attempt containment separator-agnostic and CI-gate the component suite
- 683fe5775 docs(ultrawork-agents): route evidence path templates through currentAttemptDir
- b250866ee feat(ulw-loop): expose currentAttemptDir in status --json and goal handoff text
- b62899523 feat(ulw-loop): enforce attempt-scoped evidence directories at the final quality gate
- bccf3fa39 feat(ulw-loop): accept WATCH and reasoned not_applicable at the quality gate
- d9f01f5e8 fix(ulw-loop): stage final gate spawn after reviewer artifacts exist and bound re-review
- a9d76d87c Merge pull request #6030 from code-yeongyu/feature/lazycodex-difficulty-tier-routing
- e6c0dc6e5 fix(start-work): keep the corrected v2 agent_type claim authoritative in the synced skill
- 64624942f test(lazycodex): pin the extended SubagentStop verifier matcher
- 29526d71c test(lazycodex-install): pin explorer/librarian effort chain to the luna/low target
- e5f959b01 feat(lazycodex): enforce evidence receipts for difficulty-tier workers
- 142e503be feat(start-work): delegate implementation by difficulty tier on Codex
- ec8d5acca fix(ultrawork): restore child-liveness guidance and compress tier rows under word budget
- 2b9d08457 feat(lazycodex): difficulty-tier delegation guidance in ulw-loop workflow and directive
- 89766ee18 fix(lazycodex-install): chain explorer/librarian reasoning defaults to luna/low for upgraders
- bacfe64d1 feat(lazycodex): add difficulty-tier worker agents and route explorer/librarian to luna
- d75996574 Merge pull request #6029 from code-yeongyu/fix/ulw-verifier-calibration
- 4851d1817 chore(lazycodex): regenerate tracked init-deep skill with backoff prose
- a9e2e1286 fix(review-work): inline-blocker reject contract and wait backoff
- dd06e341a fix(ultrawork): bound the verification gate loop and delta-scope re-reviews
- 72bb08646 fix(lazycodex): rebalance reviewer burden-of-proof and inline REJECT blockers
- fb74d777b Merge pull request #6027 from code-yeongyu/docs/gpt-5-6-model-label-sync
- 47809d570 fix(web): correct model labels on landing page
- 511956e76 docs: sync localized README ultrabrain routing with gpt-5.6-sol default
- e001a917d Merge pull request #6026 from code-yeongyu/feat/gpt-5-6-category-defaults
- 54a375c64 test(omo-opencode): assert unspecified-low xhigh variant in delegate default test
- 1249bdd49 docs: reflect gpt-5.6 terra/luna category defaults in guides and examples
- 9a6036a0b feat(omo-opencode): adopt gpt-5.6 terra/luna builtin category defaults
- 9d51fb6b1 feat(model-core): route deep to gpt-5.6-terra xhigh, unspecified-low to gpt-5.6-luna xhigh
Breaking Changes
- Removed redundant lazycodex-executor agent; worker routing now gated by difficulty tier
- Install surfaces no longer ship nested component MCP manifests with invalid relative daemon paths
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
- v4.19.0 Removes legacy Ralph Loop wiring; introduces Goal feature with automatic config migration.
- v4.6.0 Removed broken direct public binary entrypoints from platform launcher packages, keeping them internal.
- v4.6.0 Removed legacy context-window monitor hook path from active hooks and config surfaces.
- v4.4.0 Removes top‑level `lsp` config key; migration required to `.opencode/lsp.json`.
Beta — feedback welcome: [email protected]