{"record":{"id":"dcbfe0ff5674b0bf","repo":"go-delve/delve","slug":"q-is-not-a-configuration-parameter","errorCode":null,"errorMessage":"%q is not a configuration parameter","messagePattern":"%q is not a configuration parameter","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/terminal/config.go","lineNumber":65,"sourceCode":"func configureSet(t *Term, args string) error {\n\tv := config.Split2PartsBySpace(args)\n\n\tcfgname := v[0]\n\tvar rest string\n\tif len(v) == 2 {\n\t\trest = v[1]\n\t}\n\n\tswitch cfgname {\n\tcase \"alias\":\n\t\treturn configureSetAlias(t, rest)\n\tcase \"debug-info-directories\":\n\t\treturn configureSetDebugInfoDirectories(t, rest)\n\t}\n\n\tfield := config.ConfigureFindFieldByName(t.conf, cfgname, \"yaml\")\n\tif !field.CanAddr() {\n\t\treturn fmt.Errorf(\"%q is not a configuration parameter\", cfgname)\n\t}\n\n\tif field.Kind() == reflect.Slice && field.Type().Elem().Name() == \"SubstitutePathRule\" {\n\t\treturn configureSetSubstitutePath(t, rest)\n\t}\n\n\treturn config.ConfigureSetSimple(rest, cfgname, field)\n}\n\nfunc configureSetSubstitutePath(t *Term, rest string) error {\n\tif strings.TrimSpace(rest) == \"-clear\" {\n\t\tt.conf.SubstitutePath = t.conf.SubstitutePath[:0]\n\t\treturn nil\n\t}\n\tif strings.TrimSpace(rest) == \"-guess\" {\n\t\trules, err := t.client.GuessSubstitutePath()\n\t\tif err != nil {\n\t\t\treturn err","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/go-delve/delve/blob/a23773e6c31361e43246bc43a424ee009679b174/pkg/terminal/config.go#L47-L83","documentation":"`config -set <name> <value>` looks up the setting by name among the fields of the configuration struct (with yaml-tag-based matching). If the field is found but not addressable — or effectively the name does not match any settable configuration parameter — this error is returned.","triggerScenarios":"Running `config -set max-retry-connection 5` or any name that doesn't correspond to a known, settable config field (e.g. misspelled `substitute-path`, `max-retry-connection`, `source-list-line-format`, `debug-info-directories`).","commonSituations":"Typo in the parameter name; using Go-style camelCase instead of the yaml/hyphenated names; trying to set read-only or non-configuration fields; old parameter names removed in newer Delve versions.","solutions":["Run `config -list` to see valid parameter names and copy exactly","Use hyphenated lowercase names (e.g. `substitute-path`, `max-retry-connection`)","Check the Delve version — parameter names changed across releases (see Documentation/cli/locspec or config docs)","Set debug info dirs via `config -set debug-info-directories ...` which has a dedicated handler"],"exampleFix":"// before\nconfig -set maxRetryConnection 5\n// after\nconfig -set max-retry-connection 5","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err := dlv.ConfigSet(name, value); err != nil {\n    if strings.Contains(err.Error(), \"is not a configuration parameter\") {\n        names, _ := dlv.ConfigList()\n        fmt.Fprintf(os.Stderr, \"unknown config %q; valid: %v\\n\", name, names)\n    }\n}","preventionTips":["Wrap config-set calls in error handling that falls back to `config -list`"],"tags":["terminal","config","reflection"],"backgroundTag":"unknown-config-parameter","analyzedSha":"a23773e6c31361e43246bc43a424ee009679b174","analyzedAt":"2026-08-31T15:12:45.221Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}