github code-yeongyu/oh-my-opencode v3.3.0

latest release: v3.3.1
5 hours ago

Hi Subagents! 👋

The headline: Subagents are no longer black boxes. Click on a task tool call in the UI and see exactly what you delegated — prompt, description, model, session ID, the whole story.

delegate_tasktask: From Mystery to Transparency

Before v3.3.0, spawning a subagent meant sending it off into the void. You gave it a prompt, crossed your fingers, and waited. Want to know what instructions you actually sent? Tough luck — delegate_task kept its secrets.

Now with task:

  • Click to inspect: Every task tool call is clickable in the UI. One click reveals the full context.
  • ctx.metadata(): Subagent tasks now store title, description, prompt, category, model — everything you need.
  • storeToolMetadata(): Tool calls aren't just executed; they're documented.

Delegation isn't a leap of faith anymore — it's observable, debuggable, transparent.

Also Shipped

CLI: --port, --attach, --session-id, --on-complete, --json flags for run
Opus 4.6: Auto effort=max via anthropic-effort hook
Plugin safety: plugin_load_timeout_ms, safe_hook_creation, safeCreateHook()
ACP (Zed): 18x session.promptpromptAsync fix
MCP config: Reads both ~/.claude.json and ~/.claude/.mcp.json
UserPromptSubmitHooks: Now fires on every prompt
Compaction: TODO preservation improved
Cascade cancel: Parent deletion cancels child subagents
Windows: Multiple crash fixes
Desktop app: Cross-platform path support
Migration: System modularization

LFG ulw ulw! 🔥


What's Changed

Features

  • cli: extend run command with port, attach, session-id, on-complete, and json options
  • config: add plugin_load_timeout_ms and safe_hook_creation experimental flags
  • shared: add safeCreateHook utility for error-safe hook creation
  • register anthropic-effort hook in plugin lifecycle
  • add anthropic-effort hook to inject effort=max for Opus 4.6

Bug Fixes

  • mcp-loader: also read ~/.claude/.mcp.json for CLI-managed user MCP config
  • look-at: remove isJsonParseError band-aid (root cause fixed)
  • tools: switch session.prompt to promptAsync in delegate-task and call-omo-agent
  • hooks: switch session.prompt to promptAsync in all hooks
  • background-agent: switch session.prompt to promptAsync
  • core: switch compatibility shim to promptAsync
  • shared: switch promptWithModelSuggestionRetry to use promptAsync
  • hooks: fire UserPromptSubmitHooks on every prompt, not just first (#594)
  • mcp-loader: read user-level MCP config from ~/.claude.json (#814)
  • skill-loader: filter discovered skills by browserProvider (#1563)
  • skip ultrawork injection for plan-like agents (#1501)
  • migration: stop task_system backup writes (#1561)
  • rewrite dedup recovery test to mock module instead of filesystem
  • use lazy storage dir resolution to fix CI test flakiness
  • wire deduplication into compaction recovery for prompt-too-long errors (#96)
  • register compaction todo preserver
  • add compaction todo preserver hook
  • avoid invented compaction constraints
  • ensure truncated result stays within maxLength limit
  • cascade cancel descendant tasks when parent session is deleted (#114)
  • update session-manager tests to use factory pattern
  • use character limit instead of sentence split for skill description (#358)
  • allow string values for commit_footer config (#919)
  • use ctx.directory instead of process.cwd() in tools for Desktop app support
  • normalize resolvedPath before startsWith check
  • expand ALLOWED_AGENTS to include all subagent-capable agents
  • boulder continuation now respects /stop-continuation guard
  • anchor .sisyphus path check to ctx.directory to prevent false positives
  • use platform-aware binary detection (where on Windows, which on Unix)
  • allow dash-prefixed arguments in CLI run command
  • don't fallback to system 'sg' command for ast-grep
  • allow dash-prefixed arguments in CLI run command
  • make model migration run only once by storing history in _migrations field
  • explicitly pass encoding/callback args through stdout.write wrapper
  • test: remove shadowed consoleErrorSpy declarations in on-complete-hook tests
  • address cubic 4/5 review issues
  • test: mock SDK and port-utils in integration test to prevent CI failure
  • clear race timeout after plugin loading settles
  • index: wrap hook creation with safeCreateHook + add defensive optional chaining (#1559)
  • config-handler: add timeout + error boundary around loadAllPluginComponents (#1559)
  • trim whitespace from tool names to prevent invalid tool calls
  • allow Prometheus to overwrite .sisyphus/*.md plan files
  • hooks: add defensive null check for matcher.hooks to prevent Windows crash (#441)
  • respect user-configured agent models over system defaults
  • respect user-configured agent models over system defaults
  • guard against undefined modelID in anthropic-effort hook

Refactoring

  • migration: split model and category helpers (#1561)
  • migration: extract agent and hook maps (#1561)
  • extract context window recovery hook
  • migrate delegate_task to task tool with metadata fixes

Documentation

  • add comprehensive local testing guide for acp-json-error branch

Other Changes

  • Merge pull request #1620 from potb/acp-json-error
  • Merge pull request #1621 from code-yeongyu/fix/814-mcp-config-both-paths
  • Merge pull request #1616 from code-yeongyu/fix/814-user-mcp-config
  • Merge pull request #1618 from code-yeongyu/fix/594-user-prompt-submit-fires-once
  • Merge pull request #1615 from code-yeongyu/fix/1563-browser-provider-gating
  • Merge pull request #1584 from code-yeongyu/fix/441-matcher-hooks-undefined
  • Merge pull request #1614 from code-yeongyu/fix/1501-ulw-plan-loop
  • Merge pull request #1613 from code-yeongyu/fix/1561-dead-migration
  • Merge pull request #1610 from code-yeongyu/fix/96-compaction-dedup-recovery
  • Merge pull request #1611 from code-yeongyu/fix/1481-1483-compaction
  • Merge pull request #1607 from code-yeongyu/fix/358-skill-description-truncation
  • Merge pull request #1608 from code-yeongyu/fix/114-cascade-cancel
  • Merge pull request #1606 from code-yeongyu/fix/658-tools-ctx-directory
  • Merge pull request #1605 from code-yeongyu/fix/919-commit-footer-v2
  • Merge pull request #1593 from code-yeongyu/fix/prometheus-plan-overwrite
  • Merge pull request #1604 from code-yeongyu/fix/957-allowed-agents-dynamic
  • Merge pull request #1594 from code-yeongyu/fix/boulder-stop-continuation
  • Merge pull request #1603 from code-yeongyu/fix/1269-windows-which-detection
  • Merge pull request #1601 from code-yeongyu/fix/899-cli-run-dash-args
  • Merge pull request #1602 from code-yeongyu/fix/1365-sg-cli-path-fallback
  • Merge pull request #1597 from code-yeongyu/fix/899-cli-run-dash-args
  • Merge pull request #1595 from code-yeongyu/fix/tool-name-whitespace
  • Merge pull request #1592 from code-yeongyu/fix/issue-1570-onetime-migration
  • Merge pull request #1590 from code-yeongyu/feat/run-cli-extensions
  • Merge pull request #1585 from code-yeongyu/fix/1559-crash-boundary
  • Revert "Merge pull request #1578 from code-yeongyu/fix/user-configured-model-override"
  • Merge pull request #1578 from code-yeongyu/fix/user-configured-model-override
  • Merge pull request #1564 from code-yeongyu/feat/anthropic-effort-hook
  • Merge pull request #1543 from code-yeongyu/feat/task-tool-refactor

Full Changelog: v3.2.4...v3.3.0

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

NewReleases is sending notifications on new releases.