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.
⌘Wnow closes side panel tabs wherever focus is,⌥⌘WorCtrl+Alt+Walways closes the session tab, and⌘⇧Treopens the last closed tab of either kind where it was.#62922Mark 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.imageis removedThis affects code that imports
#63011@opencode/aidirectly. Readresponse.images[0]instead ofresponse.image.SDK: fewer endpoints wait for plugins to load
On a Location that is still loading plugins,
#62796#63040agent.listreturns the agents loaded so far, andintegration.list,usage.limits,vcs.init,rpc.callandartifact.*no longer wait up to 5 seconds. Entries and actions that a plugin provides appear when it finishes loading, so refresh on the matching*.updatedevent. Model, provider,generate.*,voice.*andwebsearch.queryendpoints still wait.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
- Core
readaccepts a negativeoffsetto read from the end of a file, such as-50for 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.ttlby default (interval: "auto"), or every 4 minutes without a TTL. Models whose cache outlasts the warmingdurationare 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
←/→andTab/Shift+Tab.#62906 - TerminalThe model picker no longer has a Usage action; use
/usageinstead.#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
- SDK
session.generatereturnstokensandcostalong withtext.#62835 - SDK
credential.updatedincludes theintegrationIDandcredentialIDof the login that changed.#62762 - SDKPredicate questions in
client.experimental.generate.decisionsaccept optionalcriteria: { true?, false? }.#62819 - ExtensionsACP clients can redirect a running turn with the
_session/steeringextension, advertised as_meta.steering.supportedininitialize.#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_compactionon, a background summary no longer stops a running Claude Agent session mid tool call.#63025 - CoreAfter
opencode auth logouton a.well-knownintegration, 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
gatewayApiKeynow 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
apiandoptions.baseURLkeepsoptions.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.generaterequests, 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
- Core
readno 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
descriptionstarts 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+Rtoggles 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