jdx/mise · error

rust's mr_boxington option requires mr-boxington in [tools];

Error message

rust's mr_boxington option requires mr-boxington in [tools]; add `mr-boxington = "latest"`

What it means

Raised by add_rust_wrapper in src/config/command_wrapper.rs when configuration enables the `mr_boxington` option for the rust tool but the mr-boxington tool itself is not declared in the same config's [tools] section. The wrapper transparently redirects cargo builds through mbx, which must be installed as a managed tool, so mise refuses to configure it half-way.

Source

Thrown at src/config/command_wrapper.rs:85

        .find(|tool| tool.ba().full() == "core:rust")
        .is_some_and(|rust| {
            // Match explicit wrappers: safe mode cannot activate project commands.
            let safe = !crate::config::Settings::safe_mode()
                || rust
                    .source()
                    .path()
                    .is_none_or(crate::config::is_global_config);
            safe && BackendOptions::new(&rust.options()).bool("mr_boxington")
        });
    if !enabled {
        return Ok(());
    }
    let mbx = BackendArg::from("mr-boxington");
    if !tools
        .iter()
        .any(|tool| tool.ba().short == mbx.short || tool.ba().full() == mbx.full())
    {
        eyre::bail!(
            "rust's mr_boxington option requires mr-boxington in [tools]; add `mr-boxington = \"latest\"`"
        );
    }
    wrappers.insert(
        "cargo".into(),
        CommandWrapper::Detailed(CommandWrapperOptions {
            command: "mbx".into(),
            args: Vec::new(),
            env: [("MBX_CARGO_SHIM_MODE".into(), "1".into())].into(),
        }),
    );
    Ok(())
}

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Add `mr-boxington = "latest"` to the [tools] section of your mise.toml
  2. Verify the spelling: the tool key must be exactly `mr-boxington`
  3. Alternatively remove/disable the `mr_boxington` option if you don't want the cargo wrapper

Example fix

# before
[tools]
rust = "latest"
[settings.rust]
mr_boxington = true
# after
[tools]
rust = "latest"
mr-boxington = "latest"
[settings.rust]
mr_boxington = true
Defensive patterns

Strategy: validation

Validate before calling

// validate mise.toml consistency before enabling the option
// tools table must contain mr-boxington
let has_mbx = toml["tools"].as_table().map_or(false, |t| t.contains_key("mr-boxington"));
let wants_mbx = toml.dig("settings", "rust", "mr_boxington") == Some(true);
if wants_mbx && !has_mbx {
    eprintln!("add mr-boxington = \"latest\" to [tools]");
}

Prevention

When it happens

Trigger: A mise.toml with rust settings containing `mr_boxington = true` (or equivalent) while the [tools] table lacks `mr-boxington`.

Common situations: Copying a repo's rust tool settings without copying its [tools] entries; enabling mbx caching after mise already pinned a tools list; typos in the tool name such as `mrboxington` or `mbx`.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/abc38171cc0751d7. Report an issue: GitHub.