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

  1. Remove the explicit --type flag (or the explicit type in your script) so mise defaults to vfox for packslip sources.
  2. Set the type explicitly to vfox if you want to state it: --type vfox.
  3. 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

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


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