Repository navigation
Description
What happened
With min-release-age=3 in ~/.npmrc, T3 Code offered OpenCode 2.2.5 → 2.2.6 about 5 hours after 2.2.6 was published. npm refuses that release until it is 3 days old, so Update failed on both Macs, in two different ways:
- Vite+ install:
Update command completed, but T3 Code still detects an outdated provider version. - Native-command install:
Update command exited with code 1: └ Failed
The offer stays until the release ages past the window. The third machine has no release-age policy and already runs 2.2.6.
Diagnosis
resolveLatestProviderVersion falls back to fetchNpmLatestVersion, which reads registry.npmjs.org/<pkg>/latest and ignores the release-age policy, because the vite-plus-global and native opencode upgrade branches set no lookupLatestVersion (packages/provider-core/src/server/maintenanceResolver.ts). The two failures then differ:
- Vite+:
vp i -g @opencode/cliresolves under the policy, reinstalls 2.2.5 and exits 0. - Native: OpenCode pins the exact version it wants, so npm fails with
ETARGETand exit 1.
#21422 reported the npm and Vite+ case and was closed as a duplicate of #14249, whose fix covers pnpm. Open PR #24062 adds a lookup for npm-global installs only, so neither path here is covered.
Steps to reproduce
- Set
min-release-age=3in~/.npmrc. - Install OpenCode one of two ways. A:
vp i -g @opencode/cli, with the Vite+ bin directory first onPATH. B: a dedicated npm prefix exposed through a wrapper outsidenode_modules, so T3 Code selects<wrapper> upgrade. - Wait for an OpenCode release younger than the window, then open T3 Code. It offers the new version.
- Press Update. A shows the "still detects an outdated provider version" message. B shows
Update command exited with code 1: └ Failed.
Expected: T3 Code offers only a version the installer can install under the policy, or says the newer release is waiting on it. With the policy unset, or after the window passes, Update should install the release.
Version
T3 Code 0.1.8-nightly.20261107.4301 (4cb6945dc60e) desktop app, on the server of both affected machines. This is the newest nightly. Triage CLI: 0.1.6.
Environment
macOS arm64 (two machines), npm 12.2.1, Vite+ 1.3.0, OpenCode 2.2.5 → 2.2.6
Evidence
Install A, rerun by hand after T3 Code's attempt:
$ vp i -g @opencode/cli
info: Installing 1 global package with Node.js 26.13.0
+ Installed @opencode/cli 2.2.5
Exit 0.
Install B, from the `ProviderMaintenanceRunner.runCommandAndVerify` trace event (`command: opencode upgrade`, `exitCode: 1`):
● Using method: npm
● From 2.2.5 → 2.2.6
■ npm could not install OpenCode
│ npm error code ETARGET
│ npm error notarget No matching version found for @opencode/cli@2.2.6 with
│ a date before 11/3/2026, 8:16:00 PM.
│ Command npm install --global --force @opencode/cli@2.2.6
└ Failed
Dry run: `npm install -g --dry-run @opencode/cli` selects 2.2.5, and the same command with `@2.2.6` fails with `ETARGET`. `npm view @opencode/cli version` reports 2.2.6, because it does not apply the policy.Related issues
#21422 (closed as a duplicate of #14249), #14249 (closed, pnpm), #24062 (open PR, npm-global only), #30632 (open, same class on bun), #26280 (open, the same toast logic picks an unhelpful last line, here └ Failed), #22741 (open, a different Vite+ wrong-install failure)
Fix applied or workaround
Wait until the release passes the window. A manual install with --min-release-age=0 also works if you accept bypassing the policy.
Filed by
Claude Opus 5.5 (claude-opus-5-5) in Claude Code, through t3 triage
Activity
coygeek commentedon Nov 7, 2026
Fresh evidence: this still reproduces on nightly 4327, and it also fails through the sidebar's update-everything dialog.
Version: the run started on desktop
0.1.8-nightly.20261107.4314. After the app relaunched on0.1.8-nightly.20261107.4327, the update was still offered.Environment: macOS arm64, npm 12.2.1,
min-release-age=3, OpenCode 2.2.5 → 2.2.6, native-command install (<wrapper> upgrade).What happened: one run covered the local OpenCode update, a remote desktop app update and the local app update.
server.updateProviderfailed in about 4 s. Both app updates still went ahead, so the failed OpenCode update was the only one left on this machine.After relaunch on 4327: the provider status still reports
status: behind_latest,latestVersion: 2.2.6andcanUpdate: true, so the dialog offers the same update that just failed.How long it lasts: 2.2.6 was published at 2026-11-06T23:33:40Z, so this install can't accept it until 2026-11-09T23:33:40Z. Until then, every press of Update fails.
Comparison: a machine with no release-age policy on the same fleet already runs 2.2.6.
Fix status: PR #24062 is still open and only covers
npm-global, so it doesn't cover this native-command path.Produced by Claude Code (Opus 5.5) through
t3 triage.