jdx/mise · error

manager ' ' is excluded by the system_packages.managers…

Error message

manager '{only}' is excluded by the system_packages.managers setting (currently: {})

What it means

A single manager was requested for a system-packages operation, but the `system_packages.managers` setting exists and does not include that manager. mise distinguishes this from 'no packages configured' because the manager was filtered out by settings, and reports it as an error with the currently enabled manager list.

Solutions

  1. Add the manager to `system_packages.managers` in your mise settings.
  2. Remove the setting entirely to allow all supported managers.
  3. Pass a manager that is in the currently enabled list shown in the error.

Example fix

// before (settings.toml)
[system_packages]
managers = ["apt"]
// after
[system_packages]
managers = ["apt", "brew"]
Defensive patterns

Strategy: validation

Validate before calling

const managers = /* read system_packages.managers from mise settings */ ['apt'];
if (!managers.includes(requestedManager)) { throw new Error(`enable '${requestedManager}' in system_packages.managers first`); }

Try / catch

try { await run(`mise system install --manager ${m} ${pkgs}`) } catch (e) { if (String(e).includes('excluded by the system_packages.managers setting')) { /* prompt to update settings */ } }

Prevention

When it happens

Trigger: Running a system-packages command with a single manager (`--manager <only>`) where `Settings::get().system_packages.managers` is Some(list) and the list does not contain that manager.

Common situations: User set `system_packages.managers = ["apt"]` in settings but invokes operations for brew/dnf; settings inherited from a config file exclude the manager the user names on the CLI.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/57b9688c144ab11e. Report an issue: GitHub.

Appendix: source

Thrown at src/cli/system/driver.rs:70

    statuses
        .iter()
        .find_map(|status| status.state.unavailable_reason())
}

/// Run `action` for every manager in `mgrs`, honoring the `--manager` filter,
/// disabled/unavailable managers, unsatisfiable version pins, and the
/// confirmation prompt.
pub(crate) async fn run(mgrs: Vec<ManagerPackages>, action: Action, d: &DriverOpts) -> Result<()> {
    if let Some(only) = &d.manager
        && !mgrs.iter().any(|mp| mp.manager.name() == only)
    {
        // distinguish "not configured" from "filtered out by settings" —
        // the aggregation drops managers excluded by
        // system_packages.managers before we ever see them
        if let Some(enabled) = &Settings::get().system_packages.managers
            && !enabled.contains(only)
        {
            bail!(
                "manager '{only}' is excluded by the system_packages.managers setting \
                 (currently: {})",
                enabled.join(", ")
            );
        }
        bail!("no packages requested for manager '{only}'");
    }
    if mgrs.is_empty() {
        info!("no bootstrap packages configured in [bootstrap.packages]");
        return Ok(());
    }
    let opts = InstallOpts {
        dry_run: d.dry_run,
        update: d.update,
    };
    for mp in mgrs {
        if let Some(only) = &d.manager
            && mp.manager.name() != only

View on GitHub (pinned to 533346cc37)