> opencode.ai is the source of truth for OpenCode, the open source coding agent, including its apps, install commands, docs and releases. The current version is OpenCode v2.
> Cite the canonical page, https://opencode.ai/changelog/v2.2.7, not this Markdown file. For an index of the site, see https://opencode.ai/llms.txt.

# GitHub Copilot Auto

2026-11-10 · v2.2.7

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](https://github.com/anomalyco/opencode/pull/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](https://github.com/anomalyco/opencode/pull/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](https://github.com/anomalyco/opencode/pull/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`.

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

## Improvements

- **Core:** **MCP 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](https://github.com/anomalyco/opencode/pull/62827), [#63012](https://github.com/anomalyco/opencode/pull/63012))
- **Core:** `read` 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](https://github.com/anomalyco/opencode/pull/62147))
- **Core:** Shell 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](https://github.com/anomalyco/opencode/pull/62141))
- **Core:** Prompt 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](https://github.com/anomalyco/opencode/pull/62831))
- **Core:** When 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](https://github.com/anomalyco/opencode/pull/62176))
- **Terminal:** The update and confirm dialogs have buttons you can move between with `←`/`→` and `Tab`/`Shift+Tab`. ([#62906](https://github.com/anomalyco/opencode/pull/62906))
- **Terminal:** The model picker no longer has a **Usage** action; use `/usage` instead. ([#62927](https://github.com/anomalyco/opencode/pull/62927))
- **Desktop:** The answer you pick in the question dock shows as a raised card. ([#62896](https://github.com/anomalyco/opencode/pull/62896))
- **Desktop:** Inline rename and custom-answer fields no longer show a focus border. ([#62919](https://github.com/anomalyco/opencode/pull/62919))
- **SDK:** `session.generate` returns `tokens` and `cost` along with `text`. ([#62835](https://github.com/anomalyco/opencode/pull/62835))
- **SDK:** `credential.updated` includes the `integrationID` and `credentialID` of the login that changed. ([#62762](https://github.com/anomalyco/opencode/pull/62762))
- **SDK:** Predicate questions in `client.experimental.generate.decisions` accept optional `criteria: { true?, false? }`. ([#62819](https://github.com/anomalyco/opencode/pull/62819))
- **Extensions:** ACP clients can redirect a running turn with the `_session/steering` extension, advertised as `_meta.steering.supported` in `initialize`. ([#54394](https://github.com/anomalyco/opencode/pull/54394), [@smagnuso](https://github.com/smagnuso))

## Fixes

- **Core:** GitHub 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](https://github.com/anomalyco/opencode/pull/62034))
- **Core:** GitHub 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](https://github.com/anomalyco/opencode/pull/62171))
- **Core:** Remote 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](https://github.com/anomalyco/opencode/pull/62827))
- **Core:** A temporary failure while refreshing an MCP OAuth token keeps your login for the next try instead of marking the server `needs_auth`. ([#63012](https://github.com/anomalyco/opencode/pull/63012))
- **Core:** MCP 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](https://github.com/anomalyco/opencode/pull/61254))
- **Core:** MCP prompts stay available when refreshing a server's prompt list fails. ([#62266](https://github.com/anomalyco/opencode/pull/62266))
- **Core:** With `background_compaction` on, a background summary no longer stops a running Claude Agent session mid tool call. ([#63025](https://github.com/anomalyco/opencode/pull/63025))
- **Core:** After `opencode auth logout` on a `.well-known` integration, its remote providers and policies stop applying until you log back in. ([#62760](https://github.com/anomalyco/opencode/pull/62760))
- **Core:** OpenCode Console workspace policies still apply when Console's instructions or skills fail to load. ([#62702](https://github.com/anomalyco/opencode/pull/62702))
- **Core:** Cloudflare AI Gateway providers set up with only `gatewayApiKey` now send that key. ([#62574](https://github.com/anomalyco/opencode/pull/62574))
- **Core:** A v1 model override that sets only some capabilities no longer resets the others, so catalog capabilities like PDF input are kept. ([#62573](https://github.com/anomalyco/opencode/pull/62573))
- **Core:** A v1 provider config that sets both `api` and `options.baseURL` keeps `options.baseURL`. ([#62570](https://github.com/anomalyco/opencode/pull/62570))
- **Core:** Legacy model references with an inline variant, such as `"openai/gpt-5#high"`, keep the variant. ([#62254](https://github.com/anomalyco/opencode/pull/62254))
- **Core:** A fresh install imports saved provider credentials from the legacy `auth.json`, and skips an invalid one with a warning instead of stopping setup. ([#62568](https://github.com/anomalyco/opencode/pull/62568))
- **Core:** Cache 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](https://github.com/anomalyco/opencode/pull/62926), [#62941](https://github.com/anomalyco/opencode/pull/62941), [#62972](https://github.com/anomalyco/opencode/pull/62972))
- **Core:** Tokens and cost from `session.generate` requests, including cache warming pings, count toward the session's totals. ([#63006](https://github.com/anomalyco/opencode/pull/63006))
- **Core:** Under zsh, a glob that matches nothing, like `rm *.tmp`, is passed through as bash does instead of stopping the command. ([#62141](https://github.com/anomalyco/opencode/pull/62141))
- **Core:** On Windows, multi-line commands no longer lose everything after the first line with PowerShell 7 from the Microsoft Store. ([#62522](https://github.com/anomalyco/opencode/pull/62522))
- **Core:** `read` no longer cuts an emoji in half when it shortens a long line. ([#62575](https://github.com/anomalyco/opencode/pull/62575))
- **Core:** Generated session titles no longer include the model's commentary. ([#62267](https://github.com/anomalyco/opencode/pull/62267), [@shanebishop1](https://github.com/shanebishop1))
- **Core:** Markdown agents whose `description` starts with a bracketed tag, like `[Beta] Reviews code`, now load. ([#62250](https://github.com/anomalyco/opencode/pull/62250))
- **Core:** Markdown agent and command files that fail to load log a warning with the file path and frontmatter error. ([#62464](https://github.com/anomalyco/opencode/pull/62464), [#62251](https://github.com/anomalyco/opencode/pull/62251))
- **Core:** Markdown agent discovery skips `node_modules`. ([#62571](https://github.com/anomalyco/opencode/pull/62571))
- **Core:** Failed plugin installs from git show git's own error instead of "An unknown git error occurred". ([#62261](https://github.com/anomalyco/opencode/pull/62261))
- **Terminal:** Session exports are saved in the current working directory instead of the system temp folder. ([#62253](https://github.com/anomalyco/opencode/pull/62253))
- **Terminal:** Typing a child session's exact ID in the open-session menu lists that session. ([#62262](https://github.com/anomalyco/opencode/pull/62262))
- **Terminal:** The TUI follows the terminal's current light or dark mode instead of a cached palette. ([#62248](https://github.com/anomalyco/opencode/pull/62248))
- **Desktop:** On Windows and Linux, `Ctrl+Shift+R` toggles the review panel again instead of reloading the window. ([#62567](https://github.com/anomalyco/opencode/pull/62567))
- **Desktop:** Closing the last side panel tab slides the panel shut. ([#62758](https://github.com/anomalyco/opencode/pull/62758))
- **Desktop:** Selects, menus, tooltips and toasts opened from a dialog are reachable by screen readers. ([#62913](https://github.com/anomalyco/opencode/pull/62913))
- **Desktop:** An error appears when a path can't be opened in its default app. ([#62572](https://github.com/anomalyco/opencode/pull/62572))
- **Desktop:** Cut, Copy, Paste and Select All in the right-click menu follow the app language. ([#62252](https://github.com/anomalyco/opencode/pull/62252))
- **Desktop:** Ukrainian tool titles use nouns. ([#62263](https://github.com/anomalyco/opencode/pull/62263))
- **Desktop:** Scrolling 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](https://github.com/anomalyco/opencode/pull/62597))

Released in [v2.2.7](https://github.com/anomalyco/opencode/releases/tag/v2.2.7)

Older: [Shared MCP Connections](https://opencode.ai/changelog/v2.2.6) (v2.2.6)

[All updates](https://opencode.ai/changelog)

---

If something here is wrong or missing, open an issue at https://github.com/anomalyco/opencode/issues.
