Skip to content

Changelog

New updates and improvements to OpenCode

  1. 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

    • CoreMCP servers that send stdio messages larger than 10 MiB no longer get disconnected, and large messages are read much faster.#60694
    • CoreIdle locations no longer restart their MCP servers right after shutting down.#60668
    • CoreCompaction now caps its prompt at the model's context window when the input limit is larger.#60660
    • CoreLiteLLM context window errors now trigger compaction instead of stopping the session.#60692
    • CoreReasoning is no longer turned into plain text when you switch models or resume an interrupted response, which caused request errors on some providers.#60498
    • Terminal, DesktopThe connect menu no longer lists MCP servers, which are managed in their own place.#60675
    • DesktopAdded the missing top inset to the search field in the recently closed menu.#60652
  2. 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

    • CoreAllowed user, project, and remote configuration to override Console-supplied provider names, limits, variants, settings, and headers.#60597
    • CoreKept local OpenCode service requests out of environment-configured proxies.#60441
    • CoreReplaced Claude Code’s misleading /login instruction with claude auth login.#60592@Tarquinen
    • TerminalPreserved prompt cursor styles applied by plugins when themes or unrelated prompt state change.#60599
    • TerminalAdded missing right padding to edit and patch diffs.#60614
    • TerminalExtended the vertical session-tab activity pulse across the full tab width.#60338
    • DesktopKept terminal tab clicks and rename fields attached to the intended tab.#60645
    • DesktopListed matching commands before sessions in command-palette search.#60616
    • DesktopRestored copying user messages from an open actions menu.#60576
    • DesktopReduced repeated work and allocations while streaming Markdown, especially in long sessions.#60549#60562#60577
  3. 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

    • CoreAdded Code Mode JavaScript checks to experimental schedules, including statically authorized tool calls, persistent state, and custom wake messages.#60140
    • CoreAdded separate managed-policy actions for connecting to integrations and using integrations, MCP servers, skills, and plugins.#60315
    • Terminal, SDKAdded lazy loading for stored image references when experimental.media_blob is enabled. Images are downloaded only for previews, while undo, revert, fork, and prompt recall restore referenced attachments safely.#60116
    • TerminalAdded a distinct marker for the selected composer suggestion in the new designs.#60393
    • DesktopAdded a Desktop spellcheck toggle under Settings → General and system-language dictionary selection on Windows and Linux.#59129
    • DesktopAdded PageUp and PageDown timeline paging from the composer without moving the draft cursor or focus.#59426
    • DesktopAdded independently configurable question notifications and sounds under Settings → Notifications → Questions.#60358@YuriNek0
    • DesktopAdded separate project and worktree actions to the new-session control.#60486
    • DesktopAdded one-click version copying in Settings → About.#52356
    • DesktopGrouped added projects in workspace settings.#60221
    • DesktopMade question-answer text selectable.#60372
    • DesktopAdapted the session header to narrow timeline widths.#59512
    • SDKPreserved partial LLMResponse output on AIError.partial when generation, object generation, or a tool loop fails.#60477
    • SDKUnified Effect and Promise tool declarations around tool(...), with optional output schemas and executable or declaration-only tools.#60407
    • SDKAdded typed OpenRouter debug, models, plugins, provider, and user options to the Responses route.#60044
    • ExtensionsAdded persistent-terminal renaming to the process daemon, including capability discovery and user titles that override shell-provided titles until cleared.#60324

    Fixes 26

    • CorePreserved plugin-provided model variants and delayed dynamic provider fallback until external SDK hooks have run.#60097#60380
    • CorePreserved permission reasons and feedback in MCP failures, and made Code Mode failures match direct tool-call failures.#60102#60109
    • CoreFixed invalid Code Mode schedule checks so creation fails immediately and existing invalid checks pause without repeated execution.#60349
    • CoreRemoved a session’s persistent terminals when the session is deleted.#60322
    • CoreKept nested tool progress from replacing the parent execute call rows.#60480
    • TerminalFixed PHP syntax highlighting for code blocks without an opening <?php tag.#60359
    • TerminalPreserved # in file-search paths unless it introduces a valid line range.#60336
    • TerminalKept the configured default cursor style after config reloads.#60302
    • TerminalMatched the search cursor to the highlighted row when a selection dialog has no query.#60310
    • DesktopKept question options and submit controls reachable on mobile.#60335
    • DesktopPreserved simultaneous request notifications and inbox scroll position when opening sessions.#60378#60356
    • DesktopFixed consecutive dropped files so every file mention is inserted into the composer.#60463
    • DesktopKept the current @ and command-menu selection stable while results update under a stationary pointer.#59434#60368
    • DesktopFixed ⌘W side-panel closing and focus restoration when no closable tabs remain.#59002#60435
    • DesktopKept the mobile session drawer open while a session loads.#59427
    • DesktopRestored maximized windows on their saved display and retained renderer permissions across shared-session windows.#60482#60458
    • DesktopFixed timeline growth, zoom-end scrolling, highlighting, and DOM-observer performance issues in long sessions.#60489#60481#60488#60513#60521
    • DesktopKept models with unknown release dates visible.#60496@joe-ieta
    • DesktopFixed reasoning-capability detection for models that expose reasoning through variants or compatibility metadata.#60457
    • DesktopFixed the macOS application icon and added the required folder-access description to the app bundle.#60020#60503
    • SDKMatched the Promise AI client more closely to the Effect API and accepted typed tools in loops.#60465#60390
    • SDKKept tools whose execute handler can throw available to the AI client.#60431
    • SDKContinued polling queued media generations when providers return unknown intermediate statuses.#59988
    • SDKStopped sending an incompatible filename alongside file_url on OpenAI Responses requests.#60382
    • ExtensionsPreserved null values in Code Mode text encoding.#57639@xiajiahang
    • ExtensionsTidied nested Extensions menus.#59468
  4. 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

    • CoreRecorded the start time of each session’s latest execution.
    • DesktopRestored classic question cards by default and added Settings → Experimental → New question UI for the redesigned keyboard-oriented dock.#59723
    • DesktopAdded a side-panel tab menu and kept close buttons visible when tabs overflow.
    • DesktopMoved user-message actions into a compact menu.
    • DesktopRedesigned the active todo pill to show the current task and concurrent work more clearly.
    • DesktopAdded consistent styling for searchable dialogs and composer pills.
    • SDKAdded if and until inputs for client.experimental.schedule.create, plus schedule check results and output fields.#60137
    • SDKExposed SessionInfo.time.busy for the latest execution’s start time.
    • SDKAdded optional source metadata to prompt file attachments.

    Fixes 18

    • CoreRejected persistent terminal requests whose working directory no longer exists.
    • CorePreserved media when sessions are forked or imported.
    • CoreAssociated image-generation notices with the correct background job.
    • TerminalPreserved captured attachments and their original source paths.#60222@OpeOginni
    • TerminalPrevented middle-truncated paths from overflowing at very narrow terminal widths.
    • TerminalImproved Go usage-limit messages with the reset time and account page link.
    • TerminalCorrectly typed and displayed Go and ChatGPT usage-limit errors.
    • DesktopStopped queued prompts from dropping frames as their content grows.
    • DesktopCounted queued quotes and browser annotations as attachments.
    • DesktopReported failures to persist composer attachments through the normal error UI.
    • DesktopMade Markdown fragment links scroll to the referenced heading.
    • DesktopKept each tab’s timeline state when switching directories.
    • DesktopOrdered the inbox’s Working shelf by execution start time.
    • DesktopFixed side-panel launchers and automatic closing when the final tab is removed.
    • DesktopFocused the matching navigation arrow while reviewing changes.
    • DesktopPreserved pending model labels only when a queued prompt actually changes models.
    • DesktopAdded reset details, an account link, and a composer tray for Go usage limits.
    • ExtensionsCorrected visible flowchart edges connected through Merman subgraphs.
  5. 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

    • CoreAdd opt-in scheduled prompts through /schedule, agent tools, and experimental.schedules.#59401#59457
    • CoreOffer GPT Image 2 after Codex sign-in and add MiniMax and Meta Muse image generation support.#60085#59929#60081
    • CoreAdd Responses API support for OpenRouter, DigitalOcean, and Venice, including freeform tools.#59991#59963
    • CoreImprove snapshot performance by coalescing captures and avoiding repeated ignore-file work.#59419
    • DesktopAdd /reload to reload configuration without restarting.#59887
    • DesktopRedesign the integrations dialog and always include OpenCode free models in the model picker.#59976#60047
    • DesktopAdd project, worktree, open-in-app, and terminal actions to the session location menu.#59607
    • DesktopRefine project and worktree selection, command search, prompt-history focus, composer model labels, and artifact preview controls.#59397#59604#59626#59735#59657
    • DesktopHighlight quoted timeline content while you write its first comment.#59286
    • DesktopKeep draft attachment bytes local when using experimental media URIs.#59104
    • SDKAdd client.experimental.schedule.{create,list,get,pause,resume,delete} for managing scheduled prompts.#59457
    • SDKGroup experimental generated-client methods under client.experimental; previous locations remain as deprecated aliases until the next minor release.#59072
    • SDKExpose compaction through the Promise AI client.#59987
    • SDKAdd freeform tool support and Responses routes for OpenRouter, DigitalOcean, and Venice.#59963#59991
    • ExtensionsLet Code Mode extension globals return Effects and declare required services.#59948

    Fixes 17

    • CorePreserve more context headroom when fitting tool output into the context window.#59934
    • CoreRetry provider throttling correctly instead of reporting it as context overflow.#59649
    • CoreSend image-edit references and image sizes in the formats expected by OpenRouter, Google, and Vercel Grok.#60067#59927
    • CoreKeep credential metadata and prompt-cache settings out of model settings and variants.#60057#59500
    • CoreKeep Git snapshots working in repositories that use a split index.#59417
    • CoreExpose Console web search only when the workspace enables it.#59592
    • CoreImprove Code Mode diagnostics for parse errors, stalled awaits, and promise-like search results.#59834#59749#59981
    • TerminalShow execution failures that occur before the first model step.#60079
    • TerminalKeep the activity spinner visible while a continued subagent runs.#59950
    • TerminalSend pasted image and PDF paths correctly when connected to a local server.#59833
    • TerminalImprove spacing in an empty /usage dialog.#59918@Tarquinen
    • DesktopFollow each plugin server’s configured endpoint when connecting to its event stream.#60087
    • DesktopTreat the reachable scroll boundary as the end when Desktop zoom is active.#60034
    • DesktopPrevent shell text from showing through copy buttons and avoid restyling the transcript when closing a side panel.#59901#59878
    • DesktopKeep rendering malformed tool metadata instead of crashing the timeline.#59736
    • DesktopMake dropdowns open immediately and keep the new-session location shortcut working after tooltip interactions.#59268#59680
    • DesktopRemove edge halos from macOS application icons.#59900
  6. v1.19.5
  7. 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

    • CoreImprove integration rebuild performance.#59402
    • CoreLet custom model configuration set a model type.#59388
    • CoreLet model-list API requests filter by type.#59355
    • CoreMake external-directory permission checks use the project's filesystem.#59089
    • CoreReduce memory use when code search finds very large lines.#59205
    • CoreLet plugins filter event subscriptions by type.#58864
    • CoreMove image resizing off the main process and release idle image memory.#58820
    • CoreReduce repeated session-history loading during a step.#59091
    • CoreAdd an experimental API for session media and opt-in media URI support.#59103
    • CoreAdd the machine hostname to /api/info.#59090
    • CoreAdd experimental content-addressed blob storage for session media behind experimental.media_blob.#58656#58741
    • CoreStart session history from the latest completed compaction.#59020
    • CoreReduce work encoding durable event payloads that are not persisted.#58923
    • CoreExpose MCP server titles from serverInfo.#58950
    • CoreApply OpenCode Console workspace configuration as a configuration layer.#57703
    • CoreReplace experimental evaluations with Decision APIs in the AI pkg, including OpenAI Decisions, System One, and Cloudflare Run models.#58758#58382#58379#58381
    • CoreConvert tool schemas once to speed up tool execution.#58798#58848
    • CoreMake Git project discovery faster while recognizing repository changes.#58616
    • CoreShow OpenCode Console budget limits and Go usage where they block you.#58694#58714
    • CoreRecord provider-reported session costs.#58562
    • CoreFind Git more reliably on macOS.#58602
    • CoreResolve model details once per prompt step.#58601
    • CoreAdd GPT-6.1 Terra and GPT-6.1 Terra Fast to Sign in with ChatGPT.#59359
    • TerminalReduce CPU use while animated session-tab pulses are visible.#59235
    • TerminalList OpenCode Console before OpenCode Go in the integration picker.#59107
    • TerminalAdd /usage, model-picker, prompt, sidebar, warning, and error details for OpenCode Console usage limits.#58731
    • TerminalMake CLI service registration more reliable when concurrent processes update its files.#59105
    • DesktopAdd a persistent desktop zoom setting.#59277
    • DesktopCapture heap snapshots in desktop debug builds on SIGUSR2 when explicitly enabled.#58317
    • DesktopShow the open session title in the browser tab.#59131
    • DesktopLoad session history once when returning to a session tab.#59166
    • DesktopAnswer questions with number keys and show multi-select choices as checkboxes.#58595
    • DesktopLet you edit line comments and copy shell output.#58970#58974
    • DesktopRender Mermaid diagrams in messages much faster, sized to fit the column.#57483#57004
    • DesktopAdd opt-in memory logging and remote debugging for desktop debug builds.#58315
    • DesktopShow web sources for a turn behind the experimental Sources setting.#58307
    • DesktopJump from a completed shell notification to its shell output.#58663
    • DesktopKeep the composer usable while the voice-call panel floats.#58587
    • DesktopUse the Soft Radar activity spinner by default and provide experimental variations.#58010#57903
    • DesktopAdd an experimental new model picker.#58413
    • DesktopAdd experimental Console voice calls in Desktop beta.#58249
    • DesktopAdd a timeline width setting.#58308
    • DesktopImprove command, session, and model search lists with sticky sections.#58222
    • DesktopAdd search to recently closed sessions.#55721
    • DesktopOpen extension configuration and skills in side tabs.#58023
    • DesktopOpen session extension lists on hover and follow keyboard navigation.#58021
    • DesktopAdd video previews with zoom controls.#57924
    • DesktopAdd generated project avatars and an experimental avatar-style switcher.#57871#57930
    • DesktopAdd recently closed side tabs to the new-tab view.#57863
    • DesktopAdd a searchable prompt history picker.#57716
    • DesktopFind settings from the command palette.#57651
    • DesktopGroup queued and steered messages, and group consecutive user messages under one metadata line.#57561#57552
    • DesktopImprove file-tree and folder-picker performance.#57573#57557
    • DesktopKeep branch search results visible while new results load.#57531
    • DesktopAdd a session-details menu to the session header.#57528
    • DesktopShow a subagent's model, status, and elapsed time in its composer area.#57473
    • DesktopLet you delete sessions from tab menus and rename the current session with Ctrl+R.#57453#57423
    • DesktopRestore session summary and project menu actions.#57781
    • DesktopAdd text-rendering controls to the debug bar.#57326
    • DesktopShow elapsed time for background work.#57218
    • DesktopImprove streamed Markdown rendering reliability and performance.#57016
    • DesktopSplit the side pane and add a draggable bottom pane with tabs.#56960
    • DesktopOpen multiple file tabs at once and open side-panel content in tabs.#57182#57094
    • DesktopMove running work to the background when you steer a session.#57142
    • DesktopLet the timeline scroll beneath the composer while keeping its content visible.#57141
    • DesktopQuote selected timeline or terminal text into the composer.#55664#58420
    • DesktopAdd a Reduce motion appearance setting.#57103
    • DesktopAttach the new-session location picker below the composer.#56952
    • DesktopOpen image previews directly from message and composer thumbnails.#56896
    • DesktopAdd a sidebar toggle for vertical tabs.#55646
    • DesktopAdd ⌘1–9 and ⇧⌘[ / ⇧⌘] shortcuts for side-panel tabs.#57301
    • DesktopLet you choose a new directory or worktree when a session location is unavailable.#56087
    • DesktopRefresh the Manage models, MCP, and fork dialogs with compact searchable lists.#56029#56028
    • DesktopInstall future Windows desktop updates in about a second.#55933
    • DesktopShow individual Code Mode tool calls in Execute rows.#55649
    • DesktopAdd a Commentary timeline category and display setting.#55248
    • DesktopSupport @ links to other sessions in messages.#57480
    • DesktopPolish spacing, alignment, borders, and typography across the session header, titlebar, composer, file tree, browser pane, timeline, and Settings.#58195#57776#57570#57782#57336#57363#58100#58979

    Fixes 112

    • CoreWait for plugins to finish reloading before each session step and tool call.#51133@kernel-oops@Tarquinen
    • CoreSize session compaction from the provider's reported token count to preserve usable context.#59441
    • CoreSkip unavailable models.dev API entrypoints instead of failing model catalog updates.#59475
    • CoreReturn a server error with a reference ID when the server cannot encode a response.#59459
    • CoreAvoid warming a session while its model request is running.#59325
    • CorePreserve legacy MCP codemode settings during migration.#59126@tneemo
    • CoreUse the correct Vertex AI endpoints for the eu and us multi-regions.#59335
    • CoreAccept Databricks hosts that include http:// or https://.#59334
    • CoreKeep files intact when patch edits move a file onto itself.#59197
    • CorePreserve literal $0 and $ARGUMENTS text in custom command input.#59198
    • CoreClose project locations concurrently during shutdown.#59326
    • CoreTreat equivalent directory paths, including trailing slashes, as one location.#59327
    • CoreSend valid tool schemas to Kimi for tuple, default, and keyword-like arguments.#59207
    • CoreExpose Code Mode MCP tools directly when the execute permission is denied.#59315
    • CoreCoordinate OAuth credential refreshes across locations and processes.#54023
    • CoreList and search remote Git branches correctly without bare remote names.#58597
    • CoreDetect AVIF, HEIC/HEIF, QuickTime, and M4A attachments correctly.#58480#58886#58887
    • CoreReduce memory retained by long-running tool calls and unchanged hooked model requests.#58448#58449
    • CoreLoad session diffs without reading every message, improving performance for large sessions.#57686
    • CoreKeep active locations alive when session events use an equivalent directory path.#56259
    • CoreReload compatibility skills only when their own sources change.#59086
    • CoreAvoid publishing redundant catalog updates when configuration is unchanged.#56267
    • CoreAvoid booting idle or deleted project locations while polling session forms.#59083
    • CoreWait for plugins before returning agent and provider lists, preventing incomplete catalogs.#59082
    • CoreManage sessions and instruction entries after their project directory is deleted.#58997
    • CoreStart fuzzy file search only on first use, reducing project startup work.#58959
    • CoreExit after 10 seconds when shutdown hangs and report pending work.#58817
    • CoreKeep the models catalog fresh without redownloading it when unchanged.#58813
    • CoreSend xAI Responses top_k settings and stop sending unsupported penalties.#58868
    • CoreHonor shared parallel tool-call and service-tier settings for Groq.#58871
    • CoreRetry throttled requests instead of misreporting them as context overflows.#58866
    • CorePreserve streamed text and reasoning that arrive after an OpenAI Chat finish reason.#58851
    • CoreClassify AWS REST JSON errors consistently regardless of where the error type appears.#58770
    • CoreValidate large base64 attachments without slowdowns or hangs.#58811
    • CoreRetry Bedrock throttling errors as rate limits instead of context overflows.#58759@Irish-Joseph
    • CoreKeep working MCP tools available when a server returns malformed ones.#58350
    • CoreMatch absolute instruction-file globs across directories.#58749@heimoshuiyu
    • CoreUse configured provider regions in Bedrock endpoint URLs.#58538
    • CoreHandle unknown OpenAI Chat finish reasons without failing the response.#58608
    • CoreAvoid unnecessary Azure model updates when endpoint transforms make no change.#58600
    • CorePrefer JPEG for opaque browser screenshots, reducing attachment size.#56990
    • CoreDetect generated image types from their bytes when compatible hosts omit the format.#58475
    • CoreKeep project services alive while sessions run long tools or wait for input, with a 24-hour inactivity cap.#57274
    • CorePrevent unrelated configuration changes and compatibility-skill update bursts from repeatedly reloading skills.#56260
    • TerminalReturn opencode run --format json server connection errors as JSON.#59366@andreivince
    • TerminalPreserve pasted prompt text when copying it back out.#59209
    • TerminalReliably update the background service on Windows when its files are briefly locked.#59105
    • TerminalKeep the background service state directory out of tool shells and identify processes blocking its port.#58815
    • TerminalRefresh Git branch details after switching branches.#58982
    • TerminalKeep the TUI running when a plugin slot or route renders bare text.#58144@anmol0b@Tarquinen
    • TerminalAccept --server and --standalone anywhere in supported CLI commands.#58505
    • TerminalRelease closed and background session transcripts to prevent memory growth.#58434#57025
    • TerminalConnect remote access tunnels through HTTP proxies.#58464
    • TerminalKeep development builds on a separate server, database, and port from released builds.#58331
    • DesktopPrevent duplicate tab shortcuts and remove uninstalled plugin commands from Shortcuts.#59499
    • DesktopKeep todo items from shrinking in the todo panel.#59430
    • DesktopKeep question-dock answers and controls positioned correctly when changing questions.#59383
    • DesktopKeep the @ menu open while it searches.#59425
    • DesktopFinish quitting after Cmd+Q on macOS.#59144@anmol0b
    • DesktopToggle MCP servers for the current session location from Settings.#59132
    • DesktopDeliver steering messages when an earlier move was missed.#58984
    • DesktopKeep session and command-palette search results stable while searching.#58908#57479
    • DesktopRestrict Search projects to the project list.#58978
    • DesktopLet custom Close tab shortcuts close terminal and browser tabs.#58945
    • DesktopPrevent live status rows from jumping or leaving gaps above the composer.#58691#58697
    • DesktopKeep browser tabs still behind open dialogs.#58958
    • DesktopKeep side-panel content and browser pages visible while the sidebar or panel moves.#58202#58185
    • DesktopRender session diffs reliably.
    • DesktopKeep keyboard focus in terminals, side panels, dialogs, and the composer when appropriate.#57980#57297#56273
    • DesktopPreserve empty browser and side-panel tabs instead of closing them automatically.#58440
    • DesktopReduce desktop memory use by releasing closed transcripts, discarded tool-result images, retained UI batches, and aborted timeline work.#57025#58434#58427#58560#58447#58439#58432
    • DesktopRestore horizontal scrolling and sticky change badges in the file tree.#58117
    • DesktopShow live Thinking for reasoning-only turns.#58299
    • DesktopStop loading older history after completing the initially visible turn and prioritize the first transcript page.#57700#57741
    • DesktopKeep Home project and session lists reliable during refreshes.
    • DesktopKeep deleted sessions from reappearing on Home.#55349
    • DesktopFind sessions immediately in @ mentions, including multi-word titles.#57683
    • DesktopKeep queued messages editable while changes sync with the server.#57569
    • DesktopOpen image and video URLs in the browser pane.#57562
    • DesktopMark submitted generated forms as complete and send each response only once.#57537
    • DesktopImprove file-view performance with reused views, virtualized medium files, and cached diffs.#57551
    • DesktopGroup untracked folders into one expandable review row.#57527
    • DesktopLet you paste into the composer from the session view.#57545
    • DesktopRecover failed beta background servers and preserve their required CLI versions.#57321
    • DesktopKeep the running server available while beta updates install.#57309
    • DesktopMake links in user messages, shell output, and Code Mode output clickable.#57211#57303
    • DesktopMake Check for Updates always report its result.#57296
    • DesktopReopen the last closed side-panel tab with ⇧⌘T and open a browser tab with ⌘T.#57269#57156
    • DesktopKeep OpenCode keyboard shortcuts working in the browser pane.#56697#55240
    • DesktopPreview image attachments supplied by file path.#57249
    • DesktopApply configured code and UI fonts consistently.#57242
    • DesktopKeep activity and busy indicators steady while switching sessions.#57196
    • DesktopReserve ⇧⌘W for closing the window so ⌘W does not.#57150
    • DesktopMake image preview transitions resize smoothly without clipping or blocking clicks.#56997#57324
    • DesktopReturn focus to the prompt after keyboard model selection.
    • DesktopKeep tables visible beneath sticky headers.#57050
    • DesktopFit provider connection steps without shifting a dialog's top edge.#57006
    • DesktopGive unavailable-server panels clear error styling.#57003
    • DesktopKeep long Execute tool code contained and show successful Code Mode output.#56915
    • DesktopFocus the most useful control when dialogs open, including Cancel in delete confirmations.#57453
    • DesktopInstall Windows beta, stable, and nightly builds into separate directories.#56904
    • DesktopKeep session tabs recoverable when their server becomes unreachable.#56248
    • DesktopKeep the composer model's provider and session-model resolution consistent with the TUI.#56225
    • DesktopReread open files without resetting their scroll position.#55899
    • DesktopHide agent names when agents are disabled.#57525
    • DesktopPolish sidebar, panel, composer, activity, question-dock, loading, and motion behavior across light and dark themes.#57449#58013#58577#57944#58052#58494#58073#58114
    • DesktopPolish hover states, cursors, tooltips, focus rings, scrollbars, and transitions across desktop controls.#57653#57787#57304#58971#57221#57192#58575#58580
    • SDKFix generated Promise client input types for TypeScript consumers.#58875
    • SDKLet SDK clients discard inline tool-result file payloads to reduce memory use.#59101
    • SDKAvoid unnecessary catalog refreshes for locations an SDK client has not loaded.#55237#59099
    • SDKRestore running sessions created while an SDK client was disconnected.#53012
    • SDKRelease omitted tool-image payloads from memory instead of retaining their base64 data.#58560
  8. 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.

  9. v1.19.3 +1

    OpenCode 1 now stays on the 1.x release line

    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.

    Improvements

    • CoreConfigure model reasoning options to generate reasoning variants, replacing catalog variants while preserving your configured variant overrides.

    Fixes

    • CoreUpgrading to OpenCode 2 remains a separate, explicit choice through the 2.0 offer in /update or opencode upgrade --major.
    • CoreFix upgrades for installs managed by yarn.
    • CoreSkip 1.x updates for Homebrew Core installs, which now track OpenCode 2, and check tap and Chocolatey availability before offering an update.
    • CoreThe install script refuses to install 2.x versions.
  10. v1.19.1

    Session sharing has been discontinued

    Session sharing has been discontinued. Existing share links and session-sharing commands are no longer available, and importing sessions from share URLs is unsupported.