{"record":{"id":"143ed0514ded5610","repo":"jdx/mise","slug":"reason","errorCode":null,"errorMessage":"{reason}","messagePattern":"\\{reason\\}","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/system/driver.rs","lineNumber":114,"sourceCode":"            }\n            debug!(\"{name}: skipping, excluded by system_packages.managers\");\n            continue;\n        }\n        if let Some(reason) = mp.manager.unavailable_reason_async().await {\n            if unavailable_manager_is_error(d) {\n                // explicitly requested (via --manager or manager:package\n                // specs) — failing silently would be a lie\n                bail!(\"{name} is not available: {}\", reason);\n            }\n            debug!(\"{name}: skipping, {reason}\");\n            continue;\n        }\n        if !d.dry_run {\n            mp.manager.prepare_mutation(&mp.requests).await?;\n        }\n        let statuses = mp.manager.installed(&mp.requests).await?;\n        if let Some(reason) = unavailable_package_reason(d, &statuses) {\n            bail!(\"{reason}\");\n        }\n        let remove_targets = if action == Action::Install {\n            statuses\n                .iter()\n                .filter(|status| {\n                    status.request.desired == PackageDesiredState::Absent\n                        && !matches!(status.state, PackageState::Missing)\n                        && !status.state.is_unavailable()\n                })\n                .collect::<Vec<_>>()\n        } else {\n            vec![]\n        };\n        let mut targets: Vec<_> = statuses\n            .iter()\n            .filter(|status| status.request.desired == PackageDesiredState::Present)\n            .filter(|s| match action {\n                Action::Install => !s.state.is_installed() && !s.state.is_unavailable(),","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/cli/system/driver.rs#L96-L132","documentation":"After the manager reports itself available, the driver runs `installed()` to collect per-request package statuses and calls `unavailable_package_reason`. If any package-level status indicates the manager cannot satisfy the request (e.g. a package is unsupported or the manager reports a package-specific unavailability), the run bails with that reason. It is a per-package failure raised after manager-level availability has passed.","triggerScenarios":"Running `mise system packages install/remove` where one of the requested packages yields an unavailable status from `manager.installed()` — e.g. package not supported by the manager, missing package metadata, or a plugin reporting the package cannot be handled.","commonSituations":"Typo'd or platform-inappropriate package names (a macOS-only cask on Linux); a plugin that can list the manager but not resolve specific packages; stale tracked config referencing packages the current manager version no longer supports.","solutions":["Fix or remove the offending package entry reported in the reason.","Verify the package name exists for that manager (`mise system packages` or the manager's own CLI).","Run with --dry-run first to see statuses before mutating.","Update or reinstall the manager plugin so package resolution works."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Preview per-package statuses before mutating\nmise system packages --dry-run","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate package names against the target manager before adding them to config.","Keep tracked system_packages config platform-appropriate.","Re-run --dry-run after manager/plugin upgrades."],"tags":["cli","system-packages","package-status","unavailable"],"backgroundTag":"invalid-config-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}