dagger/dagger · error
unknown config key %q; valid fields at this level: %s
Error message
unknown config key %q; valid fields at this level: %s
What it means
Reflection-based guard in validateKeyAgainstType: the first path segment does not match any TOML field on the target type. Unlike setConfigValue's static switch, this validates set/unset keys against the struct's TOML tags and lists the valid field names to guide correction.
Source
Thrown at core/workspace/config.go:1336
pm.BackendPort = int(port)
default:
return fmt.Errorf("unknown config key %q", strings.Join(parts, "."))
}
cfg.Ports[host] = pm
return nil
default:
return fmt.Errorf("unknown config key %q", strings.Join(parts, "."))
}
}
func validateKeyAgainstType(parts []string, t reflect.Type, fullKey, op string) error {
if len(parts) == 0 {
return nil
}
field, ok := findTOMLField(t, parts[0])
if !ok {
return fmt.Errorf("unknown config key %q; valid fields at this level: %s",
fullKey, strings.Join(validTOMLFieldNames(t), ", "))
}
rest := parts[1:]
fieldType := field.Type
for fieldType.Kind() == reflect.Ptr {
fieldType = fieldType.Elem()
}
switch fieldType.Kind() {
case reflect.Map:
if len(rest) == 0 {
return fmt.Errorf("cannot %s %q directly; specify a sub-key", op, fullKey)
}
mapValueRest := rest[1:]
elemType := fieldType.Elem()
if elemType.Kind() == reflect.Struct {View on GitHub (pinned to 82ba2681db)
Solutions
- Pick one of the listed valid fields
- Fix spelling of the intended field name
- Quote segments that contain dots
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/workspace/config.go:1336 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/ad23474a4b8c501e.
Report an issue: GitHub.