jdx/mise · error

the packslip of {} declares a {shell} completion, but none o

Error message

the packslip of {} declares a {shell} completion, but none of the files it names are in the install: the resource fetch failed or was skipped

What it means

The tool's packslip statement declares that it ships a completion for this shell, but completion_sources() found none of the named completion files actually present in the install directory. This means the resource fetch that should have copied those files into the install failed or was skipped, leaving the declared resources missing on disk.

Source

Thrown at src/packslip.rs:1170

        bail!(
            "{} was not installed from a packslip, so mise does not know its completions",
            tv.style()
        );
    };
    let artifact = selected_artifact(
        &statement,
        tv.request.options().get_string("variant").as_deref(),
    );
    let sources = completion_sources(
        &statement,
        &install_path,
        shell,
        artifact.as_ref(),
        Some(tool),
    );
    if sources.is_empty() {
        if declares_completion(&statement, shell) {
            bail!(
                "the packslip of {} declares a {shell} completion, but none of the files it names are in the install: the resource fetch failed or was skipped",
                tv.style()
            );
        }
        bail!(
            "the packslip of {} declares no {shell} completion",
            tv.style()
        );
    }
    // A completion is asked for the moment a shell completes the command,
    // which is when the user was going to run it anyway, so an `exec`
    // source runs on demand with no setting; the specification's Running
    // an exec entry says so. Because it runs the tool, its result is
    // cached beside the install so the command runs once per version and
    // shell rather than at every tab.
    let bin = completion_bin(&statement, Some(tool)).ok_or_else(|| {
        eyre!(
            "{} provides several executables; name the command to complete",

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Reinstall the tool so resources are fetched: `mise uninstall <tool> && mise install <tool>`.
  2. Check install logs with MISE_DEBUG=1 during install to see why the resource fetch failed or was skipped.
  3. Verify network access and that the release's resources are downloadable; then reinstall.
  4. If a variant option is set, confirm the variant's resources exist in the packslip.

Example fix

// before: partial install, resources missing
mise install gh
mise completion bash --tool gh  # fails
// after
mise uninstall gh && mise install gh
mise completion bash --tool gh
Defensive patterns

Strategy: retry

Validate before calling

let files = declared_completion_files(&statement, install_path);
let missing: Vec<_> = files.iter().filter(|f| !f.exists()).collect();
if !missing.is_empty() { eprintln!("resources missing: {missing:?}; reinstall"); }

Type guard

fn resources_present(install: &Path, shell: &str) -> bool {
    install.join("resources").join("completions").join(shell).exists()
}

Try / catch

loop {
    match completion_script(&config, tool, shell) {
        Ok(s) => break Ok(s),
        Err(e) if e.to_string().contains("resource fetch failed or was skipped") => { reinstall(tool)?; continue; }
        Err(e) => break Err(e),
    }
}

Prevention

When it happens

Trigger: Running `mise completion <shell> --tool <tool>` where declares_completion(&statement, shell) is true but the files the packslip names do not exist under the install path — e.g. the resource fetch was interrupted, skipped for a variant mismatch, or failed during install.

Common situations: Install completed with resource download failures; installing a variant whose resources were not fetched; read-only or partially-extracted installs; offline installs that skipped resources.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/2515fee62ff20ac1. Report an issue: GitHub.