jdx/mise · error
Unknown setting
Error message
Unknown setting: {} What it means
`mise settings get <key>` validates the requested key against the known settings metadata (`is_known_setting`). If the dotted path cannot be resolved AND the name is not a recognized setting, mise reports the key as unknown. This catches typos and settings that were removed or renamed in the mise version in use.
Solutions
- List valid keys with `mise settings ls` and pick the correct name.
- Check `mise settings get --help` / docs for your mise version — the key may be renamed or version-gated.
- Upgrade mise if the setting exists only in newer releases.
Example fix
// before mise settings get node_compyle // Unknown setting: node_compyle // after mise settings ls # find correct key mise settings get node_compile
Defensive patterns
Strategy: validation
Validate before calling
mise settings ls | grep -qx "${key}" || { echo "unknown setting: ${key}" >&2; exit 2; } Try / catch
value=$(mise settings get "$key") || { echo "invalid key $key — run mise settings ls" >&2; exit 2; } Prevention
- Copy setting names from `mise settings ls`, not from memory
- Verify keys against docs for your installed mise version
- Upgrade mise when adopting settings from newer release notes
When it happens
Trigger: Running `mise settings get <name>` where <name> (or a path segment) is not in the settings registry — typo'd keys, deprecated/renamed settings, or keys from a newer mise version than the installed one.
Common situations: Copying a settings key from docs for a different mise version; typos like `node.compile` vs `node_compile`; referencing a plugin-specific setting that no longer exists.
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
- cannot be set in a config file: mise reads it before config…
- Setting [ ] is not set
- Unknown setting
- cannot encode # as JSON
- history is disabled (history.enabled = false)
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/e228a6d27ff801cf.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/settings/get.rs:49
.unwrap_or_default();
Settings::partial_as_dict(&partial)?
} else {
Settings::get().as_dict()?
};
let mut value = toml::Value::Table(settings);
let mut key = Some(self.setting.as_str());
while let Some(k) = key {
let k = k
.split_once('.')
.map(|(a, b)| (a, Some(b)))
.unwrap_or((k, None));
if let Some(v) = value.as_table().and_then(|t| t.get(k.0)) {
key = k.1;
value = v.clone()
} else if is_known_setting(&self.setting) {
bail!("Setting [{}] is not set", self.setting);
} else {
bail!("Unknown setting: {}", self.setting);
}
}
match value {
toml::Value::String(s) => miseprintln!("{s}"),
value => miseprintln!("{value}"),
}
Ok(())
}
}
fn is_known_setting(key: &str) -> bool {
if SETTINGS_META.contains_key(key) {
return true;
}
let prefix = format!("{key}.");
SETTINGS_META.keys().any(|k| k.starts_with(&prefix))
}View on GitHub (pinned to 533346cc37)