Repository navigation
chore: release v0.83.0 - #589
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Minor release: OpenCode no longer shares one process between sessions. Every
autoopen ofopencodeRuntimenow starts its own process again, on every version and platform, including OpenCode 2.2.3 (shared since 0.81.0) and 2.2.5 (shared since 0.82.0). No native runtime shares a process in this release.Behavior changes for hosts
OpenCode shared placement is withdrawn (#587)
auto, the default, every OpenCode session opens its own process, andSession.placementreportsisolated. They behave like any other isolated session: disposal and the abort fallback recordexited, neverreleased, so later controls are not rejectedsession_released;resources()describes the session's own process, withoutscope: "shared_process"(and stays null on Windows); and the[oar:opencode:shared]stderr summaries no longer appear.sharedrequest is refused withUnsupportedOptionError(option: "placement") on every version and platform. Its message names configured plugins as the reason; match onoption, not on the text.runtime.execution === "process" ? runtime.withPlacement("isolated") : runtime, as Raft, Ferry and rowrow do, see no change.Why: OpenCode loads plugins from user and project configuration, and a plugin can start its own child processes. A plugin that starts a child without setting a working directory gets the OpenCode process's working directory. In a shared process that is the shared process's home directory; in a separate process it is the session's directory. We observed this with user-level and project-level plugins whose tool
execute.beforehook starts a child, on OpenCode 2.2.3 and 2.2.5 (Linux x64): in all four shared runs the child ran in the home directory, and in all four isolated runs it ran in the session directory. OpenCode's shell tool ran in the session directory in both modes. OAR cannot tell before a session opens which plugins its configuration loads, so it cannot pick out sessions that are safe to share (evidence).The shared-process rules now require that tools, stdio MCP servers and hooks started for a session get the working directory and environment they would have in a separate process, and that a runtime version whose sessions may use them without OAR being able to tell beforehand does not share (#586). Grok, whose sharing was never released, also stays unadmitted.
The shared-process code stays in the repository for experiments, but no public export reaches it:
opencodeRuntime,withPlacement(),opencodeSessionanddefaultRuntimesall go through the refusal or the isolated path.Docs
Tests and CI
checkjob no longer runs the OpenCode shared behavior suite or the real shared and isolated lifecycle checks. It still installs OpenCode 2.2.5 for the real isolated tool-cleanup check. Those checks, plus a new plugin child-environment comparison, run against an experimental adapter outside the package in a manualOpenCode sharing experimentworkflow (opencode-sharing-experiment.yml, all three platforms by default) (fix(opencode): withdraw shared placement after plugin cwd counterexample #587).autosessions for installations reporting 2.2.3, 2.2.5 and 2.2.6, one with no MCP servers and one with only an HTTP MCP server. It checks that each isisolatedwith its own process, and that explicitsharedis refused onplacementwith a message naming configured plugins (fix(opencode): withdraw shared placement after plugin cwd counterexample #587).🤖 Generated with Claude Code