jdx/mise · error
additional asset ' ' is not an archive
Error message
additional asset '{}' is not an archive What it means
Additional assets configured for a GitHub-backend tool are extracted into the install directory after download, so each must be a recognized archive format (tar, zip, etc.). If `ExtractionFormat::from_file_name` cannot identify the file as an archive, mise refuses to process it.
Solutions
- Point the additional-asset pattern at an archived asset (.tar.gz, .tgz, .zip, etc.)
- Ask the upstream project to publish the file with a recognized archive extension
- Download the raw file out-of-band (e.g. a task/link step) instead of using additional assets
Example fix
// before (mise.toml) [tools."github:owner/repo"] additional_assets = ["bintool"] // after additional_assets = ["bintool-linux-x64.tar.gz"]
Defensive patterns
Strategy: validation
Validate before calling
// bash: check each configured additional asset is a recognized archive for a in $ADDITIONAL_ASSETS; do case "$a" in *.tar.gz|*.tgz|*.tar.xz|*.tar.bz2|*.zip) ;; *) echo "not an archive: $a"; exit 1;; esac done
Prevention
- Only list archived assets (.tar.gz/.zip) in additional_assets patterns
- Check the upstream release page's asset extensions before configuring patterns
- Prefer patterns that match archived bundles over bare binaries
When it happens
Trigger: additional_assets/additional patterns pointing at a raw binary, plain text file, or extension-less file that ExtractionFormat::from_file_name does not recognize during additional-asset extraction.
Common situations: Configuring `extra Binaries` style patterns that match a bare executable published alongside the release; upstream renamed an asset losing its .tar.gz/.zip extension.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- brew-cask: : unsupported archive type for
- brew-cask: : unsupported archive type for
- command failed: #
- content-level SLSA verification only supports…
- extract_archive does not support compressed single-file…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/ecf038797c23e05b.
Report an issue: GitHub.
Appendix: source
Thrown at src/backend/github.rs:1859
);
}
} else if Settings::get().lockfile_enabled() {
artifact.size = Some(file_path.metadata()?.len());
}
Ok(())
}
fn install_additional_archive(
&self,
install_path: &Path,
file_path: &Path,
pr: Option<&dyn crate::ui::progress_report::SingleReport>,
) -> Result<()> {
let format = file::ExtractionFormat::from_file_name(
&file_path.file_name().unwrap_or_default().to_string_lossy(),
);
if !format.is_archive() {
eyre::bail!(
"additional asset '{}' is not an archive",
file_path.display()
);
}
let extract_opts = file::ExtractOptions {
pr,
..Default::default()
};
file::extract_archive(file_path, install_path, format, &extract_opts)
}
/// Discovers bin paths in the installation directory
fn discover_bin_paths(&self, tv: &ToolVersion) -> Result<Vec<std::path::PathBuf>> {
let raw_opts = tv.request.options();
let opts = self.options(&raw_opts);
if let Some(bin_path_template) = opts.bin_path() {
let bin_path = template_string(&bin_path_template, tv);
return Ok(vec![tv.install_path().join(&bin_path)]);View on GitHub (pinned to 533346cc37)