jdx/mise · error
unsupported aqua package format: {format}
Error message
unsupported aqua package format: {format} What it means
effective_extraction_format maps the aqua package's declared format string to an ExtractionFormat. If the format extension is not a recognized archive type (tar/tar.gz/zip/etc.) and is not one of the accepted special values (empty, dmg, pkg), mise rejects the package rather than guessing how to extract it.
Source
Thrown at src/backend/aqua.rs:2998
Ok(())
}
fn record_cosign_provenance(&self, tv: &mut ToolVersion) {
self.record_provenance(tv, ProvenanceType::Cosign);
}
fn record_provenance(&self, tv: &mut ToolVersion, provenance: ProvenanceType) {
let platform_key = self.get_platform_key();
let pi = tv.lock_platforms.entry(platform_key).or_default();
if pi.provenance.as_ref().is_none_or(|p| *p < provenance) {
pi.provenance = Some(provenance);
}
}
fn effective_extraction_format(pkg: &AquaPackage, format: &str) -> Result<ExtractionFormat> {
let extraction_format = ExtractionFormat::from_ext(format);
if extraction_format.is_none() && !matches!(format, "" | "dmg" | "pkg") {
bail!("unsupported aqua package format: {format}");
}
let extraction_format = extraction_format.unwrap_or(ExtractionFormat::Raw);
if pkg.package_type() == AquaPackageType::GithubArchive
&& extraction_format == ExtractionFormat::Raw
{
// The aqua registry can omit format for GitHub-generated archive downloads.
// Historically Raw reached untar/open_tar, which treated it as gzip-tar.
Ok(ExtractionFormat::TarGz)
} else {
Ok(extraction_format)
}
}
fn install(
&self,
ctx: &InstallContext,
tv: &ToolVersion,
pkg: &AquaPackage,View on GitHub (pinned to afd2eddd3a)
Solutions
- Update mise so the embedded aqua registry / ExtractionFormat parsing supports the new format
- Install the tool via a different backend that handles the format (e.g. github backend or a package-manager backend)
- Pin a version of the tool whose assets use a supported format (tar.gz, zip, raw binary, dmg, pkg)
- If you author the aqua package entry, fix the `format` field to a recognized extension or remove it for raw binaries
Example fix
# before (aqua package YAML) format: deb # after format: tar.gz
Defensive patterns
Strategy: validation
Validate before calling
// pre-check the package's declared format before installing via aqua
const pkg = await fetchAquaRegistryEntry(pkgName);
const ok = ["", "tar.gz", "tgz", "tar.xz", "tar.bz2", "zip", "raw", "dmg", "pkg"];
if (!ok.includes(pkg.format ?? "")) {
console.warn(`format '${pkg.format}' not supported by mise aqua backend; pick another backend`);
} Try / catch
try {
await $`mise install aqua:owner/repo`;
} catch (e) {
if (String(e).includes("unsupported aqua package format")) {
await $`mise use github:owner/repo`; // fall back to release-asset backend
} else throw e;
} Prevention
- Check the aqua registry entry's format field before adding the tool to mise.toml
- Prefer tools publishing tar.gz/zip/raw assets when choosing between equivalent tools
- Keep mise updated for new extraction-format support
When it happens
Trigger: Installing an aqua package whose registry entry declares a `format:` value that is neither a known archive extension nor '' | 'dmg' | 'pkg', when install reaches format resolution (src/backend/aqua.rs:2998).
Common situations: Aqua registry entry uses an unusual or newly introduced format string; typos like 'targz' or 'binary'; package ships an installer format mise's aqua backend doesn't handle (e.g. msi, deb, rpm).
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- brew-cask:{}: unsupported archive type for {}
- unexpected character: {}
- expected closing parenthesis
- remote cache blob pack has invalid magic
- conflicting aqua var `{key}`: use only one spelling
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/859bcadefec16efa.
Report an issue: GitHub.