Skip to content

desktop: SSH remote reports "running OpenCode 1" for a patch-version mismatch #61007

Closed as duplicate

Description

@theggs

Summary

The desktop app's SSH remote connection refuses to connect when the remote service runs a different patch version of OpenCode 2, and reports it as "running OpenCode 1". The displayed 1 is a fallback value, not the real server version.

Environment

  • opencode version: Desktop 2.2.5; remote service 2.2.0
  • OS: macOS (desktop), Linux (remote)
  • Terminal: Not applicable (desktop app)
  • Shell: zsh (remote)
  • Install/channel: latest
  • Active plugins: None

Reproduction

  1. On a remote Linux host, run an OpenCode 2.2.0 background service (service.json reports "version":"2.2.0").
  2. In OpenCode Desktop 2.2.5, add an SSH remote connection to that host and try to connect.
  3. The connection is marked incompatible and shows: This server is running OpenCode 1, which isn't compatible with this app. Upgrade it to OpenCode V2 to continue.
  4. Click "Update and reconnect": the desktop installs its matching CLI version, restarts the remote service, and connects successfully.

Expected Behavior

The message should report the actual version mismatch (2.2.0 vs 2.2.5), or offer the update action directly. A patch-level mismatch should not be presented as an OpenCode 1 server that must be upgraded to V2.

Actual Behavior

The connection is presented as an incompatible OpenCode 1 server. Both sides are OpenCode V2; only the patch version differs. The message hides the real cause and the recovery action.

Additional Context

  • The SSH bootstrap compares the remote service registration version with the desktop app's bundled CLI version using strict equality. On mismatch it fails with a version error and marks the connection incompatible.
  • The row message uses server.row.incompatible with version: health?.version ?? "1". For an SSH target that never reaches the connected state, health.version is unavailable, so the UI displays the hardcoded fallback 1.
  • Frequency: consistent.
  • Workaround: "Update and reconnect" resolves it.

Activity

  1. opencodejr commented on Nov 1, 2026

    @opencodejr
    Contributor

    Thanks for the clear report and the analysis.

    I think this is a duplicate of #53375. It describes the same problem with Desktop 2.0.23 and a 2.0.22 remote. The SSH bootstrap requires the desktop and remote versions to match exactly, the remote version gets dropped, and the UI falls back to health?.version ?? "1". The result is that a patch-level V2 mismatch is shown as "running OpenCode 1". That issue also asks for the real version to be shown and for the update action to be offered, and it has been confirmed there on 2.2.1/2.2.0.

    Possible duplicates and related issues, ordered by likelihood:

    As you found, Update and reconnect works around it. Running opencode upgrade and then opencode service restart on the remote also works.

    The bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different.

  2. opencodejr commented on Nov 2, 2026

    @opencodejr
    Contributor

    Since there's been no reply to the duplicate notice, I'm closing this as a duplicate of #53375. That issue covers the same problem: when an SSH remote's OpenCode V2 version differs from the desktop app's, even just in the patch version, it's reported as "running OpenCode 1" and the real version isn't shown. Please follow #53375 for updates. #60665 is the related request to allow patch-level differences between the app and the remote.

    Until it's fixed, Update and reconnect works around it. So does running opencode upgrade and then opencode service restart on the remote.

    If your problem turns out to be different from #53375, reply here and we can reopen this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions