oh-my-openagent v5.0.0-beta.34

v5.0.0-beta.34Pre-release
Added 2
  • checkpoint --print-template emits surface-aware quality-gate skeleton and works without --goal-id
  • MCP ast-grep stdio server arms 10-minute idle timeout with OMO_AST_GREP_IDLE_TIMEOUT_MS override option
Changed 13
  • Recall is now a two-step loop with fire-and-forget memorian judge child that delivers recalled memory on the next turn
  • Recall configuration simplified to enabled and max_items, with per-agent tuning available via memory.agents.<id>.recall
  • Dream scanning reads each conversation once gated by journal byte offsets and reconciles at session start
  • Memory-core fs layer is EINTR-resilient with proper abort-signal handling and Windows-tolerant lock candidates
  • Quality-review agents bounded to three spawns per goal attempt with reset on explicit restart
  • ulw reviewer agents resolve their model through category router instead of hardcoded model chains
Fixed 5
  • LazyCodex installer now completes successfully and materializes the prompts-core ultrawork directive inside the cached plugin root
  • Ultrawork prompt is resolved checkout-first within plugin, preventing ENOENT errors in sync:skills
  • Recall delivery fails open with unwritable ledger degrading to missing record instead of swallowed hint
  • Grok output reserve is capped when output limit equals context window to prevent admission failures
  • LSP in-flight client stops are tombstoned and dead-client respawns are bounded

From oh-my-openagent

OMO v5.0.0-beta.34 + senpi v2026.9.2

This release rolls up everything since beta.30. beta.31, beta.32 and beta.33 were published to npm but never announced, and beta.32/33 shipped a broken LazyCodex install (every lazycodex-ai install died in sync:skills with an ENOENT on the ultrawork prompt). beta.34 is the one to upgrade to. If you're on beta.30, this is a big jump; if you're on 31/32/33, the Codex installer is fixed and the engine moved to senpi 2026.9.2.

Why the last three betas were silent

Each one was killed by a different release-pipeline defect, not by the product. beta.31 shipped with a recall file-mode pin that broke on win32. beta.32 fixed that but the Windows legacy-daemon fixture blew its readiness budget and the omo-native staging build skipped prebuilt inputs under --ignore-scripts. beta.33 fixed those but the published tarball was missing the prompts-core Codex prompt. beta.34 fixes the last link: the Codex installer flattens the plugin into <CODEX_HOME>/plugins/cache/sisyphuslabs/omo/<version>, and the ultrawork prompt was resolved repo-relative, so it was never there. Every fix landed with a failing-first regression, and the final smoke was replayed against the real published beta.33 tarball (exit 0, ultrawork SKILL.md carries the canonical body).

🔧 Codex / LazyCodex: the installer works again
  • npx -y lazycodex-ai@5.0.0-beta.34 install completes. The installer now materializes the prompts-core ultrawork directive inside the cached plugin root, and sync:skills resolves it checkout-first, plugin-internal second.
  • The ultrawork directive is single-sourced from prompts-core with a bundled runtime export, so Codex and omo-senpi ship the same text.
  • The unavailable codegraph stub stays alive on the Codex host instead of idling out and dropping the tool.
🧠 Memory: the memorian gate and recall
  • Recall is now a two-step loop. At settle, omo collects recall candidates from your committed memory and launches a fire-and-forget "memorian" judge child. On your next turn, whatever the judge picked arrives as one hidden recall message with one sourced <recalled-memory source="[[path]]"> block per nudge, so the agent can open the file for detail. Your current turn pays nothing for it.
  • Nudges are stamped with the compaction epoch. If the transcript gets compacted mid-flight, stale nudges are dropped instead of injected over a transcript that no longer exists.
  • memory.recall config shrinks to enabled and max_items, and memory.agents.<id>.recall lets you silence or tune recall for a single agent.
  • Recall delivery fails open: an unwritable ledger degrades to a missing record, never a swallowed hint. Only whole candidates that fit the token budget are delivered, and extension-injected messages stay out of transcript search.
  • Dreams reconcile at session start (an overdue identity gets a best-effort dream check), and dream scanning reads each conversation once, gated by journal byte offsets.
  • Default git template files are skipped, and the memory-core fs layer is EINTR-resilient with proper abort-signal handling and Windows-tolerant lock candidates.
