Skip to content

Changelog

New updates and improvements to OpenCode

  1. 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. ⌘W now closes side panel tabs wherever focus is, ⌥⌘W or Ctrl+Alt+W always closes the session tab, and ⌘⇧T reopens the last closed tab of either kind where it was.#62922

    Mark 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.image is removed

    This affects code that imports @opencode/ai directly. Read response.images[0] instead of response.image.

    #63011

    SDK: fewer endpoints wait for plugins to load

    On a Location that is still loading plugins, agent.list returns the agents loaded so far, and integration.list, usage.limits, vcs.init, rpc.call and artifact.* no longer wait up to 5 seconds. Entries and actions that a plugin provides appear when it finishes loading, so refresh on the matching *.updated event. Model, provider, generate.*, voice.* and websearch.query endpoints still wait.

    #62796#63040

    Improvements 13

    13 more improvements

    Fixes 34

    34 more fixes
  2. 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 -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

    Improvements 14

    14 more improvements

    Fixes 33

    33 more fixes
  3. v2.2.5

    Worktree and Shell Mode Shortcuts

    Press ⌘⌥O on macOS or Ctrl+Alt+O on Windows and Linux to choose a worktree, and ⌘⌥B or Ctrl+Alt+B to choose its base branch. ⌘⇧X or Ctrl+Shift+X now toggles shell mode in the composer.#60713

    Send Quotes From the Comment Popup

    Hold ⌘ or Ctrl in the quote popup to turn its checkmark into send, or press ⌘Enter or Ctrl+Enter, to send just that quote and comment while leaving the rest of the composer untouched.#60640

    Percentage Compaction Buffer

    Set "compaction": { "buffer": "20%" } in opencode.json to keep a share of each model's context window free, so one setting fits models with small and large windows. Token counts still work.#60647

    Improvements

    • CoreWhen read misses because a folder is missing, the error names that folder and the nearest one that exists.#60688
    • CoreWhen edit can't find oldString, the error shows the file's closest lines, or says the change is already there.#60689
    • CoreCalls to a tool named bash now run as shell instead of failing, with the same permissions. A plugin tool actually named bash still takes precedence.#60687
    • DesktopAdded flat input surfaces and a compact input size.#60598

    Fixes 7

    7 more fixes
  4. 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 } in opencode.json to let agents publish, update, and serve HTML or static artifacts through the built-in local provider or plugin-provided storage.#60351

    Guided 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.#60603

    Choose a Base Branch Quickly

    While creating a worktree, open Choose base branch with ⌘⌥. on macOS or Ctrl+Alt+. on Windows and Linux. The command is also available in the command palette and Settings › Shortcuts.#60579

    Improvements

    • CoreMade enabled schedules run under opencode serve and coordinated multiple server processes so a schedule fires only once. Schedules remain opt-in through experimental.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.update to rename terminals or clear a user title, and exposed userTitle plus persistent-pty.updated events.#60329

    Fixes 10

    10 more fixes
  5. v2.2.3

    Use Claude Code in OpenCode

    Install Claude Code, run claude auth login, then select Claude Agent in /connect to use your Claude Code login and models.#58782

    Faster 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

    @opencode/plugin now requires @opentui/core and @opentui/solid 0.8.0 or later. In OpenTUI 0.8, a ScrollBox's wrapper, viewport, content, and scrollbars are facade objects instead of renderables, and a custom RenderContext must implement clock and onAnimationTick. See the OpenTUI 0.8.0 release notes.

    #60385

    Managed policy: integration.use covers integrations only

    integration.use now controls which integration accounts can be used, and the new mcp.use, skill.use, and plugin.use actions control MCP servers, skills, and plugins. Rules with the old mcp:, skill:, and plugin: resource prefixes are converted automatically, but a bare integration.use rule no longer applies to MCP servers, skills, or plugins.

    #60315

    Improvements 16

    16 more improvements

    Fixes 26

    26 more fixes
  6. v2.2.2

    Image Generation by Default

    When a connected provider supports image models, agents can now use experimental_image_generate without additional configuration. Set its preferred model through experimental.image_generate.model.#60258

    Faster 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

    Improvements 9

    9 more improvements

    Fixes 18

    18 more fixes
  7. 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 clear to control it.#59437

    Generate Images

    Enable experimental.image_generate to let agents create or edit images with the new image_generate tool. You can optionally set its default model with experimental.image_generate.model.#59939#60096

    Inspect 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/ai provider removals and renames

    These changes affect code that imports @opencode/ai directly. 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/stability entry 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 named Config, for example Groq.LanguageModelOptions → Groq.Config, and model() settings are optional when every setting is optional.
    #59977#59506#59765

    Improvements 15

    15 more improvements

    Fixes 17

    17 more fixes
  8. v1.19.5
  9. v2.2.0

    Create, install and share Desktop plugins (experimental)

    Refreshed the desktop app experience

    #56898#58865#55838#57962

    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

    #59092

    Add configurable prompt cache TTLs per provider/model

    #59157

    Breaking changes

    @opencode/ai root is now the Promise API

    @opencode/ai now works like @opencode/sdk and @opencode/client: the package root exports the Promise API, and the Effect API moved to @opencode/ai/effect. @opencode/ai/promise is removed, and the wildcard subpath export is replaced with an explicit list of provider and protocol entry points.

    -import { AI } from "@opencode/ai/promise"
    -import { LLM } from "@opencode/ai"
    +import { AI } from "@opencode/ai"
    +import { LLM } from "@opencode/ai/effect"
    #58847#59183

    The OpenCode GitHub Action is removed

    The OpenCode GitHub Action is no longer published. Remove it from your workflows.

    #59032

    TUI plugins require OpenTUI 0.7

    @opencode/plugin now requires @opentui/core and @opentui/solid 0.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: assign renderBefore, renderAfter, and onLifecyclePass in the constructor instead of as class fields, call refreshHooks() after adding a hook by reflection, and replace defineNativeIntegration() with a static nativeIntegration declaration. See the OpenTUI 0.7.0 release notes.

    #59295

    Improvements 78

    78 more improvements

    Fixes 112

    112 more fixes
  10. 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.