jdx/mise · error
Setting [ ] is not set
Error message
Setting [{}] is not set What it means
`mise settings get <key>` walks dotted path segments through the settings TOML. When a segment resolves but the final key has no stored value in any settings file, mise checks whether the key is a known setting; if it is, it reports that the setting exists but is simply not set, rather than treating it as unknown. This distinguishes 'valid but unset' (user should set it or rely on the default) from an invalid key.
Solutions
- Set the value: `mise settings set <key> <value>`.
- If the default is acceptable, handle the unset case in your script instead of failing (check exit code or use a default).
- Check which config files exist with `mise settings ls` / inspect ~/.config/mise/settings.toml and project mise.toml [settings] blocks.
Example fix
// before mise settings get experimental // Setting [experimental] is not set // after mise settings set experimental true mise settings get experimental
Defensive patterns
Strategy: fallback
Validate before calling
mise settings ls | grep -qx "${key}" || echo "${key} may be unset or unknown" Try / catch
value=$(mise settings get "$key" 2>/dev/null) || value="$default_value"
Prevention
- Treat exit failure as 'unset' and apply your own default
- Set important settings explicitly in ~/.config/mise/settings.toml
- Check `mise settings ls` output when scripts depend on a setting
When it happens
Trigger: Running `mise settings get <known-setting>` where no settings file (global, local, or system) has written a value for that key — only the built-in default applies.
Common situations: Querying a setting you assumed was configured in ~/.config/mise/settings.toml but never saved; settings removed by `mise settings unset`; reading settings in CI where only defaults exist.
Related errors
- cannot be set in a config file: mise reads it before config…
- Unknown setting
- Unknown setting
- history is disabled (history.enabled = false)
- history is disabled (history.enabled = false)
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/39b0057074b1445c.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/settings/get.rs:47
let settings = if self.local {
let partial = Settings::parse_settings_file(&config::local_toml_config_path())
.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}.");View on GitHub (pinned to 533346cc37)