🔁 ulw-loop: guided gates, bounded reviewers
  • checkpoint --print-template emits a surface-aware quality-gate skeleton and works without --goal-id. Gate validation errors are aggregated into one report, and snapshot, plan, and session-id errors come with guided recovery messages.
  • Repeated review spawns are bounded: each quality-review agent gets three spawns per goal attempt, reset on explicit restart, and only allowed spawns count toward fan-out (fixes #7392). Fan-out eligibility is checked before reviewer quota is charged, and counter writes are atomic.
  • The ulw reviewer agents (omo-senpi-code-reviewer, omo-senpi-qa-executor, omo-senpi-gate-reviewer) no longer carry hardcoded model chains: they resolve their model through the category router (code review -> unspecified-high, QA -> deep then unspecified-low, gate review -> deep then unspecified-high), so whatever you configure for those categories is what the reviewers run on.
  • omo-senpi ships its own ulw reviewer builtin agents, reviewer identities resolve per toolkit surface, article-bearing reviewer roles ("the V2 reviewer") parse, and explicit V2 assignments are honored.
  • The senpi surface gate is gate-review-only with a category chain: codeReview is dropped and manualQa is pinned to the main session. omo-opencode gets a category-chain fallback verifier for ultrawork verification.
🧩 Models, LSP, and MCP
  • Grok: the output reserve is capped when the output limit equals the context window, so requests no longer fail admission (fixes #7541).
  • terminal_quota_exhausted is a non-retryable abort instead of a retry loop. kimi-k3-ultrafast registers with a 256k default context instead of the base model's 1M. Empty provider model segments are rejected, and the ulw reviewer fallback chains are gone (the fallback table now lists 11 agents).
  • LSP: workspace roots collapse to the git repository root, so a monorepo no longer spawns one language server per package (in-vivo: 4 TLS + 8 tsserver, ~2.4GB, now one). In-flight client stops are tombstoned and dead-client respawns are bounded. Document URIs are normalized at the openByUri boundary.
  • MCP: the ast-grep stdio server arms a 10-minute idle timeout (OMO_AST_GREP_IDLE_TIMEOUT_MS to override) and idle servers get stdin destroyed so abandoned children exit. Under a bun-compiled omo host, the ast-grep child runs as plain bun instead of re-executing the omo binary (which used to boot a ghost agent session per connection attempt). Slack MCP tokens are redacted in logs.
🪟 Windows and path hygiene
  • Session manager preserves platform path roots, keeps POSIX separators in directory normalization, and normalizes the directory before session_list filtering.
  • Frontmatter parses after a UTF-8 BOM, OneDrive path segments match, whitespace-delimited tool names normalize, tar-listed filename whitespace is preserved, and contains path falls back when realpath fails.
  • Skills loader normalizes allowed tools from both config and merged sources, and the security-research skill reads the omo.jsonc config path.
🧹 Lifecycle and leak fixes
  • Delegated subagent lifecycle resources are released, the TUI mirror is wired into plugin disposal with its heartbeat unref'd and stopped, and continuation cleanup runs on every exit (anchors and revival cleanup preserved).
  • Hooks: idle transcript cache snapshots are pruned on a TTL sweep, unmatched fsync-skip start times are dropped, hashline pending captures are swept, unbounded session-id hook sets drain, and Anthropic recovery maps clear on dispose. A legacy snapshot race is closed.
  • Background tasks get a recovery hint and non-destructive truncation (backups are cleaned up after recovery), and the parent wake variant is preserved.
  • omo run ignores idle boulder state when there's no active plan. omo-ai ships and hardens the Senpi runtime patch, including hoisted installs, and bundles OAuth with hardened hook state.
  • Reliability: a large sweep made the test suite deterministic on Windows and slow runners (event-driven waits, controlled clocks, isolated fixture roots, no subprocess-shaped wrappers).
⚙️ Engine: senpi 2026.9.2 (and 2026.8.31)
  • Claude Fable 5.1 preset. claude-fable-5-1 is the dieted Fable 5 core plus the 5.1 prompting-guide deltas: scope-is-the-deliverable, per-response tool-call batching, surgical-edit preference, test-scope discipline, formatting and narration recalibration. The dotted release resolves before the generic fable-5 matcher, promptPreset: "claude-fable-5-1" forces it, and the default lanes (recommended model, fallback chain, startup tip) now point at 5.1. Sessions on the claude-fable-5 chain keep it.
  • Shared RPC host on Windows. Socket endpoints resolve to \\.\pipe\ named pipes derived from a per-endpoint secret with a constant-time authenticated handshake, pidfile ownership no longer depends on MSYS ps, and detached supervisor startup failures don't leak children. POSIX keeps unix sockets + 0600.
  • /quit and /exit during startup (managed-tool downloads) now quit instead of being parked in the editor, which also used to disable Ctrl+D.
  • ctx.shutdown() from an extension while the session is idle shuts down immediately instead of waiting for an agent_settled that never comes. Interactive quit keeps stderr capture installed while shutdown handlers drain, so diagnostics land in the debug log.
  • RPC: launch capabilities from SENPI_RPC_CLIENT_CAPABILITIES apply to bindings even when the client never sends set_client_info (this was breaking task/DAG/monitor liveness in omo-desktop-app). abort acks are sent as soon as the signal is dispatched. Clients can opt into native auto-titles with auto_title_sessions.
  • Compaction no longer wedges when the summarizer answers with a bare tool call (seen on gpt-5.6-sol at high reasoning): one retry with tool calling forbidden, then the deterministic no-LLM fallback on required routes.
  • Hooks trust-state reads keep a lock-free fast path for complete snapshots and take the bounded writer lock only on malformed reads, so mixed-version writers can't surface ELOCKED.
  • The shared multi-session RPC host reclaims itself: 30-minute idle eviction, 8 concurrent sessions, 15-minute empty-host exit, all overridable via SENPI_RPC_SESSION_IDLE_EVICTION_MS, SENPI_RPC_MAX_SESSIONS, SENPI_RPC_HOST_EMPTY_EXIT_MS.
  • Windows session resume no longer aborts on non-canonical fs.watch() paths. TTSR stream buffers keep only a tail window, and the in-memory session mirror is bounded at 64 MiB.
  • Refusal-caused model fallbacks release their pin after a successful senpi-owned compaction and re-attempt the original model once; billing-caused pins never release.
Install
npm i -g omo-ai@beta          # omo native CLI (5.0.0-0.beta.34, engine senpi 2026.9.2)
bun i -g oh-my-openagent@5.0.0-beta.34
npx -y lazycodex-ai@5.0.0-beta.34 install   # Codex plugin (fixed installer)

  • d20c167da Merge pull request #7645 from code-yeongyu/release/v5.0.0-beta.34-source-state
  • b840c2930 Merge pull request #7643 from code-yeongyu/test/team-message-windows-budget
  • de78d4244 Merge pull request #7635 from code-yeongyu/feat/reviewer-agents-category-model-routing
  • d6a868fab test(team-mode): budget Windows fallback wake case
  • 3216a23fa Merge pull request #7640 from code-yeongyu/fix/codex-cache-prompt-layout
  • 96f891e82 fix(codex-installer): materialize prompts-core directive into the plugin cache
  • 38a46e601 Merge pull request #7633 from code-yeongyu/refactor/model-core-drop-reviewer-agent-chains
  • 2546845e1 docs(model-core): agent fallback table now lists 11 agents
  • 0a9a3758b refactor(model-core): drop the ulw reviewer agent fallback chains

Thank you to 2 community contributors:

  • @MoerAI:
    • test(team-mode): budget Windows fallback wake case
    • Merge pull request #7643 from code-yeongyu/test/team-message-windows-budget
  • @sisyphus-dev-ai:
    • Merge pull request #7645 from code-yeongyu/release/v5.0.0-beta.34-source-state
View original

Upgraded? How did it go?

Discussion