{"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":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/deps/mod.rs","lineNumber":283,"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 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":265,"sourceCodeEnd":301,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/deps/mod.rs#L265-L301","documentation":"Default implementation of the `DepsProvider::remove_command` trait method (src/deps/mod.rs:282), the mirror of `add_command`. Providers without a remove workflow (only bun/npm/deno/pnpm/dart/aube/yarn override it) inherit this bail. `mise deps remove` (src/cli/deps/remove.rs:63) calls it, so removing through an unsupported provider fails explicitly.","triggerScenarios":"`mise deps remove <pkg> --provider <id>` where `<id>` did not override `remove_command` — same class of provider as for add: manifest-tracking providers with no driven remove workflow.","commonSituations":"Cleanup scripts running `mise deps remove` across all enabled providers; trying to remove a cargo/pip dependency through mise; custom providers implementing add but not remove.","solutions":["Remove the package with the package manager directly (e.g. `cargo remove`, `pip uninstall`) and let mise re-read the manifest","Use a provider that implements remove: bun, npm, pnpm, yarn, deno, dart, or aube","For custom providers, implement `remove_command` alongside `add_command`"],"exampleFix":"# before\n$ mise deps remove serde --provider cargo\n# after\n$ cargo remove serde","handlingStrategy":"validation","validationCode":"# capability check before mise deps remove\nsupports_remove() { case \"$1\" in bun|npm|pnpm|yarn|deno|dart|aube) return 0 ;; *) return 1 ;; esac; }\nif supports_remove \"$PROVIDER\"; then mise deps remove \"$PKG\" --provider \"$PROVIDER\"; else echo \"$PROVIDER cannot remove — run its package manager directly\" >&2; fi","typeGuard":"fn supports_remove(id: &str) -> bool {\n    matches!(id, \"bun\" | \"npm\" | \"pnpm\" | \"yarn\" | \"deno\" | \"dart\" | \"aube\")\n}","tryCatchPattern":"Match the remove_command error message; on `does not support removing packages`, shell out to the package manager's own remove command and continue, so cleanup scripts do not abort halfway.","preventionTips":["Keep add/remove symmetric: whichever provider you script add for, verify it supports remove too","Prefer native package-manager commands in cleanup scripts; use mise deps for tracking/running","Check provider overrides in src/deps/providers/ before scripting against a new provider"],"tags":["mise","deps","provider","unsupported-operation","packages"],"backgroundTag":"unsupported-operation","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}