Invite a friend, get 1 month of Pro freeHow it works

opencode changelog

The last 25 stable releases of opencode, newest first, with the lines that remove, rename or deprecate something pulled out on top. Taken from the GitHub releases every morning.

Latest: 2.2.5 · October 30, 2026 GitHub → About opencode →

Breaking changes and deprecations

Latest releases

  1. 2.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.
    • 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.
    • 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.
    • compaction.buffer accepts a percentage of the model's context window, such as "20%", in addition to a token count.
    • When read misses because a folder is missing, the error names that folder and the nearest one that exists.
    • When edit can't find oldString, the error shows the file's closest lines, or says the change is already there.
    • Calls 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.
    • MCP servers that send stdio messages larger than 10 MiB no longer get disconnected, and large messages are read much faster.
    • Idle locations no longer restart their MCP servers right after shutting down.
    • Compaction now caps its prompt at the model's context window when the input limit is larger.
    8 more on GitHub →
  2. 2.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 a…
    • 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 sto…
    • 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.
    • 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.
    • Added opt-in artifacts with artifact_create, artifact_read, artifact_update, and artifact_delete, including a built-in local static-file provider.
    • Made enabled schedules run under opencode serve and coordinated multiple server processes so a schedule fires only once. Schedules remain opt-in through experimental.schedules.
    • Raised OpenCode Go limits for DeepSeek V4.1 Flash.
    • Allowed user, project, and remote configuration to override Console-supplied provider names, limits, variants, settings, and headers.
    • Kept local OpenCode service requests out of environment-configured proxies.
    • Replaced Claude Code’s misleading /login instruction with claude auth login. Thanks @Tarquinen.
    14 more on GitHub →
  3. 2.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.
    • Faster Long Sessions in Desktop: Streaming replies and long conversations now do much less rendering work.
    • Desktop Stability Fixes: Fixes side-panel tabs, repeated "Session not found" toasts, and Open file over HTTP.
    • Added the built-in Claude Agent provider. Install Claude Code, run claude auth login, and select Claude Agent in /connect; OPENCODE_CLAUDE_PATH can override the Claude executable. Thanks @Tarquinen.
    • Added Code Mode JavaScript checks to experimental schedules, including statically authorized tool calls, persistent state, and custom wake messages.
    • Added separate managed-policy actions for connecting to integrations and using integrations, MCP servers, skills, and plugins.
    • Preserved plugin-provided model variants and delayed dynamic provider fallback until external SDK hooks have run.
    • Preserved permission reasons and feedback in MCP failures, and made Code Mode failures match direct tool-call failures.
    • Fixed invalid Code Mode schedule checks so creation fails immediately and existing invalid checks pause without repeated execution.
    • Removed a session’s persistent terminals when the session is deleted.
    40 more on GitHub →
  4. 2.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_generat…
    • Faster Worktree Selection: On the new-session screen, click the current Git branch to open that project’s “Run session in” worktree picker directly.
    • 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.
    • Enabled experimental_image_generate by default when an image-capable provider is connected.
    • Recorded the start time of each session’s latest execution.
    • Rejected persistent terminal requests whose working directory no longer exists.
    • Preserved media when sessions are forked or imported.
    • Associated image-generation notices with the correct background job.
    • Preserved captured attachments and their original source paths. Thanks @OpeOginni.
    • Prevented middle-truncated paths from overflowing at very narrow terminal widths.
    24 more on GitHub →
  5. 2.2.1

    • Breaking Group experimental generated-client methods under client.experimental; previous locations remain as deprecated aliases until the next minor release.
    • Keep Working Toward a Goal: Run /goal 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.
    • 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.
    • Inspect Background Shells: Click a running shell in the Desktop activity pill to see its live output and stop it without leaving the menu.
    • New Default Model Picker: Search favorites, recent models, providers, and variants from the redesigned model picker, which is now the default in Desktop.
    • 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, -interacti…
    • 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.
    • Add /goal with pause, resume, and clear controls, plus automatic progress review until the objective is met.
    • Add opt-in scheduled prompts through /schedule, agent tools, and experimental.schedules.
    • Add the opt-in image_generate tool for background image creation and editing, with automatic or configured model selection.
    37 more on GitHub →
  6. 1.19.5

    • Failed TUI worker requests now return an error instead of leaving the caller hanging. (@Nowaker)
    • @Nowaker:
    • fix(opencode): answer a failed TUI worker request instead of hanging
    Release notes →
  7. 2.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, allowing image generation or decision model (think typesafe, clef, etc) workflows.
    • 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 upda…
    • Restored the Todo tool in desktop via opt-in
    • Add configurable prompt cache TTLs per provider/model
    • Add experimental image and decision generation API endpoints.
    • Add image and decision entrypoints for catalog providers.
    • Improve integration rebuild performance.
    • Let custom model configuration set a model type.
    213 more on GitHub →
  8. 1.19.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.
    Release notes →
  9. 1.19.3

    • Configure model reasoning options to generate reasoning variants, replacing catalog variants while preserving your configured variant overrides.
    Release notes →
  10. 1.19.2

    • OpenCode 1 now stays on the 1.x release line: update checks use only the npm opencode-ai latest version, so 1.x installs are never offered a 2.x build as a regular update.
    • Upgrading to OpenCode 2 remains a separate, explicit choice through the 2.0 offer in /update or opencode upgrade --major.
    • Fix upgrades for installs managed by yarn.
    • Skip 1.x updates for Homebrew Core installs, which now track OpenCode 2, and check tap and Chocolatey availability before offering an update.
    • The install script refuses to install 2.x versions.
    Release notes →
  11. 1.19.1

    • Breaking Session sharing has been discontinued. Existing share links and session-sharing commands are no longer available, and importing sessions from share URLs is unsupported.
    • Session sharing has been discontinued. Existing share links and session-sharing commands are no longer available, and importing sessions from share URLs is unsupported.
    Release notes →
  12. 1.19.0

    • Run opencode upgrade --major to upgrade to OpenCode 2.
    • Allow the OpenAI ultrafast service tier.
    • Validate PTY connection origins and tickets before checking whether a PTY exists.
    • Use /update to install OpenCode updates or upgrade to OpenCode 2; updates are no longer installed automatically.
    • docs(web): add Exo Free to Zen docs
    • fix(stats): attribute exo usage to an unknown provider
    • docs(web): remove Fledge Alpha Free from Zen docs
    Release notes →
  13. 1.18.35

    • Added canonical redirects and JSON and Markdown data formats for agent-readable stats.
    • xAI tool results now include supported images, while unsupported image formats are skipped. (@Jaaneek)
    • docs(web): add Fledge Alpha Free to Zen docs
    • @jm0ney337:
    • docs(ecosystem): add opencode-supabase to ecosystem plugins
    • @Jaaneek:
    • fix(opencode): bump @ai-sdk/xai to 3.0.139 so tool-result images reach xAI
    Release notes →
  14. 1.18.34

    • Send namespaced session and parent-session identity headers with model requests.
    • Re-sign locally compiled macOS binaries so they run reliably on macOS 27+. (@ryangamerdev)
    • Sign macOS CLI release binaries with a Developer ID.
    • docs(web): correct GPT 6.1 Sol cache pricing
    • @metal-huang:
    • fix(tui): use path.sep for plugin name extraction in /status dialog
    • @ryangamerdev:
    • fix(opencode): ad-hoc re-sign darwin binaries after local compile
    Release notes →
  15. 1.18.33

    • Cloudflare AI Gateway models now honor provider response and stream timeouts. (@danlapid)
    • MCP browser launch failures are now reported when the launcher exits immediately.
    • Debug configuration output now redacts credentials and sensitive headers.
    • Gemini thinking defaults and effort options now match the supported controls across model generations. (@markmcd)
    • docs(web): add Claude Opus 5.5, GPT 6 Sol, and GPT 6 Luna to Zen
    • @vglafirov:
    • maint(gitlab): bump gitlab-ai-provider to 6.16.0
    • @markmcd:
    • fix(gemini): switch thinking default logic
    • @remorses:
    3 more on GitHub →
  16. 1.18.32

    • Fixed Bedrock image attachments so they are only hoisted for Claude, Nova, and Llama 4 models.
    • Fixed Together AI streaming usage reporting.
    • docs: add DeepSeek V4.1 Flash to Zen
    • feat: add Grok 4.7 to Zen and Go
    Release notes →
  17. 1.18.31

    • Restored ACP session model, effort, mode, and reasoning chunk boundaries when loading, resuming, or forking sessions. (@JacobNWolf)
    • Show remote config authentication errors during startup and exit with a failure status.
    • Request summarized adaptive thinking for GitHub Copilot models.
    • @heimoshuiyu:
    • feat(console): add batch workspace block endpoints
    • @JacobNWolf:
    • fix(acp): restore session options and reasoning boundaries
    • @R-Taneja:
    • chore(deps): bump @ai-sdk/gateway to 3.0.191
    • @MatthewFeroz:
    1 more on GitHub →
  18. 1.18.30

    • Added the Astra system prompt for GPT-6 models.
    • Preserved Bedrock DeepSeek model IDs, including ARN-based IDs, so they resolve correctly. (@YeEmrick)
    • Updated the Azure provider SDK to pick up compatibility fixes.
    • Updated the OpenAI provider SDK to pick up compatibility fixes.
    • Added reasoning effort variants for supported GitLab GPT and Claude models. (@far-ouq)
    • @heimoshuiyu:
    • fix(console): openai usage normalization and tier threshold config
    • @far-ouq:
    • fix(opencode): add GitLab reasoning variants
    • @YeEmrick:
    1 more on GitHub →
  19. 1.18.29

    • Allow Codex OAuth model filtering to recognize integer GPT versions like gpt-6
    • Fixes issue of gpt-6-astra not showing up for openai subscription users
    • @Peter267:
    • docs(zh): fix bold rendering by adding spaces around asterisks
    • @heimoshuiyu:
    • feat(console): add quota reset support action
    Release notes →
  20. 1.18.28

    • Send the session ID as GitHub Copilot's interaction header to improve request tracking across a session.
    • Use the desktop client ID during OpenCode account device authentication.
    • Increase the open-in app icon size for better visibility.
    • @MVS-source:
    • docs: add Eden AI to the providers list
    Release notes →
  21. 1.18.27

    • Default provider header timeouts to five minutes so slow model startups fail less often.
    • Default streamed chunk timeouts to five minutes, with false supported to disable them.
    • Let Anthropic thinking.blockBinding opt out via config when you need to keep the provider default. (@dkindlund)
    • Limit Anthropic thinking block binding to Claude 5.1+ models so older deployments do not reject requests.
    • Avoid unhandled errors when canceling timed-out SSE reads. (@AlexanderWillner)
    • @AlexanderWillner:
    • fix(provider): handle SSE reader cancel rejections
    • @dkindlund:
    • fix(opencode): let config opt out of Anthropic thinking blockBinding
    Release notes →
  22. 1.18.26

    • Claude 5 sessions now tolerate stale thinking blocks instead of failing after prompt or tool changes.
    • Bedrock GPT-5.6 models now accept none reasoning effort.
    • Bedrock reasoning and replay handling is more reliable. (@pengzh1)
    • Tool call timing now stays accurate when tools update their metadata while still running. (@bartlettroscoe)
    • apply_patch no longer emits an empty move path in permission metadata. (@altendky)
    • Azure CLI sign-in now asks for the resource name directly instead of querying Azure management APIs.
    • Session renames now save reliably from the title editor and tab context menu.
    • @altendky:
    • fix(opencode): omit empty apply patch move path
    • @pengzh1:
    3 more on GitHub →
  23. 1.18.25

    • Fixed Azure authentication so Azure CLI sign-in works without requiring Bun.
    Release notes →
  24. 1.18.24

    • Bedrock reasoning responses no longer get cached into unreplayable empty messages.
    • Azure providers can now sign in with Microsoft Entra ID through the Azure CLI instead of requiring an API key.
    • V1 now reads supported V2 config fields so newer config files keep working in more mixed setups.
    • Archived sessions disappear from the Home list immediately. (@NathanTCode)
    • @NathanTCode:
    • fix(app): drop archived sessions from home list right away
    • @OpeOginni:
    • fix(ui): restore focus in stacked dialogs
    • @dondetir:
    • docs: mention Exa and Parallel as web search backends
    Release notes →
  25. 1.18.23

    • Fixed Cloudflare AI Gateway routing for third-party providers so non-Workers models work through the gateway's REST API. (@superhighfives)
    • Fixed Anthropic models through Cloudflare AI Gateway by converting dotted model IDs like claude-haiku-4.5 to the dashed slug Anthropic expects. (@superhighfives)
    • Fixed parent session IDs being sent in request headers for session-aware providers.
    • Fixed GitHub auth for immutable OIDC subject tokens.
    • @superhighfives:
    • fix(provider): send Anthropic's dashed native slug through the AI Gateway
    • fix(provider): route non-native Cloudflare AI Gateway providers via the REST API
    Release notes →

Other agents

Claude CodeCodex CLIGemini CLICopilot CLIHermes AgentQwen CodeKimi CLIGooseMistral VibeCrushAiderCline All agents →

Run opencode next to the other agents and see when one needs you: AgentVera keeps them in one window on Mac, Windows and Linux, and on your phone.

Bring your agents to one desk.

Download, pick a project, open your first agent. Your installed CLIs are ready to go.