jdx/mise · error
resolved pkgx package {name}@{version} does not satisfy {req
Error message
resolved pkgx package {name}@{version} does not satisfy {requirement:?} What it means
Thrown by `ensure_resolved_requirement` in the pkgx backend: after pkgx resolves a package version for a requirement, mise re-checks the resolved version against the requested requirement with `version_satisfies_requirement` and bails if it does not satisfy it. This is a post-resolution invariant that catches pkgx returning a version outside the user's requested range.
Source
Thrown at src/backend/pkgx.rs:434
.rev()
.find(|version| semver_satisfies(version, &range))
.map(|version| (*version).to_string())
.ok_or_else(|| eyre::eyre!("no pkgx version for {name} satisfies {requirement}"))
}
async fn latest_version(name: &str, target: &PlatformTarget) -> Result<String> {
list_pkg_versions_for_target(name, target)
.await?
.last()
.map(|v| v.version.clone())
.ok_or_else(|| eyre::eyre!("no pkgx versions found for {name}"))
}
fn ensure_resolved_requirement(name: &str, version: &str, requirement: &str) -> Result<()> {
if version_satisfies_requirement(version, requirement)? {
Ok(())
} else {
bail!("resolved pkgx package {name}@{version} does not satisfy {requirement:?}")
}
}
fn merge_requirements(name: &str, left: &str, right: &str) -> Result<String> {
let left = left.trim();
let right = right.trim();
if is_any_requirement(left) {
return Ok(right.to_string());
}
if is_any_requirement(right) || left == right {
return Ok(left.to_string());
}
let merged = format!("{left} {right}");
parse_requirement_range(name, &merged)?;
Ok(merged)
}
fn version_satisfies_requirement(version: &str, requirement: &str) -> Result<bool> {View on GitHub (pinned to afd2eddd3a)
Solutions
- Pin an exact existing version: run `mise ls-remote pkgx:<name>` and use a full version from that list.
- Broaden or correct the requirement string (e.g. `pkgx:node@^20` instead of a prefix pkgx can't satisfy).
- Re-run with a refreshed package list if upstream changed; clear pkgx/mise caches and retry.
- If merging constraints, verify each requirement individually to find which one excludes the resolved version.
Example fix
// before (mise.toml) [tools] "pkgx:node" = "21.x-nonexistent" // after — exact version known to satisfy the requirement [tools] "pkgx:node" = "21.7.3"
Defensive patterns
Strategy: validation
Validate before calling
# confirm a version satisfying the requirement exists before pinning mise ls-remote pkgx:node | grep -E '^21\.' || echo 'requirement unsatisfiable'
Try / catch
try { await $`mise use pkgx:node@^21` } catch (e) { if (String(e).includes('does not satisfy')) { /* pin an exact version from ls-remote */ } else throw e; } Prevention
- Use `mise ls-remote pkgx:<name>` to verify versions before pinning
- Prefer full versions or standard ranges over exotic requirement strings
- Re-check requirements after upstream version removals
When it happens
Trigger: Calling `mise use pkgx:<name>@<requirement>` (via `resolve_closure` -> `ensure_resolved_requirement`) where pkgx's resolver returns `version` that fails the requirement check — e.g. requesting a prefix like `8.1` or a range while pkgx resolves a different/latest version, or requirement syntax mise interprets differently than pkgx does.
Common situations: Requesting a version prefix that doesn't match any published package version; requirement strings containing characters pkgx treats differently (e.g. `latest`, partial tags); the package was updated upstream so a previously matching version was removed; merging multiple requirements produced a range no version satisfies.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- pkgx bottle for {} did not contain {}
- cached rustc output directory has unsupported entries
- the packslip gives no download URL for {}
- the packslip names an artifact {:?}, which is not a plain fi
- {reason}.\n\n{instructions}\n\nIf pipx is already installed,
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/218b6e8ecdf0206e.
Report an issue: GitHub.