{"record":{"id":"3db9b88e03b2b629","repo":"jdx/mise","slug":"provider-is-inactive-reason-3db9b8","errorCode":null,"errorMessage":"provider '{}' is inactive: {reason}","messagePattern":"provider '(.+?)' is inactive: (.+?)","errorType":"validation","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/deps/engine.rs","lineNumber":580,"sourceCode":"    }\n\n    fn validate_provider_selection(\n        providers: &[Box<dyn DepsProvider>],\n        only: Option<&[String]>,\n        skip: &[String],\n    ) -> Result<()> {\n        let Some(only) = only else {\n            return Ok(());\n        };\n        for id in only {\n            if skip.contains(id) {\n                continue;\n            }\n            let Some(provider) = providers.iter().find(|provider| provider.id() == id) else {\n                continue;\n            };\n            if let DepsProviderApplicability::Inactive(reason) = provider.applicability() {\n                bail!(\"provider '{}' is inactive: {reason}\", provider.id());\n            }\n        }\n        Ok(())\n    }\n\n    /// Run all stale deps steps, respecting dependency ordering\n    pub async fn run(&self, opts: DepsOptions) -> Result<DepsResult> {\n        let mut results = vec![];\n\n        Self::validate_provider_selection(&self.providers, opts.only.as_deref(), &opts.skip)?;\n\n        let is_selected = |provider: &dyn DepsProvider| {\n            (!opts.auto_only || provider.is_auto())\n                && !opts.skip.iter().any(|id| id == provider.id())\n                && opts\n                    .only\n                    .as_ref()\n                    .is_none_or(|only| only.iter().any(|id| id == provider.id()))","sourceCodeStart":562,"sourceCodeEnd":598,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/deps/engine.rs#L562-L598","documentation":"`DepsEngine::validate_provider_selection` (src/deps/engine.rs:570) runs before deps steps: for every provider explicitly selected via `only` that is not skipped, it checks `applicability()`. `Inactive(reason)` (src/deps/mod.rs:41) is returned when a manifest is missing/empty (`missing package.json`, `empty Cargo.toml`) or the run command is unset/empty — mise then bails instead of silently skipping work the user explicitly requested.","triggerScenarios":"`mise deps run --only <id>` (or DepsOptions with `only`) where provider `<id>` exists but its applicability is Inactive — its manifest file absent or empty, or its run command missing — while that provider is neither skipped nor absent from the provider list.","commonSituations":"Running `mise deps run --only npm` in a directory without package.json; monorepo root vs package subdir confusion; CI using a fixed `--only` list across heterogeneous projects; a provider block missing its `run` key so it registers as inactive.","solutions":["Read `{reason}` in the message — it states exactly what made the provider inactive (e.g. `missing package.json`)","Run the command from the directory that contains that provider's manifest, or create/commit the manifest if the project genuinely uses it","Drop the inactive id from `--only`, or add it to `--skip`, or run without `--only` so inactive providers are filtered out naturally","If the reason is `missing run command`/`run command is empty`, define a real run command for the provider"],"exampleFix":"# before\n$ mise deps run --only npm      # in a dir with no package.json\n# after\n$ cd packages/web && mise deps run --only npm\n# or create the manifest:\n$ npm init -y && mise deps run --only npm","handlingStrategy":"validation","validationCode":"# only --only providers whose manifests exist\nfor p in npm pnpm; do\n  [ -f package.json ] || { echo \"skip $p: no package.json here\" >&2; continue; }\n  mise deps run --only \"$p\"\ndone","typeGuard":null,"tryCatchPattern":"Treat `provider '...' is inactive` as a signal to re-check the working directory/manifest, not a transient failure: catch, print {reason}, and either cd to the package dir or drop the id from --only.","preventionTips":["In monorepos, run deps commands from the package directory, not the root","Prefer running without `--only` so inactive providers are skipped instead of erroring","Ensure each provider block has a real run command so it never registers as inactive"],"tags":["mise","deps","provider","config","cli"],"backgroundTag":"feature-not-applicable","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}