Skip to content
  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

    • CoreMCP Logins Stay Signed In: Remote MCP servers that rotate refresh tokens no longer sign you out when several clients refresh at once or the token endpoint fails for a moment.#62827#63012
    • Coreread accepts a negative offset to read from the end of a file, such as -50 for the last 50 lines. An offset past the end returns the last lines and the file's line count instead of failing.#62147
    • CoreShell results end with Exit code: N. Commands killed by a signal show the signal name, and timeouts say how long they waited and suggest a larger timeout.#62141
    • CorePrompt cache warming times its pings from the model's cache.ttl by default (interval: "auto"), or every 4 minutes without a TTL. Models whose cache outlasts the warming duration are no longer pinged.#62831
    • CoreWhen MCP servers connect, disconnect or change tools, Code Mode sends the model a short list of what changed instead of the whole tool catalog.#62176
    • TerminalThe update and confirm dialogs have buttons you can move between with ←/→ and Tab/Shift+Tab.#62906
    • TerminalThe model picker no longer has a Usage action; use /usage instead.#62927
    • DesktopThe answer you pick in the question dock shows as a raised card.#62896
    • DesktopInline rename and custom-answer fields no longer show a focus border.#62919
    • SDKsession.generate returns tokens and cost along with text.#62835
    • SDKcredential.updated includes the integrationID and credentialID of the login that changed.#62762
    • SDKPredicate questions in client.experimental.generate.decisions accept optional criteria: { true?, false? }.#62819
    • ExtensionsACP clients can redirect a running turn with the _session/steering extension, advertised as _meta.steering.supported in initialize.#54394@smagnuso

    Fixes

    • CoreGitHub Copilot session costs use the amount Copilot charged instead of the catalog estimate, and content-filter errors name the filter that blocked the response.#62034
    • CoreGitHub Copilot picks up a new API endpoint after a plan change on its next model refresh, so you no longer have to sign in again.#62171
    • CoreRemote MCP servers that rotate refresh tokens no longer log you out when the TUI, desktop app, background service or several projects refresh the same login at once.#62827
    • CoreA temporary failure while refreshing an MCP OAuth token keeps your login for the next try instead of marking the server needs_auth.#63012
    • CoreMCP tool calls no longer fail when the server's result doesn't match the tool's own output schema, so completed actions aren't reported as failed.#61254
    • CoreMCP prompts stay available when refreshing a server's prompt list fails.#62266
    • CoreWith background_compaction on, a background summary no longer stops a running Claude Agent session mid tool call.#63025
    • CoreAfter opencode auth logout on a .well-known integration, its remote providers and policies stop applying until you log back in.#62760
    • CoreOpenCode Console workspace policies still apply when Console's instructions or skills fail to load.#62702
    • CoreCloudflare AI Gateway providers set up with only gatewayApiKey now send that key.#62574
    • CoreA v1 model override that sets only some capabilities no longer resets the others, so catalog capabilities like PDF input are kept.#62573
    • CoreA v1 provider config that sets both api and options.baseURL keeps options.baseURL.#62570
    • CoreLegacy model references with an inline variant, such as "openai/gpt-5#high", keep the variant.#62254
    • CoreA fresh install imports saved provider credentials from the legacy auth.json, and skips an invalid one with a warning instead of stopping setup.#62568
    • CoreCache warming stops for a session when a ping rebuilds the cache instead of reading it, counts its interval from when a request was sent, and no longer pings during compaction or after the session is deleted.#62926#62941#62972
    • CoreTokens and cost from session.generate requests, including cache warming pings, count toward the session's totals.#63006
    • CoreUnder zsh, a glob that matches nothing, like rm *.tmp, is passed through as bash does instead of stopping the command.#62141
    • CoreOn Windows, multi-line commands no longer lose everything after the first line with PowerShell 7 from the Microsoft Store.#62522
    • Coreread no longer cuts an emoji in half when it shortens a long line.#62575
    • CoreGenerated session titles no longer include the model's commentary.#62267@shanebishop1
    • CoreMarkdown agents whose description starts with a bracketed tag, like [Beta] Reviews code, now load.#62250
    • CoreMarkdown agent and command files that fail to load log a warning with the file path and frontmatter error.#62464#62251
    • CoreMarkdown agent discovery skips node_modules.#62571
    • CoreFailed plugin installs from git show git's own error instead of "An unknown git error occurred".#62261
    • TerminalSession exports are saved in the current working directory instead of the system temp folder.#62253
    • TerminalTyping a child session's exact ID in the open-session menu lists that session.#62262
    • TerminalThe TUI follows the terminal's current light or dark mode instead of a cached palette.#62248
    • DesktopOn Windows and Linux, Ctrl+Shift+R toggles the review panel again instead of reloading the window.#62567
    • DesktopClosing the last side panel tab slides the panel shut.#62758
    • DesktopSelects, menus, tooltips and toasts opened from a dialog are reachable by screen readers.#62913
    • DesktopAn error appears when a path can't be opened in its default app.#62572
    • DesktopCut, Copy, Paste and Select All in the right-click menu follow the app language.#62252
    • DesktopUkrainian tool titles use nouns.#62263
    • DesktopScrolling titlebar search results no longer jumps back when late results arrive, the inbox no longer announces already-running sessions as working on load, and the quote toolbar comes back after Escape.#62597