jdx/mise · error
the packslip of {} declares no {shell} completion
Error message
the packslip of {} declares no {shell} completion What it means
The tool's packslip statement contains no completion resource for the requested shell at all. mise enumerates the statement's declared completion sources for the shell; when the list is empty and the statement does not even declare a completion for that shell, it reports that the packslip declares no such completion rather than pretending one exists.
Source
Thrown at src/packslip.rs:1175
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",
tv.style()
)
})?;
let cache = completion_cache_path(&install_path, bin, shell)?;
// Nothing below happens until a source that runs the tool comes up. AView on GitHub (pinned to afd2eddd3a)
Solutions
- Request a shell the packslip supports (check the statement's completion entries, typically bash/zsh/fish/pwsh).
- Upgrade the tool to a newer release whose packslip declares your shell's completion.
- If you publish the packslip, add a completion resource for the missing shell.
- Generate the completion with the tool's own CLI and source it manually in your shell config.
Example fix
// before mise completion pwsh --tool jq # packslip declares no pwsh completion // after mise completion bash --tool jq
Defensive patterns
Strategy: validation
Validate before calling
let supported = declared_completion_shells(&statement); // e.g. ["bash","zsh"]
if !supported.contains(&shell.to_string()) { eprintln!("{tool} packslip declares no {shell} completion"); } Type guard
fn shell_declared(statement: &Statement, shell: &str) -> bool { declares_completion(statement, shell) } Try / catch
if !declares_completion(&statement, shell) {
eprintln!("no native {shell} completion; sourcing tool-generated script instead");
return tool_native_completions(tool, shell);
} Prevention
- Check which shells a packslip declares before wiring lazy completions for that tool.
- Pin newer tool releases that declare your shell's completion.
- Publishers: declare completion resources for all supported shells in the packslip.
When it happens
Trigger: Running `mise completion <shell> --tool <tool>` (or a shell requesting lazy completion registration) where the packslip statement for the installed version has no completion entry for that shell — e.g. asking for fish completions when the packslip only declares bash and zsh.
Common situations: Requesting completions for a shell the publisher does not support; a packslip authored without completion declarations; older release of a tool predating completion declarations.
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
- mise cannot derive completions from a {format} spec
- invalid completion cache identity
- {} was not installed from a packslip, so mise does not know
- the packslip of {} declares a {shell} completion, but none o
- cli-spec entry names {bin:?} in format {format:?}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/44fd9e71887c3e23.
Report an issue: GitHub.