jdx/mise · error
packslip plugin sources require the vfox plugin type
Error message
packslip plugin sources require the vfox plugin type
What it means
When installing a plugin from a `packslip:` source, mise forces the plugin type to vfox. If the user explicitly specified a different plugin type (via the type flag/option) that conflicts with packslip, install_plugin bails instead of silently overriding the user's explicit choice.
Source
Thrown at src/cli/plugins/install.rs:157
config: &Arc<Config>,
name: &str,
git_url: Option<String>,
force: bool,
dry_run: bool,
) -> Result<()> {
let explicit_type = name.contains(':');
let (mut plugin_type, name) = PluginType::from_plugin_config(name);
let git_url = git_url.or_else(|| {
config
.get_repo_url(name)
.filter(|url| url.starts_with("packslip:"))
});
if git_url
.as_deref()
.is_some_and(|url| url.starts_with("packslip:"))
{
if explicit_type && plugin_type != PluginType::Vfox {
bail!("packslip plugin sources require the vfox plugin type");
}
plugin_type = PluginType::Vfox;
}
let name = name.to_string();
if plugin_type == PluginType::Package && crate::system::packages::is_builtin_manager_name(&name)
{
bail!("package plugin '{name}' collides with a built-in package manager");
}
let path = dirs::PLUGINS.join(name.to_kebab_case());
let plugin = plugin_type.plugin(name.clone());
if let Some(url) = git_url {
plugin.set_remote_url(url);
}
if !force && plugin.is_installed() {
warn!("Plugin {name} already installed");
warn!("Use --force to install anyway");
} else {
let mpr = MultiProgressReport::get();View on GitHub (pinned to afd2eddd3a)
Solutions
- Remove the explicit --type flag (or the explicit type in your script) so mise defaults to vfox for packslip sources.
- Set the type explicitly to vfox if you want to state it: --type vfox.
- Use a git:// or other source URL if you actually need a non-vfox plugin type.
Example fix
// before mise plugins install mytool --type asdf packslip:owner/mytool // after mise plugins install mytool packslip:owner/mytool
Defensive patterns
Strategy: validation
Validate before calling
# ensure no --type conflicts with packslip source
case "$ARGS" in *--type*) [ "${TYPE:-}" = vfox ] || { echo 'packslip requires --type vfox'; exit 1; };; esac Prevention
- Omit --type entirely for packslip: sources; mise defaults to vfox.
- Audit install scripts for leftover --type flags from asdf-based instructions.
- Remember: packslip plugin sources are always vfox-type.
When it happens
Trigger: `mise plugins install <name> packslip:owner/repo` combined with an explicit plugin type (explicit_type true) set to anything other than vfox, e.g. --type asdf or a package type.
Common situations: Copy-pasting an install command and leaving a --type flag from a previous asdf-based instruction; assuming packslip sources behave like git/asdf plugins; scripting installs with a generic --type parameter.
Related errors
- execute_external_command not implemented for {}
- packslip: list_identity_prefix must be a non-empty string
- packslip: list_identity_prefix requires an issuer
- the packslip names an executable {:?}, which is not a plain
- --connect-timeout must be greater than zero
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/37c08f2ad149e5bd.
Report an issue: GitHub.