github code-yeongyu/oh-my-openagent v4.0.0

4 hours ago

🎉 v4.0.0 — Finally, Team Mode

You waited. We cooked. Team Mode lands today.

This is the release that turns oh-my-opencode from "one agent with subagents" into a real multi-agent system — multiple agents, real-time coordination, side-by-side tmux visualization, all of it.

👥 Team Mode

A lead agent orchestrates a team of category-specialized members, all running in parallel and communicating through dedicated tools (team_create, team_send_message, team_task_create). Watch every member work simultaneously in a dedicated tmux layout — focus and grid windows let you zoom into one teammate without losing the bigger picture.

It powers everything new in this release:

  • hyperplan skill — 5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written
  • security-research skill — 3 vulnerability hunters + 2 PoC engineers auditing your codebase in parallel, with severity calibrated by actual exploitability
  • Hand-tuned member prompts so the team contract isn't accidentally bypassed via delegate_task

Opt in: set team_mode.enabled = true in your config and restart opencode. Off by default — enable it when you want it.

🧠 Model-Specific Agent Prompts

GPT-5.2 and GPT-5.3-codex now ship with category-tailored system prompts. Oracle, Momus, and the deep category each get a model-specific overlay tuned to that model's strengths.

🛡️ Reliability Hardening

  • Ralph loop stops cascading runtime errors — retries are guarded, atlas re-attempts boulders, ultrawork has full retry coverage.
  • Desktop plugin boots cleanly without Bun on Electron — bun:sqlite is hidden from the Node ESM loader.
  • Agent name sanitization — backslashes/quotes can no longer poison agent launches.
  • Doctor catches unexpected failures with actionable diagnostics instead of silent exit 137.
  • Credit-balance fallback — low balance correctly classifies as quota_exceeded and triggers the fallback chain.
  • PostHog billing trimmed — feature flags disabled, plugin_loaded event removed.

📚 Docs

Team mode and tmux-subagent features documented end-to-end across EN / KO / JA / RU / ZH-CN READMEs. New AGENTS.md sections for team-mode and tmux-subagent internals.

