{"record":{"id":"7cbe56faf2aa4962","repo":"jdx/mise","slug":"provider-does-not-support-adding-packages","errorCode":null,"errorMessage":"provider '{}' does not support adding packages","messagePattern":"provider '(.+?)' does not support adding packages","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/deps/mod.rs","lineNumber":282,"sourceCode":"        self.base().config.depends.clone()\n    }\n\n    /// Timeout duration for this provider's run command\n    fn timeout(&self) -> Option<std::time::Duration> {\n        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","sourceCodeStart":264,"sourceCodeEnd":300,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/deps/mod.rs#L264-L300","documentation":"`DepsProvider` trait's default `add_command` implementation is a guard: providers that don't implement package installation hit this `bail!`. It means you invoked `mise deps add` against a provider that only supports listing/resolution, not mutation of dependencies.","triggerScenarios":"Running a deps-add operation whose selected provider has not overridden `add_command`, so the default trait method bails with the provider id.","commonSituations":"Using `mise deps add` with a custom/legacy provider or one backed by a read-only source; assuming every provider supports adding packages like npm/cargo do.","solutions":["Switch to a provider that supports adding packages (one that overrides `add_command`)","Add/edit the dependency directly with the underlying package manager (e.g. `cargo add`, `npm install`) and let mise re-read the manifest","Implement `add_command` if this is your own provider"],"exampleFix":"// before\nprovider = \"custom-readonly\"\nmise deps add serde\n// after\nprovider = \"cargo\"\nmise deps add serde","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"match provider.add_command(pkgs, dev) {\n    Ok(cmd) => run(cmd),\n    Err(_) => fallback_to_native_pm(provider.id(), pkgs), // e.g. `cargo add`\n}","preventionTips":["Check provider capabilities before scripting `mise deps add`","Prefer well-known providers (npm, cargo, pip) for add/remove workflows","Wrap provider mutations with a fallback to the native package manager"],"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"}