Changelog
New updates and improvements to OpenCode
v2.2.7 GitHub Copilot Auto
Pick Auto in the model picker when your Copilot account has an Auto pool, and Copilot's router chooses the model for each session at the Auto discount. If routing fails, OpenCode falls back to the account's default chat model.#62997
Side Panel Tab Shortcuts
Right-click a side panel tab and choose Close tabs to the right.
⌘Wnow closes side panel tabs wherever focus is,⌥⌘WorCtrl+Alt+Walways closes the session tab, and⌘⇧Treopens the last closed tab of either kind where it was.#62922Mark Sessions Read or Unread
Open the menu on a tab, Home row, project row or inbox card and choose Mark as unread to keep its dot until you next visit.#62889
Breaking changes
@opencode/ai:ImageResponse.imageis removedThis affects code that imports
#63011@opencode/aidirectly. Readresponse.images[0]instead ofresponse.image.SDK: fewer endpoints wait for plugins to load
On a Location that is still loading plugins,
#62796#63040agent.listreturns the agents loaded so far, andintegration.list,usage.limits,vcs.init,rpc.callandartifact.*no longer wait up to 5 seconds. Entries and actions that a plugin provides appear when it finishes loading, so refresh on the matching*.updatedevent. Model, provider,generate.*,voice.*andwebsearch.queryendpoints still wait.
13 more improvementsImprovements 13
34 more fixesFixes 34
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.#61270
14 more improvementsImprovements 14
33 more fixesFixes 33
v2.2.5 Worktree and Shell Mode Shortcuts
Press
⌘⌥Oon macOS orCtrl+Alt+Oon Windows and Linux to choose a worktree, and⌘⌥BorCtrl+Alt+Bto choose its base branch.⌘⇧XorCtrl+Shift+Xnow toggles shell mode in the composer.#60713Send Quotes From the Comment Popup
Hold
⌘orCtrlin the quote popup to turn its checkmark into send, or press⌘EnterorCtrl+Enter, to send just that quote and comment while leaving the rest of the composer untouched.#60640Percentage Compaction Buffer
Set
"compaction": { "buffer": "20%" }inopencode.jsonto keep a share of each model's context window free, so one setting fits models with small and large windows. Token counts still work.#60647Improvements
- CoreWhen
readmisses because a folder is missing, the error names that folder and the nearest one that exists.#60688 - CoreWhen
editcan't findoldString, the error shows the file's closest lines, or says the change is already there.#60689 - CoreCalls to a tool named
bashnow run asshellinstead of failing, with the same permissions. A plugin tool actually namedbashstill takes precedence.#60687 - DesktopAdded flat input surfaces and a compact input size.#60598
7 more fixesFixes 7
- CoreWhen
v2.2.4 Persistent Desktop Terminals
Desktop terminals now belong to the session, survive server restarts with their scrollback, and stay synchronized with the TUI and other windows. Renamed terminals also keep their names across restarts.#60346
Publish Interactive Artifacts
Enable
"experimental": { "artifacts": true }inopencode.jsonto let agents publish, update, and serve HTML or static artifacts through the built-in local provider or plugin-provided storage.#60351Guided Claude Agent Setup
Select Claude Agent from the provider picker to copy
claude auth login, install Claude Code, and verify the connection before continuing to model selection.#60603Choose a Base Branch Quickly
While creating a worktree, open Choose base branch with
⌘⌥.on macOS orCtrl+Alt+.on Windows and Linux. The command is also available in the command palette and Settings › Shortcuts.#60579Improvements
- CoreMade enabled schedules run under
opencode serveand coordinated multiple server processes so a schedule fires only once. Schedules remain opt-in throughexperimental.schedules.#60478 - CoreRaised OpenCode Go limits for DeepSeek V4.1 Flash.#60625
- DesktopSimplified the session location popover and made long paths easier to read.#60492
- SDKExtended
client.experimental.persistentPty.updateto rename terminals or clear a user title, and exposeduserTitlepluspersistent-pty.updatedevents.#60329
10 more fixesFixes 10
- CoreMade enabled schedules run under
v2.2.3 Use Claude Code in OpenCode
Install Claude Code, run
claude auth login, then select Claude Agent in/connectto use your Claude Code login and models.#58782Faster Long Sessions in Desktop
Streaming replies and long conversations now do much less rendering work.#60489#60521#60513#60481
Desktop Stability Fixes
Fixes side-panel tabs, repeated "Session not found" toasts, and Open file over HTTP.#60430#60436#60459#60462
Breaking changes
TUI plugins require OpenTUI 0.8
#60385@opencode/pluginnow requires@opentui/coreand@opentui/solid0.8.0 or later. In OpenTUI 0.8, a ScrollBox'swrapper,viewport,content, and scrollbars are facade objects instead of renderables, and a customRenderContextmust implementclockandonAnimationTick. See the OpenTUI 0.8.0 release notes.Managed policy:
integration.usecovers integrations only
#60315integration.usenow controls which integration accounts can be used, and the newmcp.use,skill.use, andplugin.useactions control MCP servers, skills, and plugins. Rules with the oldmcp:,skill:, andplugin:resource prefixes are converted automatically, but a bareintegration.userule no longer applies to MCP servers, skills, or plugins.
16 more improvementsImprovements 16
26 more fixesFixes 26
v2.2.2 Image Generation by Default
When a connected provider supports image models, agents can now use
experimental_image_generatewithout additional configuration. Set its preferred model throughexperimental.image_generate.model.#60258Faster Worktree Selection
On the new-session screen, click the current Git branch to open that project’s “Run session in” worktree picker directly.#60263
Unified Quotes and Annotations
Timeline quotes, terminal quotes, and browser annotations now share a compact optional-comment editor, while source highlights remain attached to local drafts.#60164
9 more improvementsImprovements 9
18 more fixesFixes 18
v2.2.1 Keep Working Toward a Goal
Run
/goal <objective>in the TUI or Desktop to let the session continue until a reviewer confirms the objective is met. Use/goal pause,/goal resume, or/goal clearto control it.#59437Generate Images
Enable
experimental.image_generateto let agents create or edit images with the newimage_generatetool. You can optionally set its default model withexperimental.image_generate.model.#59939#60096Inspect Background Shells
Click a running shell in the Desktop activity pill to see its live output and stop it without leaving the menu.#59496
New Default Model Picker
Search favorites, recent models, providers, and variants from the redesigned model picker, which is now the default in Desktop.#59997
Breaking changes
@opencode/aiprovider removals and renamesThese changes affect code that imports
@opencode/aidirectly. They don't change the CLI, Desktop, or the HTTP API.- The fal, Black Forest Labs, Replicate, and Stability providers are removed, along with their
./providers/fal,./providers/black-forest-labs,./providers/replicate, and./providers/stabilityentry points. - Five legacy entry points are removed. Import the nested paths instead, which 2.2.0 already exports:
./providers/amazon-bedrock-mantle→./providers/amazon-bedrock/mantle, and./providers/google-vertex-chat,-interactions,-mistral, and-responses→./providers/google-vertex/chat,/interactions,/mistral, and/responses. - Each provider's
configure()input type is now namedConfig, for exampleGroq.LanguageModelOptions→Groq.Config, andmodel()settings are optional when every setting is optional.
15 more improvementsImprovements 15
17 more fixesFixes 17
- The fal, Black Forest Labs, Replicate, and Stability providers are removed, along with their
v1.19.5 v2.2.0 Create, install and share Desktop plugins (experimental)
Refreshed the desktop app experience
Add experimental image and decision generation APIs to plugins and sdk
Add experimental image and decision generation APIs to plugins and sdk, allowing image generation or decision model (think typesafe, clef, etc) workflows.#59190#59380#58758
Plugins can now attach and update keyed session instructions with ctx.session.instructions.entry.put/list/remove
Plugins can now attach and update keyed session instructions with ctx.session.instructions.entry.put/list/remove. Instead of editing the system prompt and busting the prompt cache, each change is added as a small update at the next step. The entries also survive compaction and reverts, and they don't start an extra model turn.#56550
Restored the Todo tool in desktop via opt-in
Add configurable prompt cache TTLs per provider/model
Breaking changes
@opencode/airoot is now the Promise API@opencode/ainow works like@opencode/sdkand@opencode/client: the package root exports the Promise API, and the Effect API moved to@opencode/ai/effect.@opencode/ai/promiseis removed, and the wildcard subpath export is replaced with an explicit list of provider and protocol entry points.
#58847#59183-import { AI } from "@opencode/ai/promise" -import { LLM } from "@opencode/ai" +import { AI } from "@opencode/ai" +import { LLM } from "@opencode/ai/effect"The OpenCode GitHub Action is removed
The OpenCode GitHub Action is no longer published. Remove it from your workflows.
#59032TUI plugins require OpenTUI 0.7
#59295@opencode/pluginnow requires@opentui/coreand@opentui/solid0.7.0, up from 0.6.8 or later. Plugins that depend on OpenTUI 0.6 fail to install until they upgrade. In OpenTUI 0.7, custom renderables read their hooks from their class at construction: assignrenderBefore,renderAfter, andonLifecyclePassin the constructor instead of as class fields, callrefreshHooks()after adding a hook by reflection, and replacedefineNativeIntegration()with astatic nativeIntegrationdeclaration. See the OpenTUI 0.7.0 release notes.
78 more improvementsImprovements 78
112 more fixesFixes 112
v1.19.4 Upgraded the bundled Bun runtime to 1.4.4
Upgraded the bundled Bun runtime to 1.4.4, which includes security fixes for Brotli, TLS, HTTP/1.1, HTTP/2, HTTP/3, WebSocket, and
fetch, and updates root certificates to NSS 3.131.1.