Skip to content

OpenCode v2.2.0

Released · OpenCode / SST

BreakingChanges skills and plugins

Models:Adds GPT-6.1 Terra

What the release notes say

Highlights

  • Create, install and share Desktop plugins (experimental) (#55246, #59469, #59489)

  • Refreshed the desktop app experience (#56898, #58865, #55838, #57962)

  • 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. 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. (#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. (#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)

Core

Improvements

  • Add experimental image and decision generation API endpoints. (#59190)

  • Add image and decision entrypoints for catalog providers. (#59380)

  • Improve integration rebuild performance. (#59402)

  • Let custom model configuration set a model type. (#59388)

  • Let model-list API requests filter by type. (#59355)

  • Make external-directory permission checks use the project's filesystem. (#59089)

  • Reduce memory use when code search finds very large lines. (#59205)

  • Let plugins filter event subscriptions by type. (#58864)

  • Add configurable prompt-cache TTLs. (#59157)

  • Move image resizing off the main process and release idle image memory. (#58820)

  • Reduce repeated session-history loading during a step. (#59091)

  • Add an experimental API for session media and opt-in media URI support. (#59103)

  • Add the machine hostname to /api/info. (#59090)

  • Add experimental content-addressed blob storage for session media behind experimental.media_blob. (#58656, #58741)

  • Start session history from the latest completed compaction. (#59020)

  • Reduce work encoding durable event payloads that are not persisted. (#58923)

  • Expose MCP server titles from serverInfo. (#58950)

  • Apply OpenCode Console workspace configuration as a configuration layer. (#57703)

  • Replace experimental evaluations with Decision APIs in the AI pkg, including OpenAI Decisions, System One, and Cloudflare Run models. (#58758, #58382, #58379, #58381)

  • Convert tool schemas once to speed up tool execution. (#58798, #58848)