OpenCode 2 v2.0.31: model reasoning in config, new theme#
Published by Alex Sorokoletov
Part of the OpenCode 2 Version Tracker series. | OpenCode on GitHub | OpenCode 2 docs
OpenCode 2 v2.0.31 follows v2.0.30. Model reasoning can now be read from config (#55853), the terminal adds a "new designs" experiment with an "opencode2" theme (#55818, #55798), and a run of core fixes covers config parsing, free-model selection, and Bedrock provider handling.
Model reasoning and selection#
v2.0.31 reads a model's reasoning setting from config (#55853). Reasoning loads for every native provider package (#55789), and configured limits are seeded before model transforms run (#55778).
Model selection also changes on free models. When only free OpenCode models are available, OpenCode defaults to the big-pickle model (#55852), and when signed out it prioritizes preferred free OpenCode models (#55972).
A new designs experiment in the terminal#
A "new designs" experiment gates a set of new dialog designs (#55818, #55810), and DialogSelect is rebuilt on the shared dialog layout (#55799). The release adds an "opencode2" theme and a text.faint token (#55798).
The rest of the terminal work is polish. Repeated review no longer reopens the last diff file (#55845), the review pane stays steady when the side terminal toggles (#55879), long file names fade at the edge of the file tree (#55889), and the embedded terminal panel gets a transparent background (#55396). The tool group count slides when it changes (#55617), the compact number form rolls over to M at the rounding boundary (#55871), and /editor says why it did nothing when no editor is set (#55872). On Windows, plugin Git console windows are hidden (#55475).
Config parsing and provider fixes#
| Change | PR |
|---|---|
| Env config values that break parsing are escaped | #55915 |
| Unreadable config file references are treated as empty | #55959 |
| Variants respelled when config changes a catalog model's package | #55962 |
| Anthropic cache format honored on Bedrock Converse | #55942 |
| Newer Bedrock bare IDs that need inference profiles are hidden | #54486 |
| Numeric MCP timeouts accepted | #55851 |
| Sanitized exports omit compaction replay context | #55592 |
| Managed services load the saved environment at start | #50907 |
| Update caches rollout fallback reads | #55205 |
Two documentation changes sit next to these. The external_directory permission is documented as defaulting to allow, so paths outside the project are read or edited without a prompt unless you add a rule (#55885)[1], and MCP CIMD client registration is documented (#55796).
The config path does more, the terminal previews a redesign#
The new terminal work is the "new designs" experiment and the opencode2 theme, both opt-in, and DialogSelect is rebuilt on the shared dialog layout (#55799).
The core reads config more capably and fails more softly. Reasoning joins the settings read from config (#55853), configured limits seed before transforms (#55778), and three fixes keep a bad config from breaking a run: env values that break parsing are escaped (#55915), unreadable references resolve to empty (#55959), and variants are respelled when config moves a catalog model to a different package (#55962).
Provider handling gets Bedrock attention: the Anthropic cache format is honored on Bedrock Converse (#55942) and newer bare IDs that require inference profiles are hidden (#54486). Free-model selection is tuned for signed-out use, defaulting to big-pickle (#55852) and prioritizing preferred free models (#55972).
All trademarks and software referenced belong to their respective owners.
Sources#
external_directorydefault: OpenCode 2 docs, Permissions
Previous OpenCode 2 analysis: v2.0.30 (October 15, 2026)
Next OpenCode 2 analysis: v2.0.32 (October 17, 2026)
All 15 OpenCode 2 analyses: OpenCode 2 Version Tracker · Official OpenCode 2 changelog