wavetermdev/waveterm · error
invalid config key: %s
Error message
invalid config key: %s
What it means
SetBaseConfigValue rejects config keys that are not present in the known config key type registry: getConfigKeyType returns nil and the function returns 'invalid config key: %s'. Wave only accepts keys declared in its meta-constant schema.
Source
Thrown at pkg/wconfig/settingsconfig.go:856
}
if reflect.String == ctype.Kind() {
return num.String(), nil
}
return nil, fmt.Errorf("cannot convert number to %s", ctype)
}
func SetBaseConfigValue(toMerge waveobj.MetaMapType) error {
m, cerrs := ReadWaveHomeConfigFile(SettingsFile)
if len(cerrs) > 0 {
return fmt.Errorf("error reading config file: %v", cerrs[0])
}
if m == nil {
m = make(waveobj.MetaMapType)
}
for configKey, val := range toMerge {
ctype := getConfigKeyType(configKey)
if ctype == nil {
return fmt.Errorf("invalid config key: %s", configKey)
}
if val == nil {
delete(m, configKey)
} else {
rtype := reflect.TypeOf(val)
if rtype == reflect.TypeOf(dummyNumber) {
convertedVal, err := convertJsonNumber(val.(json.Number), ctype)
if err != nil {
return fmt.Errorf("cannot convert %s: %v", configKey, err)
}
val = convertedVal
rtype = reflect.TypeOf(val)
}
if rtype != ctype {
if ctype == reflect.PointerTo(rtype) {
m[configKey] = &val
} else {
return fmt.Errorf("invalid value type for %s: %T", configKey, val)View on GitHub (pinned to a4447c1563)
Solutions
- Check the exact key name against the generated settings meta constants (wconfig) or docs
- Verify the key's domain prefix is correct (app:, term:, editor:, etc.)
- If the key exists in a newer Wave version, upgrade the dependency/app
Example fix
// before
wconfig.SetBaseConfigValue(waveobj.MetaMapType{"term:fontsz": 14})
// after
wconfig.SetBaseConfigValue(waveobj.MetaMapType{"term:fontsize": 14}) Defensive patterns
Strategy: validation
Validate before calling
// check against generated valid keys before setting
validKeys := wconfig.GetAllConfigKeys() // or generated map
if _, ok := validKeys[key]; !ok {
return fmt.Errorf("unknown config key %q", key)
} Try / catch
if err := wconfig.SetBaseConfigValue(m); err != nil {
if strings.Contains(err.Error(), "invalid config key") {
return fmt.Errorf("check key spelling/prefix against docs: %w", err)
}
return err
} Prevention
- Copy key names from the generated meta constants, never by hand
- Double-check the domain prefix (app:, term:, editor:)
- Keep the Wave version in sync with documentation you follow
When it happens
Trigger: Calling SetBaseConfigValue with a MetaMapType containing a key not in the settings schema — misspelled keys, wrong prefix ('app:' vs 'term:'), or keys introduced in newer/older Wave versions.
Common situations: Typos like 'term:fontsize' vs the real key name; copying config from documentation for a different version; invented keys that were never registered.
Related errors
- invalid value type for %s: %T
- error setting telemetry value: %w
- error reading config file: %v
- cannot convert %s: %v
- socket path must be absolute: %s
AI-assisted analysis of wavetermdev/waveterm@a4447c1563 (2026-09-01).
Data as JSON: /api/errors/e012312d66b7663b.
Report an issue: GitHub.