v2.2.6 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 -wto start the session in a new git worktree, or--worktree=<name>to name it.#60712Automatically Archived Runs
Add
--archivedtoopencode runto keep scripted and CI sessions out of your inbox and session lists.#61270Improvements
- CoreAdded provider- and model-specific session warming settings, including an
interval: "auto"mode based on cache TTL.#60025#60969 - CoreAdded the
websearch.usepolicy action and switches for enabling all feature flags withOPENCODE_FLAGS=allorexperimental.all_flags.#61557#61826 - CoreAdded an experimental bytecode VM for Code Mode. It is off by default; turn it on with
experimental.codemode_vm: trueorOPENCODE_FLAGS=codemode_vm.#62358 - CoreAdded support for Microsoft Store installations of PowerShell 7 on Windows.#61952
- CoreAdded Azure Messages support for Foundry Claude models.#60934
- TerminalAdded Scroll on send in Settings. Choose Keep (
session.submit_scroll: "keep") to retain your reading position after submitting a prompt.#61460 - DesktopAdded close-other-tabs and close-tabs-after actions to the tab menu.#61631
- DesktopAdded unread-session grouping in Inbox and failed-run indicators on tabs.#61691#62077
- DesktopMCP sign-in now accepts a pasted redirect URL when automatic redirection is unavailable.#61706
- DesktopMarkdown file previews now display frontmatter as a properties list.#60333
- DesktopThe command palette shows a date instead of "Xd ago" for sessions 7 or more days old. Hover the time to see the full date and time.#62314
- DesktopPrompt history now keeps up to 200 prompts. Past the newest 100, only prompts without attachments are kept.#62313
- SDKAdded
client.experimental.job.list()and its Effect equivalent for listing background shell, subagent, and image jobs, with session, descendant, kind, and status filters.#60698 - SDKServer embedders can provide a custom
fetchimplementation for OpenCode HTTP, model, web, and remote MCP traffic.#61582
Fixes
- Core
opencode runnow 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 printswaiting for N background job(s)(abackground_waitevent 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 - CoreReworked noninteractive
opencode runexecution 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 - CoreServe 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 - CoreWebfetch and Code Mode
fetchnow reject URLs that contain credentials and ignore the#fragmentwhen matching permission rules, and Code Modefetchchecks every redirect against your webfetch rules.#60502#61701#62373 - CoreAsk for
external_directorypermission beforesession_moveleaves the current project.#62204 - CoreWait 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 sendlogo_uriduring dynamic registration.#60490#61496#61817#59031 - CoreTime out OpenCode Console config requests after 5 seconds, so startup no longer hangs when the Console accepts the connection but never answers.#62404
- CoreRetry provider requests while their host is unreachable and recover prematurely ended Cohere streams.#61880#61184
- CoreKeep legacy custom providers whose models set only part of
limit, such as onlylimit.context, instead of dropping the whole provider without an error. Thanks @Tarquinen.#62240 - Core
opencode acpnow removes a session that a client creates withsession/newand closes without prompting, so IDE integrations no longer leave empty sessions behind.#62189 - CorePrevent repeated zsh
qflags from freezing shell permission scanning. Thanks @yangguan-xue.#60791 - CoreAllow npm upgrade install scripts again. Thanks @renatomoselli.#51554
- TerminalAllow Ctrl+Z to suspend OpenCode while a form or dialog is open.#62118
- TerminalKeep focus on an open dialog when a question arrives and contain plugin dialogs that throw during rendering.#60365#62110
- TerminalShow an error when Ctrl+V cannot read the clipboard. Thanks @jimmyallinai.#61094
- TerminalPrevent session titles containing newlines from crashing the TUI. Thanks @vishalshekhar.#57523
- TerminalImproved message spacing and prevented older history from flashing while scrolling.#62104#59236
- TerminalJump to the first or last message with Home, End, and Ctrl+G in subagent sessions. Thanks @ricky9408.#60817
- TerminalKeypad Home, End, Page Up, and Page Down now navigate the transcript like the main keys in terminals that use the kitty keyboard protocol. Thanks @argszero.#59770
- Terminal
opencode mininow uses the agent colors from your config. Thanks @ferdinandyb.#62067 - TerminalReturn to the
/mcplist after signing in to an MCP server, with that server still selected. Thanks @Tarquinen.#62245 - TerminalAllow favoriting models with Ctrl+F in
/modelswhen they come from a provider declared in config or an add-on instead of a saved connection. Thanks @Tarquinen.#62244 - DesktopImproved prompt submission and timeline behavior during loading, reconnects, retries, scrolling, compaction, and optimistic delivery.#62025#62037#61932#62151
- DesktopSurface loading and offline failures in review previews, file search, details, Word pages, and review diffs instead of showing empty or clean results.#62114#61862
- DesktopFixed provider connection, MCP sign-in, settings, and plugin loading flows that could become stuck after failures.#62102#61917#61580
- DesktopPreserve drafts, focus, caret position, queued prompts, and selected terminal tabs across failed or concurrent transitions.#61579#61969#61852
- DesktopRestart plugins after failed update handoffs and recover the renderer, storage, event stream, and background-service connection from transient failures.#61649#61908#61804#61748
- DesktopCorrected V2 file labels and mention syntax. Thanks @velmet and @cheapredwine.#55677#60737
- DesktopAttach only the
@mentionsin a line comment that match an existing file or folder, so a comment such asCheck @hereno longer fails the send. Render partial diffs in the review pane when it shows all lines, instead of a blank pane. Thanks @Tarquinen.#62242#62241 - DesktopKeep pasted images sendable after the clipboard tool deletes its temporary file. Thanks @lfscqk67.#62057
- DesktopWhile an input method is composing text, Escape, Enter, and Tab go to the input method instead of stopping the agent or picking a suggestion.#62318
- DesktopFixed padding in the WSL distribution picker, the position of worktree and branch labels in Home search results, and the selected ring on the Interface layout setting. Thanks @inuyume.#53676#62317#62309
- ExtensionsIsolated plugin dialogs, Markdown renderers, terminal views, lazy chunks, and artifact viewers so failures do not take down their host surface.#62110#62123#61993
- CoreAdded provider- and model-specific session warming settings, including an