{"record":{"id":"411e27c1bcbd1eac","repo":"jdx/mise","slug":"was-not-installed-from-a-packslip-so-mise-does","errorCode":null,"errorMessage":"{} was not installed from a packslip, so mise does not know its completions","messagePattern":"(.+?) was not installed from a packslip, so mise does not know its completions","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/packslip.rs","lineNumber":1152,"sourceCode":"        bail!(\"invalid completion cache identity\");\n    }\n    Ok(install_path\n        .join(RESOURCES_DIR)\n        .join(\"completions-v2\")\n        .join(bin)\n        .join(format!(\"{shell}.completion\")))\n}\n\npub(crate) async fn completion_script(\n    config: &Arc<Config>,\n    tool: &str,\n    shell: &str,\n) -> Result<String> {\n    let ts = config.get_toolset().await?;\n    let (backend, tv) = find_tool(config, ts, tool).await?;\n    let install_path = tv.install_path();\n    let Some(statement) = statement(&install_path)? else {\n        bail!(\n            \"{} was not installed from a packslip, so mise does not know its completions\",\n            tv.style()\n        );\n    };\n    let artifact = selected_artifact(\n        &statement,\n        tv.request.options().get_string(\"variant\").as_deref(),\n    );\n    let sources = completion_sources(\n        &statement,\n        &install_path,\n        shell,\n        artifact.as_ref(),\n        Some(tool),\n    );\n    if sources.is_empty() {\n        if declares_completion(&statement, shell) {\n            bail!(","sourceCodeStart":1134,"sourceCodeEnd":1170,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/packslip.rs#L1134-L1170","documentation":"mise can only supply completions for a tool it installed from a signed packslip, because the completion sources are read from the packslip statement stored inside the install directory. If no statement file exists at the tool version's install path, mise has no knowledge of the tool's completions and bails with this message naming the styled tool@version.","triggerScenarios":"Running `mise completion <shell> --tool <tool>` for a tool installed via a non-packslip backend (asdf/vfox plugin, github release without packslip, cargo, npm, core plugin) so statement(&install_path) returns None.","commonSituations":"Tab-completing a tool installed by an older mise before packslip support, or installed from a plugin backend; a corrupted install where the packslip statement file was deleted.","solutions":["Reinstall the tool so it comes from a packslip-backed source: `mise install <tool>` after ensuring the registry entry resolves to a packslip publisher.","Check that the statement file still exists under the tool's install directory; if missing, reinstall that version.","Generate the completion manually with the tool's own command (e.g. `<tool> completions <shell>`) and source it in your shell config instead."],"exampleFix":"// before: plugin-installed tool, no packslip\nmise use github:owner/tool  # non-packslip backend\n// after\nmise use <tool>  # registry entry backed by a packslip publisher\nmise install <tool>","handlingStrategy":"fallback","validationCode":"let has_statement = install_path.join(\"packslip-statement\").exists(); // or via mise packslip show\nif !has_statement { eprintln!(\"{tool} is not packslip-installed; completions unavailable via mise\"); }","typeGuard":"fn is_packslip_installed(install: &Path) -> bool { statement(install).map(|s| s.is_some()).unwrap_or(false) }","tryCatchPattern":"match completion_script(&config, tool, shell) {\n    Ok(s) => Some(s),\n    Err(e) if e.to_string().contains(\"not installed from a packslip\") => tool_native_completions(tool, shell),\n    Err(e) => return Err(e),\n}","preventionTips":["Install tools from packslip-backed registry entries if you want mise-managed completions.","Fall back to the tool's own `completions` subcommand for non-packslip backends.","Reinstall tools that predate packslip support in mise."],"tags":["completions","packslip","install-source"],"backgroundTag":"resource-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}