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
- Add `mr-boxington = "latest"` to the [tools] section of your mise.toml
- Verify the spelling: the tool key must be exactly `mr-boxington`
- 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
- Keep rust options and [tools] entries in sync when copying configs between repos
- Spell the tool key exactly as mr-boxington
- Run `mise doctor` to catch config inconsistencies early
- Comment in shared mise.toml files that mr_boxington requires the [tools] entry
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
- pipx is required to install {} but was not found. {instruct
- failed to parse registry option {k} as a TOML value: {e}
- URL must use s3:// scheme, got: {}
- S3 URL must include bucket name
- artifactbundle must be true, false, 1, or 0, got {value}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/abc38171cc0751d7.
Report an issue: GitHub.