Skip to content

Windows Desktop 1.14.39 tries to install @opencode-ai/plugin@local #26003

@netics01

Description

@netics01

Problem

OpenCode Desktop on Windows logs repeated config dependency install failures because it tries to install @opencode-ai/plugin@local.

@opencode-ai/plugin is a valid official package, but local is not a published npm version or dist-tag, so npm resolution fails.

This looks related to #20891, but this report is for an installed official Windows Desktop release, not a locally built preview binary.

Environment

  • OS: Windows 11
  • Client: OpenCode Desktop
  • Desktop executable version: 1.14.39
  • Workspace: normal git repository with an .opencode directory
  • Current project .opencode contents: only .gitignore, empty agents/, empty commands/; no project plugin files and no .opencode/package.json

Observed log

From C:\Users\USER\.local\share\opencode\log\2026-05-06T075806.log:

WARN  2026-05-06T07:58:08 +999ms service=config dir=D:\Github\OpencodeScratch\.opencode error=Cause([Fail(NpmInstallFailedError (cause: @opencode-ai/plugin: No matching version found for @opencode-ai/plugin@local.))]) background dependency install failed

The same warning repeated across several recent startup logs:

2026-05-06T075806.log
2026-05-06T075017.log
2026-05-06T055553.log
2026-05-06T040512.log
2026-05-06T035703.log
2026-05-06T035536.log

Expected

Official Desktop builds should install a published @opencode-ai/plugin version matching the running OpenCode release, or skip pinning to a version when the runtime is treated as local/dev.

They should not try to install @opencode-ai/plugin@local in a released Desktop build.

Investigation / suspected root cause

The config dependency installer adds @opencode-ai/plugin with InstallationVersion unless InstallationLocal is true:

npmSvc.install(dir, {
  add: [
    {
      name: "@opencode-ai/plugin",
      version: InstallationLocal ? undefined : InstallationVersion,
    },
  ],
})

Code reference in current dev:

packages/opencode/src/config/config.ts

InstallationVersion falls back to "local" if the compile-time OPENCODE_VERSION define is absent:

export const InstallationVersion = typeof OPENCODE_VERSION === "string" ? OPENCODE_VERSION : "local"
export const InstallationChannel = typeof OPENCODE_CHANNEL === "string" ? OPENCODE_CHANNEL : "local"
export const InstallationLocal = InstallationChannel === "local"

Code reference:

packages/core/src/installation/version.ts

The standalone Bun CLI build defines both OPENCODE_VERSION and OPENCODE_CHANNEL:

packages/opencode/script/build.ts

But the Node server build used by Desktop appears to define only OPENCODE_CHANNEL, not OPENCODE_VERSION:

define: {
  OPENCODE_MIGRATIONS: JSON.stringify(migrations),
  OPENCODE_CHANNEL: `'${Script.channel}'`,
}

Code reference:

packages/opencode/script/build-node.ts

Desktop imports that Node server build via ../opencode/dist/node:

packages/desktop/electron.vite.config.ts

So the Desktop server bundle may end up with:

  • InstallationVersion === "local"
  • InstallationChannel !== "local"
  • InstallationLocal === false

That combination makes config dependency installation request @opencode-ai/plugin@local.

Why this matters

For workspaces without local plugins this may be a noisy background warning only. For workspaces with local plugins or custom tools that import @opencode-ai/plugin, this can break dependency preparation and lead to confusing plugin loading behavior.

Notes

npm view @opencode-ai/plugin version dist-tags shows latest: 1.14.39, but no local dist-tag.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions