{"record":{"id":"e228a6d27ff801cf","repo":"jdx/mise","slug":"unknown-setting","errorCode":null,"errorMessage":"Unknown setting: {}","messagePattern":"Unknown setting: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/settings/get.rs","lineNumber":44,"sourceCode":"                .unwrap_or_default();\n            Settings::partial_as_dict(&partial)?\n        } else {\n            Settings::get().as_dict()?\n        };\n        let mut value = toml::Value::Table(settings);\n        let mut key = Some(self.setting.as_str());\n        while let Some(k) = key {\n            let k = k\n                .split_once('.')\n                .map(|(a, b)| (a, Some(b)))\n                .unwrap_or((k, None));\n            if let Some(v) = value.as_table().and_then(|t| t.get(k.0)) {\n                key = k.1;\n                value = v.clone()\n            } else if is_known_setting(&self.setting) {\n                bail!(\"Setting [{}] is not set\", self.setting);\n            } else {\n                bail!(\"Unknown setting: {}\", self.setting);\n            }\n        }\n        match value {\n            toml::Value::String(s) => miseprintln!(\"{s}\"),\n            value => miseprintln!(\"{value}\"),\n        }\n\n        Ok(())\n    }\n}\n\nfn is_known_setting(key: &str) -> bool {\n    if SETTINGS_META.contains_key(key) {\n        return true;\n    }\n    let prefix = format!(\"{key}.\");\n    SETTINGS_META.keys().any(|k| k.starts_with(&prefix))\n}","sourceCodeStart":26,"sourceCodeEnd":62,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/cli/settings/get.rs#L26-L62","documentation":"`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.","triggerScenarios":"Running `mise settings get id.not_a_real_setting`, or referencing a setting that was renamed/removed in the current mise version.","commonSituations":"Typos and wrong key casing; copying config snippets from docs written for another mise version; settings renamed across major versions leaving stale scripts behind.","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"],"exampleFix":"# before\nmise settings get all_compat   # Unknown setting: all_compat\n\n# after\nmise settings ls                 # find the real name\nmise settings set legacy_version_file true","handlingStrategy":"type-guard","validationCode":"# validate the key against mise's own list before querying\nmise settings ls 2>/dev/null | awk '{print $1}' | grep -qx \"$key\" \\\n  || { echo \"unknown setting: $key\" >&2; mise settings ls >&2; exit 2; }\nmise settings get \"$key\"","typeGuard":"is_known_setting() { mise settings ls 2>/dev/null | awk '{print $1}' | grep -qx \"$1\"; }","tryCatchPattern":"On 'Unknown setting', diff your key against `mise settings ls` output programmatically and suggest the closest match instead of retrying blindly.","preventionTips":["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"],"tags":["settings","unknown-key","config","cli","mise"],"backgroundTag":"unknown-config-key","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T20:17:18.057Z"}