⚠️ Behavioral Changes

  • delegate_task (deep category): one goal per call is now enforced. Bundle multiple goals into parallel calls, not one bundled call.
  • When team mode is enabled, members orchestrate via team_* tools, not delegate_task.

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

  • 6b49e3b test agent runtime sort behavior
  • ee938aa fix full-suite isolation regressions
  • 102b5f9 fix(delegate-task): require one goal per deep call
  • 788fbec fix desktop plugin startup without Bun
  • 4bcbbdd Merge pull request #3832 from herjarsa/fix/desktop-electron-bun-protocol-compat
  • df48af3 Merge pull request #3830 from code-yeongyu/fix/posthog-billing-optimization
  • 9861510 @herjarsa has signed the CLA in #3832
  • 3a93a40 fix(desktop): hide bun:sqlite import from Node.js/Electron ESM loader
  • 8586cb8 fix(posthog): disable feature flags, remove plugin_loaded event for billing optimization
  • 10f9559 Merge pull request #3810 from code-yeongyu/fix/ralph-loop-retry-runtime-errors-v2
  • dfc7dfa feat(delegate-task): add GPT-5.3-codex specialized deep category prompt
  • 5eea702 feat(agents): add GPT-5.2 specialized prompts for oracle and momus
  • ebe26ea fix(ralph-loop): guard runtime error retries
  • 83ec352 merge dev into continuation runtime retry
  • 2c70938 test(ralph-loop): cover ultrawork runtime retry
  • 6a2d19d fix(atlas): retry boulder after runtime errors
  • cd88e35 chore(gitignore): ignore session/debugging artifacts and tool caches
  • 40ded42 chore(drafts): remove stale gpt-5.5 prompt drafts
  • 5190805 @oyi77 has signed the CLA in #3823
  • 1ad0fd4 Merge pull request #3748 from code-yeongyu/fix/simple-github-bugs-1948-3564
  • ef66516 Merge pull request #3801 from code-yeongyu/fix/directory-agents-non-string-output
  • 7bd863b Merge pull request #3813 from code-yeongyu/fix/agent-name-backslash-sanitize
  • d9ef03f test(agent): guard queueItem assertion against empty queue race
  • 25d183f fix(agent): sanitize backslash/quote from agent name in launch() and background-executor
  • 66a6f42 fix(todo-continuation-enforcer): preserve overload countdown
  • 89c9599 fix(team-mode): gate tmux layout cleanup by config
  • b4791c8 fix(team-mode): keep tmux visualization in caller window
  • 675f788 fix(team-mode): resolve caller tmux window target
  • 9dd0e9f Merge pull request #3622 from MoerAI/fix/truncate-tool-error-output
  • 4494887 Merge pull request #3612 from MoerAI/fix/doctor-exit-137-handling
  • 462d774 Merge pull request #3610 from MoerAI/fix/credit-balance-too-low-fallback
  • 2971322 fix(doctor): catch unexpected failures and provide actionable diagnostics (fixes #3345)
  • a22416d fix(error-classifier): classify credit balance too low as quota_exceeded for fallback (fixes #3571)
  • 7ac1109 Merge pull request #3636 from lucasyounger/codex/fix-3629-worktree-plan-path
  • 37d981e Merge pull request #3634 from auyua9/fix/ast-grep-pattern-hints
  • 0a7306c Merge pull request #3637 from ihoooohi/fix/claude-thinking-legacy-alias-collision
  • 7e43bea Merge pull request #3620 from MoerAI/fix/sisyphus-prompt-plan-reference
  • 62a7356 Merge pull request #3621 from MoerAI/fix/skill-tool-respects-plugins-config
  • 9b87fd5 Merge pull request #3744 from Arcadi4/dev
  • 6a341fc Merge pull request #3595 from samuele-ruffino96/feature/opencode-go-model-upgrade
  • f31860b fix(docs): resolve model table inconsistencies in installation guide
  • df7f64d fix(docs): correct Explore and Librarian fallback chains in installation guide
  • 467a4a5 fix(test): use toContain instead of providers[0].toBe for multi-provider entries
  • b7d77da fix(capabilities): add kimi-k2.6 to supplemental model entries
  • 1e93d37 docs(opencode-go): update docs and fallback chain tables to reflect glm-5.1, kimi-k2.6, qwen3.5-plus
  • 6cd40df feat(opencode-go): upgrade glm-5 → glm-5.1 and kimi-k2.5 → kimi-k2.6 in fallback chains
  • 0727d9a fix(opencode-go): replace non-existent minimax-m2.7-highspeed with qwen3.5-plus
  • ad2255e Merge pull request #2227 from DEAN-Cherry/docs/speed-up-fallback
  • d1a7c8f Merge pull request #3096 from s2mr/fix/git-master-language-agnostic-support
  • b0c7c9f Merge pull request #3811 from code-yeongyu/feat/readme-dori-image-update-v2
  • abba70c Merge pull request #3691 from islee23520/chore/gpt-5.5-followup-cleanup
  • 4deecdf Merge pull request #3358 from lrq3000/patch-1
  • 5624393 Merge pull request #3783 from matchai/feat/walk-up-config-discovery
  • c04f772 docs(readme): replace dated star-count copy in banner with timeless site catchphrases
  • 2bdd912 docs(install): extend rebrand to all bunx/npx oh-my-* commands for consistency
  • 766cdaf docs: align GPT-5.5 model references
  • 3aa6ff9 Merge pull request #3741 from hashen10/patch-1
  • f940cb4 docs(install): Update installation commands for humans in documentation to oh-my-openagent
  • 13c70cf docs(config): document hierarchical config discovery
  • eb1e104 refactor(config): tighten walk-up config discovery from oracle review
  • cc1d9cf feat(config): walk up directory tree to merge ancestor plugin configs
  • 47b5c56 fix(ralph-loop): retry runtime errors immediately
  • 3bf0b89 Merge pull request #3809 from code-yeongyu/feat/readme-dori-image-update
  • 8e17199 fix(ralph-loop): retry runtime errors immediately
  • a0be496 docs(readme): update Sisyphus Labs banner to new Dori branding
  • 53fc2a5 fix(bug-report): keep required: true for latest version checkbox
  • fe0fcd5 Update bug report template for openagent
  • 01c8a2a feat(shared): add findProjectOpencodePluginConfigFiles walker
  • 44216a5 Merge pull request #3578 from xiaolai/fix/nlpm-agents-missing-frontmatter
  • 3749656 Merge pull request #3784 from matchai/chore/remove-redundant-env-restore
  • 9e4a621 Merge pull request #3008 from YanzheL/fix/configuration-schema-issues
  • 573a530 Merge pull request #3006 from YanzheL/docs/fix-sisyphus-tasks-config-reference
  • 227c114 Merge pull request #3044 from haimingZZ/docs/fix-install-guide-link
  • 17f51ac Merge pull request #3009 from YanzheL/fix/ollama-ndjson-markup
  • 3dd1254 Merge pull request #3007 from YanzheL/fix/example-schema-urls
  • cedcd2d Merge pull request #3808 from code-yeongyu/feat/team-mode
  • 35426eb docs(readme): add Vercel to adopters list across all languages
  • cf3e05c Merge pull request #3807 from code-yeongyu/feat/team-mode
  • 44de4c5 docs(readme): rebrand Sisyphus Labs banner to Dori across all languages
  • 612680a Merge pull request #3493 from code-yeongyu/feat/team-mode
  • 8bcd236 docs(readme): align English banner wording with Korean source of truth
  • 4e5980d fix(tmux): avoid Bun global in runner bundle
  • 8003d1a test(ci): isolate stateful tests in CI runner
  • 786b065 test(background-task): mock notification shell chain
  • 2fd6be0 test(cli): update model fallback snapshots
  • 2d37df4 refactor(team-mode): use dedicated focus and grid windows for team layout
  • 503df29 fix(team-mode): register spawned sessions early
  • cb81930 fix(team-mode): stop tmux freeze when many teammates spawn
  • e6cd50c fix(team-mode): preserve tmux focus during layout
  • b99325f fix(skills): make hyperplan deep member optional
  • 1248450 fix(keyword-detector): pin hyperplan roster hint
  • 8f48277 fix(builtin-commands): pin hyperplan roster contract
  • ca8732f fix(team-mode): reject incomplete hyperplan teams
  • ea5e3e0 fix(model): allow artistry category fallbacks
  • 267745f test(plugin): remove forbidden assertions in event tests
  • d737f2e test(background-agent): remove forbidden assertions in manager tests
  • c90be7f feat(team-mode): align member and lead prompts with Claude Code free-code reference
  • f6643e7 fix(keyword-detector): yield to slash commands so /hyperplan executes its template
  • d8f89b6 fix(team-mode): preserve per-category model for kind:"category" members
  • cc17808 chore(schema): regenerate JSON schema for hyperplan-ultrawork keyword
  • 5c67482 feat(keyword-detector): add hyperplan-ultrawork combo + tuple refactor
  • 09fe4ca fix(hyperplan): align keyword detector and command template with mandatory plan handoff
  • 0b4390b feat(skills/hyperplan): mandate plan agent handoff after adversarial distillation
  • 9a0aec0 feat(skills): add hyperplan skill
  • 8344997 assets: regenerate oh-my-opencode schema with hyperplan
  • 3befe5f feat(keyword-detector): add hyperplan toast and planner filtering to hook
  • 5af4160 feat(builtin-commands): register hyperplan builtin command
  • 65e2643 feat(keyword-detector): add hyperplan to detector types list
  • b32f274 feat(keyword-detector): register hyperplan in keyword detectors array
  • f025a4c feat(keyword-detector): add hyperplan keyword pattern, message and test
  • a75a24d feat(builtin-commands): add hyperplan command template
  • 592308d feat(builtin-commands): add hyperplan to command name type
  • 4af7d62 feat(config): add hyperplan to keyword detector type schema
  • 585ad6d feat(config): add hyperplan to builtin command schema
  • 91b7fca fix(plugin): replace any type with explicit summarize overloads in event handler
  • 924dd85 fix(hephaestus): restore autonomy prompt section
  • b54922d fix(team-mode): forbid delegate-task in member guidance
  • 4d44877 fix(team-mode): reject empty team_create lead session override
  • 91c0d75 feat(keyword-detector): add per-keyword disable config
  • 25d9437 feat(keyword-detector): add team mode keyword detection
  • 2ffe5af feat(shared): add supplemental model capability entries for team-mode
  • c79addb test(shared): expand migrate-legacy-config-file tests for team-mode
  • 34b659a feat(shared): update agent display names for team-mode
  • 20a66f7 feat(plugin): wire team-mode into tool-guard and transform hook creation
  • f3b9a8a assets: update omo.png
  • 22056bd docs(readme): update zh-cn README for team-mode
  • c142f6d docs(readme): update ru README for team-mode
  • 073328b docs(readme): update ja README for team-mode
  • 5c04f3a docs(readme): update ko README for team-mode
  • dcd5beb docs(readme): update en README for team-mode
  • d7d9564 docs: add AGENTS.md for team-mode and tmux-subagent features
  • dc02767 docs: update overview, features reference and AGENTS.md for team-mode
  • c3884cc docs(guide): update agent-model-matching with team-mode
  • 6e1df2c docs(guide): add team-mode guide
  • 83eff39 assets: regenerate oh-my-opencode schema json with team-mode
  • 1168e3a test(perf): add plugin init team-mode resume-defer benchmark
  • a475e45 feat(cli): add doctor check for team-mode dependencies
  • 855c848 feat(opencode-skill-loader): adapt skill resolution and discovery for team-mode
  • 7fbefa4 feat(claude-code-loader): adapt plugin discovery for team-mode
  • 15a0e10 feat(background-agent): adapt task poller for team-mode work distribution
  • 00a6647 feat(background-agent): adapt idle event handler for team-mode sessions
  • a0d122b feat(background-agent): integrate team-mode into background manager
  • 417a368 feat(background-agent): extend types for team-mode background tasks
  • 2e6bb34 feat(builtin-commands): adapt commands and templates for team-mode
  • 39f27b9 feat(tools): wire team-mode into skill and subagent resolvers
  • 2078f9c feat(tools): extend delegate-task types for team-mode subagents
  • fc31524 feat(tools): register team-mode skill tooling and update exports
  • 75fc915 test(agents): expand hephaestus and utils tests for team-mode
  • 527ab51 feat(agents): adapt momus agent for team-mode context
  • 98a69b9 feat(agents): adapt agent-skill-resolution for team-mode skills
  • a110c73 feat(agents): register team-mode in builtin and general agent definitions
  • 6327a7a feat(agents): add available-skills resolution with tests
  • 79ba0e6 feat(hooks): add aggressive truncation strategy tests for context-window recovery
  • d2a28c1 feat(hooks): adapt session-recovery for team-mode session semantics
  • 473062d feat(hooks): export team-mode hooks from central index
  • d67e57e feat(plugin): include team-mode in message transform and skill context
  • dabd35f feat(plugin): integrate team-mode into session events and synthetic idles
  • f882f04 feat(plugin): add team-mode gating to tool execute hooks
  • 47e0fba feat(plugin): register team-mode tools and expand registry tests
  • 2258c00 feat(plugin-handlers): wire team-mode into agent, command and tool config handlers
  • 2c48cab feat(plugin): initialize team-mode at plugin entry and config merge
  • ecd9cee feat(hooks): add team tool gating hook with tests
  • 438806e feat(hooks): add team member status handler with tests
  • 384132c feat(hooks): add team member error handler with tests
  • de88241 feat(hooks): add team lead orphan handler with tests
  • c16c67c feat(hooks): add team idle wake hint handler with tests
  • bd768a4 feat(hooks): add team-mode status injector hook with tests
  • 7f8034c feat(hooks): add team mailbox injector hook with tests
  • 844dcd4 feat(builtin-skills): register team-mode skill in exports
  • c9fdb04 feat(builtin-skills): add team-mode skill implementation with tests
  • d3c020c feat(team-mode): export team-tools barrel
  • f2555fe feat(team-mode): add team tasks tools with tests
  • b71c6e1 feat(team-mode): add team query tools with tests
  • 379b3fd feat(team-mode): add team messaging tools with missing-session tests
  • f432798 feat(team-mode): add team lifecycle tools with inline spec tests
  • a10ab16 feat(team-mode): export team-runtime barrel
  • c657dff feat(team-mode): add team runtime shutdown helpers and tests
  • cb1c750 feat(team-mode): add team runtime resource cleanup with tests
  • 62d4090 feat(team-mode): add team runtime delete with background cancellation tests
  • 4645d56 feat(team-mode): add team runtime layout activation with tests
  • d958b7f feat(team-mode): add team runtime member dependency resolution
  • a65d54c feat(team-mode): add team runtime member resolver with tests
  • 301e02c feat(team-mode): add team runtime status query with tests
  • d9785c7 feat(team-mode): add team runtime create with tests
  • 51382c1 test(team-mode): add live tmux smoke test for team layout
  • f78b1e6 feat(team-mode): add sweep-stale-team-sessions with tests
  • 2b8096f feat(team-mode): add resolve-caller-tmux-session helper with tests
  • eb61091 feat(team-mode): add rebalance-team-window command with tests
  • a13ef03 feat(team-mode): add close-team-member-pane command with tests
  • c5df781 feat(team-mode): add tmux team layout creation and removal
  • 0f20a1b feat(team-mode): export team-mailbox barrel
  • 01aeeed feat(team-mode): add team mailbox reservation logic
  • 2ce86ff feat(team-mode): add team mailbox poll with tests
  • 3f69333 feat(team-mode): add team mailbox ack with tests
  • 07368b4 feat(team-mode): add team mailbox send with tests
  • 85cc30a feat(team-mode): add team mailbox inbox with tests
  • 796143a feat(team-mode): export team-tasklist barrel
  • b34cd87 feat(team-mode): add team tasklist test-support utilities
  • f725937 feat(team-mode): add team tasklist update with tests
  • 205ce93 feat(team-mode): add team tasklist dependencies with tests
  • 4270af3 feat(team-mode): add team tasklist claim with tests
  • 0433484 feat(team-mode): add team tasklist list with tests
  • 031a7a4 feat(team-mode): add team tasklist get with tests
  • 6e0f6ae feat(team-mode): add team tasklist store with tests
  • 23e6a53 feat(team-mode): export team-state-store barrel
  • 274df1f feat(team-mode): add team state store resume logic with tests
  • 79fb12e feat(team-mode): add team state store locks with tests
  • 1bec921 feat(team-mode): add team state store with tests
  • 48bac22 feat(team-mode): export team-registry barrel
  • 2866d32 feat(team-mode): add team registry validator with tests
  • cf050dc feat(team-mode): add team spec input normalizer with tests
  • de30721 feat(team-mode): add team registry loader with normalization tests
  • b2359c0 feat(team-mode): add team registry path utilities with tests
  • a910239 feat(team-mode): add team session registry with tests
  • 3a93cb7 test(team-mode): add integration test for team-mode lifecycle
  • 8c4c4ff feat(team-mode): add caller team-lead resolution with tests
  • 41d6e12 feat(team-mode): add member session resolution and routing logic
  • 8a42d7f feat(team-mode): add member guidance and parser utilities
  • 783d705 feat(team-mode): add core types, dependencies and type-level tests
  • 5e4ae88 test(tmux-subagent): expand zombie-pane test coverage
  • 49bb5dd test(tmux-subagent): add pane-state-querier runner tests
  • 8d3d882 test(tmux-subagent): add manager project-directory resolution tests
  • 77655a7 test(tmux-subagent): expand manager test coverage
  • 680927d test(tmux-subagent): expand polling-manager test coverage
  • b6dcf05 test(tmux-subagent): expand action-executor test coverage
  • c8b2250 refactor(tmux-subagent): stabilize polling, execution and session lifecycle with runner
  • 90e6e0c feat(openclaw): integrate typed tmux runner for external dispatch
  • 4a5e7cf feat(tmux): add window-spawn utility with tests
  • 13b3bd9 feat(tmux): add session-spawn utility with tests
  • ad31598 feat(tmux): add session-kill utility with runner tests
  • 56250a4 feat(tmux): add pane-spawn utility with runner tests
  • f93e15b feat(tmux): add pane-replace utility with tests
  • d901020 feat(tmux): add pane-dimensions utility with tests
  • cfce0cc refactor(tmux): migrate pane-close to runner and expand test coverage
  • b9a40f0 refactor(tmux): migrate layout commands to typed runner
  • c9e544a refactor(tmux): export sweepTmuxSessionsWith and add runtime tests
  • 96161cc feat(tmux): introduce typed tmux command runner abstraction
  • ec121a7 feat(config): add team-mode configuration schema and merge support
  • caaa3d4 refactor(hephaestus): tighten GPT-5.5 prompt for outcome-first density
  • bcaae10 fix(directory-agents-injector): guard against non-string output.output
  • c3beb37 fix(doctor): detect gh when Bun.which misses it
  • 9c4bceb fix(plugin): normalize bare schema refs
  • 9ba6763 fix(call-omo-agent): validate missing subagent type
  • f49afe7 refactor(agents): Add "max" to all codebase reasoning enums accordingly
  • 4c6fd2e chore(config): Allow option "max" for "reasoningEffort" field in schema
  • 9c7102b fix(aliases): stop rewriting canonical claude-opus-4-6-thinking
  • 828c263 Fix #3629: resolve boulder progress from worktree plan
  • e7ad2b9 fix(ast-grep): restore pattern hints in tools
  • 2c78cc6 fix(tool-execute-after): cap excessively long tool output to prevent TUI flooding (fixes #3586)
  • 7806df1 fix(tool-registry): pass plugins config to skill tool for proper command filtering (fixes #3582)
  • 32e56c0 fix(agents): reference prometheus instead of conditional plan alias in prompts (fixes #3596)
  • 53e3061 docs(agents): add YAML frontmatter to AGENTS.md documentation files
  • 9856684 fix(git-master): align validation check with language-profile approach
  • fdc4376 docs(git-master): sync skill markdown with multilingual wording
  • 01d6a7d docs(git-master): generalize language profile guidance
  • 034c5fe docs(git-master): make mode triggers language-agnostic
  • b473593 docs: fix install guide model-matching link
  • 0e8f5dd docs(ollama): fix NDJSON code block language identifier
  • 2ebf146 docs(configuration): fix invalid JSON examples and schema issues
  • cbd7dac docs(examples): update schema URLs to oh-my-openagent
  • dc41de9 docs: fix Sisyphus Tasks config reference to match actual schema
  • b8c4f44 docs: add guide for speeding up fallback with proxy APIs

Thank you to 8 community contributors:

  • @Arcadi4:
    • chore(config): Allow option "max" for "reasoningEffort" field in schema
    • refactor(agents): Add "max" to all codebase reasoning enums accordingly
  • @matchai:
    • feat(shared): add findProjectOpencodePluginConfigFiles walker
    • feat(config): walk up directory tree to merge ancestor plugin configs
    • refactor(config): tighten walk-up config discovery from oracle review
    • docs(config): document hierarchical config discovery
  • @hashen10:
    • Update bug report template for openagent
  • @lrq3000:
    • docs(install): Update installation commands for humans in documentation to oh-my-openagent
  • @islee23520:
    • docs: align GPT-5.5 model references
  • @samuele-ruffino96:
    • fix(opencode-go): replace non-existent minimax-m2.7-highspeed with qwen3.5-plus
    • feat(opencode-go): upgrade glm-5 → glm-5.1 and kimi-k2.5 → kimi-k2.6 in fallback chains
    • docs(opencode-go): update docs and fallback chain tables to reflect glm-5.1, kimi-k2.6, qwen3.5-plus
    • fix(capabilities): add kimi-k2.6 to supplemental model entries
    • fix(test): use toContain instead of providers[0].toBe for multi-provider entries
    • fix(docs): correct Explore and Librarian fallback chains in installation guide
    • fix(docs): resolve model table inconsistencies in installation guide
  • @MoerAI:
    • fix(error-classifier): classify credit balance too low as quota_exceeded for fallback (fixes #3571)
    • fix(doctor): catch unexpected failures and provide actionable diagnostics (fixes #3345)
  • @herjarsa:
    • fix(desktop): hide bun:sqlite import from Node.js/Electron ESM loader

Don't miss a new oh-my-openagent release

NewReleases is sending notifications on new releases.