{"record":{"id":"b849bbb815f512cb","repo":"denoland/deno","slug":"invalid-version-passed-pass-a-semver-or-a-f","errorCode":null,"errorMessage":"Invalid version passed ({})\n\nPass a semver, or a full 40 character git commit hash, or a release channel name.\n\nUsage:\n{}","messagePattern":"Invalid version passed \\((.+?)\\)\n\nPass a semver, or a full 40 character git commit hash, or a release channel name\\.\n\nUsage:\n(.+?)","errorType":"validation","errorClass":"AnyError","httpStatus":null,"severity":"error","filePath":"cli/tools/upgrade.rs","lineNumber":1270,"sourceCode":"\n    let passed_version = passed_version\n      .strip_prefix('v')\n      .unwrap_or(&passed_version)\n      .to_string();\n\n    let (channel, passed_version) = if is_canary {\n      if !re_hash.is_match(&passed_version) {\n        bail!(\n          \"Invalid commit hash passed ({})\\n\\nPass a semver, or a full 40 character git commit hash, or a release channel name.\\n\\nUsage:\\n{}\",\n          colors::gray(passed_version),\n          UPGRADE_USAGE\n        );\n      }\n\n      (ReleaseChannel::Canary, passed_version)\n    } else {\n      let Ok(semver) = Version::parse_standard(&passed_version) else {\n        bail!(\n          \"Invalid version passed ({})\\n\\nPass a semver, or a full 40 character git commit hash, or a release channel name.\\n\\nUsage:\\n{}\",\n          colors::gray(passed_version),\n          UPGRADE_USAGE\n        );\n      };\n\n      if semver.pre.contains(&SmallStackString::from_static(\"alpha\")) {\n        (ReleaseChannel::Alpha, passed_version)\n      } else if semver.pre.contains(&SmallStackString::from_static(\"beta\")) {\n        (ReleaseChannel::Beta, passed_version)\n      } else if semver.pre.contains(&SmallStackString::from_static(\"rc\")) {\n        (ReleaseChannel::Rc, passed_version)\n      } else {\n        (ReleaseChannel::Stable, passed_version)\n      }\n    };\n\n    Ok(RequestedVersion::SpecificVersion(channel, passed_version))","sourceCodeStart":1252,"sourceCodeEnd":1288,"githubUrl":"https://github.com/denoland/deno/blob/9ad36f7a2cce60488e6ec52283efb32efddaf93a/cli/tools/upgrade.rs#L1252-L1288","documentation":"For non-canary upgrades, the passed version must parse as standard semver (`Version::parse_standard`) after stripping an optional leading `v`. This bail is the catch-all for malformed versions, showing the value and the usage text. Note this only checks format; whether the version exists is validated later when fetching.","triggerScenarios":"`deno upgrade 1.2` (incomplete semver), `deno upgrade latest`, `deno upgrade 1.2.x`, or any string that fails semver parsing at cli/tools/upgrade.rs:1270 when not in canary mode.","commonSituations":"Typing `latest` or `stable` where a version is expected; copying tags like `v1.44.0-rc.1` incorrectly truncated; shell history edits leaving partial versions.","solutions":["Pass a full semver, optionally with the `v` prefix: `deno upgrade v1.44.0`.","For channels, use the channel flags/names rather than a version string.","To just update, run `deno upgrade` with no argument (uses Latest for the channel).","Verify the version exists on https://github.com/denoland/deno/releases before pinning it."],"exampleFix":"# before\ndeno upgrade 1.44  # not full semver -> error\n\n# after\ndeno upgrade v1.44.0","handlingStrategy":"validation","validationCode":"# bash: loose semver pre-check (X.Y.Z with optional prerelease/build)\n[[ \"$VER\" =~ ^v?[0-9]+\\.[0-9]+\\.[0-9]+([-.+][0-9A-Za-z.-]+)?$ ]] || { echo \"invalid semver\"; exit 1; }\ndeno upgrade \"$VER\"","typeGuard":"is_semver() { [[ \"$1\" =~ ^v?[0-9]+\\.[0-9]+\\.[0-9]+([-.+][0-9A-Za-z.-]+)?$ ]]; }","tryCatchPattern":"deno upgrade \"$VER\" 2>err.log || { grep -q 'Invalid version passed' err.log && echo \"use X.Y.Z, a channel name, or no argument\"; }","preventionTips":["Pass full X.Y.Z versions; never 'latest' as a version argument.","Omit the argument entirely to update within the current channel.","Verify the tag exists on the releases page before pinning."],"tags":["upgrade","semver","version","validation"],"backgroundTag":"invalid-version-string","analyzedSha":"9ad36f7a2cce60488e6ec52283efb32efddaf93a","analyzedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-08-31T04:17:50.494Z"}