{"record":{"id":"d35440e4a61deff1","repo":"jdx/mise","slug":"package-plugin-collides-with-a-built-in-packa","errorCode":null,"errorMessage":"package plugin '{}' collides with a built-in package manager","messagePattern":"package plugin '(.+?)' collides with a built-in package manager","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/vfox_plugin.rs","lineNumber":366,"sourceCode":"            }\n        }\n\n        let prefix = format!(\"plugin:{}\", style(&self.name).blue().for_stderr());\n        let pr = mpr.add_with_options(&prefix, dry_run);\n        if !dry_run {\n            // Force requests reinstallation, but staged replacements still\n            // need exclusive access to their destination and backup.\n            let skip_lock = force && !self.get_repo_url(config)?.starts_with(\"packslip:\");\n            let plugin_lock = lock_file::get(&self.plugin_path, skip_lock)?;\n            self.install(config, pr.as_ref()).await?;\n            let plugin_type =\n                PluginType::from_plugin_path(&self.plugin_path).unwrap_or(PluginType::Vfox);\n            if plugin_type == PluginType::Package\n                && crate::system::packages::is_builtin_manager_name(&self.name)\n            {\n                drop(plugin_lock);\n                file::remove_all(&self.plugin_path)?;\n                bail!(\n                    \"package plugin '{}' collides with a built-in package manager\",\n                    self.name\n                );\n            }\n            install_state::add_plugin(&self.name, plugin_type).await?;\n            backend::remove(&self.name);\n            warn_if_env_plugin_shadows_registry(&self.name, &self.plugin_path);\n        }\n        Ok(())\n    }\n\n    async fn update(&self, pr: &dyn SingleReport, gitref: Option<String>) -> Result<()> {\n        if let Some(installed) = packslip::installed(&self.plugin_path)? {\n            if self.plugin_path.is_symlink() {\n                warn!(\"plugin:{} is a symlink, not updating\", self.name);\n                return Ok(());\n            }\n            let _lock = lock_file::get(&self.plugin_path, false)?;","sourceCodeStart":348,"sourceCodeEnd":384,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/plugins/vfox_plugin.rs#L348-L384","documentation":"Vfox 'package' type plugins wrap a package manager, but mise already has built-in package-manager integrations. If a package plugin's name matches a built-in manager name (`system::packages::is_builtin_manager_name`), mise deletes the plugin directory and bails rather than shadowing built-in behavior.","triggerScenarios":"Installing a vfox package-type plugin whose name collides with a built-in package manager (e.g. pip, cargo, gem, npm style names) via `mise plugin add`/`mise install`, after taking the plugin lock.","commonSituations":"Plugin renamed/republished so its name matches a builtin; user following an outdated tutorial for a package plugin that has since become built-in; stale plugin cache holding an old plugin at a now-colliding name.","solutions":["Remove the built-in-backed usage: just use the built-in package manager support directly instead of the vfox package plugin.","If the plugin is obsolete, drop it — mise deleted the plugin directory already; verify with `mise plugins ls`.","If you truly need the plugin, rename it (fork with a distinct plugin name) so it doesn't collide with the builtin."],"exampleFix":"// before\nmise plugin add pip https://github.com/version-fox/vfox-pip\n// after\nmise use pipx:somepackage  # built-in pipx/pip support","handlingStrategy":"validation","validationCode":"const BUILTINS = ['pip','cargo','gem','npm','go','composer'];\nif (BUILTINS.includes(pluginName)) throw new Error(`${pluginName} collides with a built-in manager`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use mise's built-in package manager support instead of package-type vfox plugins.","Before adding a vfox package plugin, check `mise plugins ls` and current docs for built-in equivalents."],"tags":["plugin","naming-conflict","vfox"],"backgroundTag":"file-already-exists","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}