Share one MCP connection across projects, run scripted sessions in fresh git worktrees, and keep CI runs out of your inbox. OpenCode 2.2.6 is here. Want to see what else changed?
Release Context
This was the 209th OpenCode release of 2026 tracked by Havoptic.
Highlights - Shared MCP Connections: Turn on pooling for an MCP server to share one connection across projects with the same setup, so you run fewer processes and start faster. (61185) - GUI Plugin Themes and New Slots: GUI plugins can now add color themes, render or add actions to code blocks, and use native settings and menu components. (61485, 61533, 61527, 61509) - Mobile Composer Dock: On phones and tablets, composer actions now sit in a touch dock above the keyboard with larger buttons. (61773) - Scripted Runs in Worktrees: Run opencode run -w to start the session in a new git worktree, or --worktree=<name> to name it. (60712) - Automatically Archived Runs: Add --archived to opencode run to keep scripted and CI sessions out of your inbox and session lists. (61270) Core Improvements - Added opt-in MCP connection sharing through pool: true. (61185) - Added opencode run --archived, which creates the session already archived so scripted and CI runs stay out of the inbox, home, and session lists. Archived sessions are also hidden from the TUI session list and skipped by --continue. (61270) - Added opencode run --worktree (-w), which starts the session in a new git worktree. Use --worktree=<name> to choose the worktree name. It cannot be combined with --continue or --session. (60712) - Added provider- and model-specific session warming settings, including an interval: "auto" mode based on cache TTL. (60025, 60969) - Added the websearch.use policy action and switches for enabling all feature flags with OPENCODEFLAGS=all or experimental.allflags. (61557, 61826) - Added an experimental bytecode VM for Code Mode. It is off by default; turn it on with experimental.codemodevm: true or OPENCODEFLAGS=codemodevm. (62358) - Added support for Microsoft Store installations of PowerShell 7 on Windows. (61952) - Added Azure Messages support for Foundry Claude models. (60934) Bug fixes - opencode run now waits for the background shell commands, subagents, and image jobs that its prompt started, then lets the model respond to their results before it exits. While it waits, it prints waiting for N background job(s) (a backgroundwait event with --format json). There is no time limit: a job that never exits, such as a dev server or file watcher, keeps the run open until you press Ctrl+C or send SIGTERM, so set a timeout on CI jobs. (60699, 61911) - Reworked noninteractive opencode run execution so arguments, cancellation, compiled WebSocket upgrades, and service shutdown complete reliably. SIGTERM now cancels the session and its background jobs and exits with code 143. (61911, 61721, 61518, 61564) - Serve file reads and media from the server API as sandboxed downloads, and refuse cross-site browser navigations and requests from disallowed origins to /api/, so a file in your project cannot run scripts on the server's origin. (62422) - Webfetch and Code Mode fetch now reject URLs that contain credentials and ignore the fragment when matching permission rules, and Code Mode fetch checks every redirect against your webfetch rules. (60502, 61701, 62373) - Ask for externaldirectory permission before sessionmove leaves the current project. (62204) - Wait up to 2 seconds for MCP servers that are still connecting before a model call, so tools from servers that connect quickly reach the first prompt and opencode run. Also expand ~ in local MCP working directories, handle legacy stdio servers, and send logouri during dynamic registration. (60490, 61496, 61817, 59031) - Time out OpenCode Console config requests after 5 seconds, so startup no longer hangs when the Console accepts the connection but never answers. (62404) - Retry provider requests while their host is unreachable and recover prematurely ended Cohere streams. (61880, 61184) - Keep legacy custom providers whose models set only part of limit, such as only limit.context, instead of dropping the whole provider without an error. Thanks @Tarquinen. ([62240](https://g...