{"record":{"id":"85fe8559b4c5a899","repo":"jdx/mise","slug":"provider-does-not-support-removing-packages","errorCode":null,"errorMessage":"provider '{}' does not support removing packages","messagePattern":"provider '(.+?)' does not support removing packages","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/deps/mod.rs","lineNumber":287,"sourceCode":"        self.base().config.timeout.as_deref().and_then(|t| {\n            match crate::duration::parse_duration(t) {\n                Ok(d) => Some(d),\n                Err(err) => {\n                    warn!(\"deps: {}: invalid timeout {t:?}: {err}\", self.id());\n                    None\n                }\n            }\n        })\n    }\n\n    /// Command to add one or more package dependencies\n    fn add_command(&self, _packages: &[&str], _dev: bool) -> Result<DepsCommand> {\n        bail!(\"provider '{}' does not support adding packages\", self.id())\n    }\n\n    /// Command to remove one or more package dependencies\n    fn remove_command(&self, _packages: &[&str]) -> Result<DepsCommand> {\n        bail!(\n            \"provider '{}' does not support removing packages\",\n            self.id()\n        )\n    }\n}\n\n/// Warn if any auto-enabled deps providers are stale\npub(crate) fn notify_if_stale(config: &Arc<Config>, effective_env: &BTreeMap<String, String>) {\n    // Skip in shims or quiet mode\n    if *env::__MISE_SHIM || Settings::get().quiet {\n        return;\n    }\n\n    // Check if this feature is enabled\n    if !Settings::get().status.show_deps_stale {\n        return;\n    }\n","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/deps/mod.rs#L269-L305","documentation":"Companion to add_command: the default `DepsProvider::remove_command` implementation bails for providers that cannot uninstall dependencies. Calling package removal on such a provider fails with the provider's id in the message.","triggerScenarios":"Running a deps-remove operation whose selected provider has not overridden `remove_command`.","commonSituations":"`mise deps remove <pkg>` against a provider backed by a read-only or lockfile-only source; assuming removal parity with add/list support.","solutions":["Use a provider that supports removal (overrides `remove_command`)","Remove the dependency with the underlying package manager directly and regenerate the lockfile","Implement `remove_command` if this is your own provider"],"exampleFix":"// before\nmise deps remove serde   # provider lacks remove support\ncargo remove serde       # via the package manager directly\n// after\nmise use cargo\nmise deps remove serde","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"match provider.remove_command(pkgs) {\n    Ok(cmd) => run(cmd),\n    Err(_) => fallback_to_native_pm(provider.id(), pkgs), // e.g. `cargo remove`\n}","preventionTips":["Assume removal is not universally supported; test per provider","Script removals against the native package manager for read-only providers","Document provider capability limits in team configs"],"tags":["deps","provider","unsupported"],"backgroundTag":"operation-not-supported","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"}