jdx/mise · error
Unknown setting: {}
Error message
Unknown setting: {} What it means
`mise settings get KEY` rejects keys that are neither present in the settings table nor known to mise. is_known_setting() checks the key against SETTINGS_META (generated from settings.toml); an unknown key means the name is not a valid mise setting — usually a typo, or a setting from a different mise version.
Source
Thrown at src/cli/settings/get.rs:44
.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 6f52dcdf99)
Solutions
- List valid keys and copy the exact name: `mise settings ls`
- Check the current settings reference (docs/settings.toml in the repo) for your mise version
- Update scripts that reference renamed settings after upgrading mise
Example fix
# before mise settings get all_compat # Unknown setting: all_compat # after mise settings ls # find the real name mise settings set legacy_version_file true
Defensive patterns
Strategy: type-guard
Validate before calling
# validate the key against mise's own list before querying
mise settings ls 2>/dev/null | awk '{print $1}' | grep -qx "$key" \
|| { echo "unknown setting: $key" >&2; mise settings ls >&2; exit 2; }
mise settings get "$key" Type guard
is_known_setting() { mise settings ls 2>/dev/null | awk '{print $1}' | grep -qx "$1"; } Try / catch
On 'Unknown setting', diff your key against `mise settings ls` output programmatically and suggest the closest match instead of retrying blindly.
Prevention
- Copy setting names from `mise settings ls`, never from memory or foreign-version docs
- Pin mise versions in CI so settings names can't drift under your scripts
- Lint config keys in PR checks using the same list
When it happens
Trigger: Running `mise settings get id.not_a_real_setting`, or referencing a setting that was renamed/removed in the current mise version.
Common situations: Typos and wrong key casing; copying config snippets from docs written for another mise version; settings renamed across major versions leaving stale scripts behind.
Related errors
- Unknown setting: {}
- Setting [{}] is not set
- Environment variable {key} not found
- Environment variable {} not found
- {key} cannot be set in a config file: mise reads it before c
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/e228a6d27ff801cf.
Report an issue: GitHub.