Releases: code-yeongyu/oh-my-opencode
v3.3.1
What's Changed
Full Changelog: v3.3.1...v3.3.1
v3.3.0
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_task → task: 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
tasktool 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.prompt → promptAsync 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
v3.2.4
What a wild day.
GPT 5.3 Codex and Claude Opus 4.6 dropped on the same day. That's not a coincidence — that's the universe telling us we're living through something historic. Two frontier model providers, shipping simultaneously. Monumental.
And we adopted both the same day they shipped.
108 files changed. +4,666/-4,625 lines. A same-day sweep from one end of the codebase to the other. When the frontier moves, we move with it.
Hephaestus: The Legitimate Craftsman Evolves 🔨
New mindset: "KEEP GOING. SOLVE PROBLEMS."
Autonomous recovery got smarter. Hephaestus now tries 3 different approaches before bothering you. Stuck on a bug? He'll pivot, retry, adapt — all on his own. This is what autonomous execution should feel like.
Plus: provider-based activation. Got OpenAI, Copilot, or OpenCode connected? Hephaestus is ready. No exact model matching gymnastics required.
Custom Skills: First-Class Citizens
User-installed skills now get HIGH PRIORITY treatment in prompts. No more blending in with builtins — they're clearly separated, emphasized, and respected. Your custom workflows matter.
Safety First: Write Guard
New hook blocks agents from silently overwriting existing files. The write tool now checks before clobbering. Peace of mind.
What's New
Models
- Claude Opus 4.5 → 4.6, GPT 5.2 Codex → 5.3 Codex across 108 files
- Auto-migration:
MODEL_VERSION_MAPupgrades your configs on load automatically - Claude Opus 4.6 prioritized in anthropic fallback chains
Hephaestus
- "KEEP GOING. SOLVE PROBLEMS." mindset upgrade
- 3-approach-first recovery rule before escalating to user
- Provider-based gating: activates by connectivity, not exact model match
Skills
- Dynamic skill priority: user-installed skills emphasized with HIGH PRIORITY
formatCustomSkillsBlock()extracted as shared DRY function
Safety & UX
- Write existing file guard: blocks overwrite of existing files
- Auto port selection: finds next available when 4096 is busy
look_atimage_data support: paste/clipboard images now work
Task System
- Task global storage with
ULTRAWORK_TASK_LIST_IDsupport
Fixes
- Atlas continuation guard: stops infinite retry loops
- Compaction model-agnostic: removed hardcoded Claude model prefix
- Sisyphus-Junior: uses category model instead of UI-selected model
- Plan agent: dynamic categories/skills (not hardcoded)
- Schema sync: Zod schemas aligned
- Regex special chars escaped in pattern matcher
- Disabled tools actually enforced now
- Glob/Grep uses
process.cwd()correctly - Background agent abort handled gracefully
- Custom skills env var restoration fixed
- Provider cache handles both
string[]andobject[]formats - LSP Windows: uses Node.js child_process (avoid Bun segfault)
- Boulder state agent tracking fixed
- Model availability honors connected providers
- Auto-update uses correct config dir
- Duplicate fallback entries cleaned
Refactoring
- Dead code removal:
ollama-ndjson-parser.ts,plugin-state.ts, unused types - Schema build:
z.toJSONSchema→zodToJsonSchema formatCustomSkillsBlockDRY extraction
Docs
AGENTS.mdregenerated across all directories- Config/feature docs updated
This is what shipping looks like when the frontier moves. Two models, one day, immediate adoption.
LFG 🔥 ulw ulw
Full Changelog: v3.2.3...v3.2.4
v3.2.3
What's Changed
✨ Features
- Multi-provider websearch support - Choose between Exa (default) and Tavily for web search (#1371 by @YanzheL)
- Nested skill directories - Skills can now be organized in subdirectories for better organization (#1254 by @LeekJay)
- Disabled skills support - Add
disabledSkillsconfig to selectively disable skills
🐛 Bug Fixes
Authentication & Server
- Fix OpenCode Desktop server unauthorized error on subagent spawn (#1399 by @ualtinok, @boguan)
- Add graceful fallback for server auth injection
Model & Provider
- Prefer exact model ID match in fuzzyMatchModel - fixes wrong model selection (#1460)
- Use supported variant for gemini-3-pro (#1463)
- Avoid
propertyNamesin skill-mcp for Gemini compatibility (#1465) - Honor explicit category model over sisyphus-junior default
Skill Loader
- Respect
disabledSkillsin async skill resolution (caching bug) - Deterministic collision handling for duplicate skill names (#1370 by @misyuari)
LSP & Tools
- Prevent stale diagnostics by syncing
didChangebefore fetching (#1280 by @Zacks-Zhang) - Fix overridden tools (glob, grep) path resolution for OpenCode Desktop
Agents & Hooks
- Deduplicate settings paths to prevent double hook execution (#1297 by @khduy)
- Honor tools overrides via permission migration (#1289 by @KonaEspresso94)
- Block bash commands in Prometheus mode to respect permission config (#1449 by @kaizen403)
- Abort session on model suggestion retry failure
- Add read-only restrictions for Metis and Momus agents
Shell & Environment
- Use
detectShellType()instead of hardcoded 'unix' for cross-platform support (#1459) - Force unix export syntax for bash env prefix in non-interactive environments
CI/CD
- Use regex variables for bash 5.2+ compatibility in changelog generation
🎨 Style
- Update Hephaestus and Prometheus agent colors
📚 Documentation
- Clarify Prometheus invocation workflow (#1466)
- Instruct curl over WebFetch for installation (#1461)
- Document websearch provider configuration
- Fix broken TOC links in translated READMEs (#1384 by @devxoul)
🔧 Other
- Respect user-configured agent variant in doctor command (#1464)
- Lazy evaluation prevents crash when websearch disabled
Full Changelog: v3.2.2...v3.2.3
v3.2.2
v3.2.2
🚀 GPT-5.2 Prompt Optimization
- Atlas, Sisyphus-Junior, Oracle: Model-based prompt routing with GPT-5.2 optimized prompts (XML structure, verbosity constraints, explicit decision criteria)
🧪 Experimental: Claude Code-style Task System
- New Tools:
TaskCreate,TaskGet,TaskList,TaskUpdatefor structured task management - File-based Storage: Tasks stored in
.sisyphus/tasks/with Claude Code compatible schema ⚠️ Important Limitation: This is experimental and does NOT sync with OpenCode's Todo UI. Enabling this will disableTodoWrite- todos won't appear in TUI. This is a known UX downgrade. We're exploring SDK integration solutions.- Enable: Set
experimental.task_system: truein config
✨ Agent & Hook Improvements
- Faster Exploration:
grok-code-fast-1as default explore agent model - Preemptive Compaction: Auto-summarizes session at 78% context usage (Anthropic models)
- Agent Fallback: First-run without cache now works properly
- CLI: Added
default_run_agentconfig andOPENCODE_DEFAULT_AGENTenv var
🐞 Bug Fixes
- config: Plan agent no longer inherits Prometheus prompt on demote
- background-cancel: Skip notification when user explicitly cancels tasks
- delegate-task: Fixed sisyphus-junior model override precedence
- prompts: Added missing
run_in_background,load_skillsparams in examples
🛠 New Skills
- github-pr-triage: Streaming PR analysis with background tasks
- github-issue-triage: Streaming issue analysis
What's Changed
Features
- delegate-task: add actionable TODO list template to plan agent prompt
- auto-slash-command: add builtin commands support and improve part extraction
- agents: add GPT-5.2 optimized prompt for sisyphus-junior
- tasks-todowrite-disabler: improve error message with actionable workflow guidance
- agents: add useTaskSystem flag for conditional todo/task discipline prompts
- agents: add Todo Discipline section to Hephaestus prompt
- task-system: add experimental task system with Claude Code spec alignment
- agents: respect uiSelectedModel in Atlas model resolution
- add agent fallback and preemptive-compaction restoration
- agents: add grok-code-fast-1 as primary model for explore agent
- skills: add streaming mode and todo tracking to triage skills
- agents: restructure atlas agent into modular directory with model-based routing
- task: add real-time single-task todo sync via OpenCode API
- task: refactor to Claude Code style individual tools
- cli: implement default agent priority in run command
- config: add default_run_agent schema option
- skills: add github-pr-triage skill and update github-issue-triage
- config: disable todowrite/todoread tools when new_task_system_enabled
Bug Fixes
- config: prevent plan agent from inheriting prometheus prompt on demote
- background-cancel: skip notification when user explicitly cancels tasks
- config-handler: preserve plan prompt when demoted
- prometheus: enforce path constraints and atomic write protocol
- prompts: add missing run_in_background and load_skills params to examples
- delegate-task: honor sisyphus-junior model override precedence
- honor agent variant overrides
- task-tool: add task ID validation and improve lock acquisition safety
Refactoring
- ultrawork: simplify workflow and apply parallel context gathering
- config-handler: separate plan prompt into dedicated configuration
- background-agent: optimize lifecycle and simplify tools
- oracle: optimize prompt for GPT-5.2 with XML structure and verbosity constraints
- prometheus: replace binary verification with layered agent-executed QA
- task: update schema to Claude Code field names
Full Changelog: v3.2.1...v3.2.2
v3.2.1
Bug Fixes
- background-agent: prevent concurrency slot leaks on task startup failures
- cli: add -preview suffix for GitHub Copilot Gemini model names
- ci: add shell: bash to retry action for Windows compatibility
v3.2.0 - Meet Hephaestus 🔨
3.2.0 — Meet Hephaestus 🔨
Highlights
🔥 Hephaestus: The Legitimate Craftsman Agent
In Greek mythology, Hephaestus was the god of forge, fire, metalworking, and craftsmanship—the divine blacksmith who crafted weapons for the gods.
Meet our new autonomous deep worker: Hephaestus (GPT 5.2 Codex Medium).
Why "Legitimate"? When Anthropic blocked third-party access citing ToS violations, the community started joking about "legitimate" usage. Hephaestus embraces this irony—he's the craftsman who builds things the right way.
Key Characteristics:
- Goal-Oriented: Give him an objective, not a recipe. He determines the steps himself.
- Explores Before Acting: Fires 2-5 parallel explore/librarian agents before writing a single line of code.
- End-to-End Completion: Doesn't stop until the task is 100% done with evidence of verification.
- Pattern Matching: Searches existing codebase to match your project's style—no AI slop.
- Legitimate Precision: Crafts code like a master blacksmith—surgical, minimal, exactly what's needed.
Inspired by AmpCode's deep mode—autonomous problem-solving with thorough research before decisive action.
What's New
Features
- agents: Add Hephaestus - autonomous deep worker agent (#1287)
- babysitting: Make unstable-agent-babysitter always-on by default
- todo-continuation: Show remaining tasks list in continuation prompt
- doctor: Detect OpenCode desktop GUI installations on all platforms (#1352)
- skill-mcp-manager: Enhance manager with improved test coverage
- hooks: Add unstable-agent-babysitter hook for monitoring unstable background agents
- background-agent: Add isUnstableAgent flag for unstable model detection
- background_output: Add thinking_max_chars option
- ci: Auto-generate structured release notes from conventional commits
Bug Fixes
- Windows: Improve compatibility and fix event listener issues (#1102)
- config: Properly handle prompt_append for Prometheus agent (#1271)
- tmux: Send Ctrl+C before kill-pane and respawn-pane to prevent orphaned processes (#1329)
- tests: Properly stub notifyParentSession and fix timer-based tests
- non-interactive-env: Always inject env vars for git commands
- background-agent: Abort session on task completion to prevent zombie attach processes
- ci: Add retry logic for platform binary builds
Refactoring
- background-agent: Show category in task completion notification
- delegate-task: Improve session title format and add task_metadata block
- background-agent: Optimize task timing and constants management
- agents: Improve explore/librarian prompt examples with 4-part context structure
- Major codebase cleanup - BDD comments, file splitting, bug fixes (#1350)
Documentation
- background-task: Enhance background_output tool description with full_session parameter
Full Changelog: v3.1.11...v3.2.0
v3.1.11
What's Changed
Features
- Oracle Safety Review: Added Oracle deployment safety review to
/get-unpublished-changescommand for pre-release analysis - Stop Continuation Command: New
/stop-continuationcommand to halt all continuation mechanisms (ralph loop, todo continuation, boulder) - GLM-4.7 Thinking Mode: Added thinking mode support for GLM-4.7 model
Bug Fixes
- Memory Leak Prevention: Track and cancel completion timers in background-agent to prevent memory leaks
- Zombie Process Prevention: Proper process lifecycle management to prevent zombie processes
- Windows LSP Fix: Added Bun version check for Windows LSP segfault bug
- Session Recovery: Fixed
/stop-continuationto be one-time only and respect session recovery - Start Work Fix: Always switch to atlas in
/start-workto fix Prometheus sessions - Test Stability: Added missing ToolContext fields to test mocks and consistent
_resetForTesting()usage - Dependencies: Regenerated bun.lock to restore vscode-jsonrpc dependency
Refactoring
- Removed orphaned
compaction-context-injectorhook - Consolidated duplicate patterns and simplified codebase (binary-downloader, model-resolution-pipeline, session-injected-paths)
Documentation
- Added
github-issue-triageskill with exhaustive pagination enforcement
Full Changelog: v3.1.10...v3.1.11
v3.1.10
No notable changes
v3.1.9
Hi Kimi! 👋
This release welcomes Kimi K2.5 to the oh-my-opencode family!
Personal Note: I've been testing Kimi K2.5 as an Atlas orchestrator, and it's been performing better than Claude Sonnet 4.5 in my workflows. Seriously impressive for a free model.
What's New in 3.1.9
Features
- Kimi For Coding provider: New provider option in installer for Sisyphus/Prometheus/Atlas fallback
- kimi-k2.5 fallback chains: Added to sisyphus, atlas, prometheus, metis, multimodal-looker agents
- deep category: Goal-oriented autonomous problem-solving with thorough research before action
- artistry category: Creative, unconventional approaches beyond standard patterns
- requiresModel field: Conditional category activation based on model availability
- model-suggestion-retry: Auto-retry with provider-suggested model on not found errors
- isModelAvailable helper: Fuzzy match model availability checking
Fixes
- Model resolution now falls back to client API when cache is empty/unknown
- Atlas properly respects fallbackChain and refreshes provider-models cache
- Fixed gh api command for starring repo
- Subagents no longer affected by UI model selection override
- npm OIDC publish fixes
Improvements
- ultrabrain category revamped with deep work mindset and code style requirements
- Replaced console.log/warn/error with file-based log() for silent logging
- Replaced big-pickle with glm-4.7-free for librarian fallback
- Oracle fallback prioritizes gemini-3-pro over opus
- momus opus fallback now includes variant max
Test Improvements
- Optimized test suite with FakeTimers and race condition fixes
