go-delve/delve · error

%q is not a configuration parameter

Error message

%q is not a configuration parameter

What it means

`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.

Source

Thrown at pkg/terminal/config.go:65

func configureSet(t *Term, args string) error {
	v := config.Split2PartsBySpace(args)

	cfgname := v[0]
	var rest string
	if len(v) == 2 {
		rest = v[1]
	}

	switch cfgname {
	case "alias":
		return configureSetAlias(t, rest)
	case "debug-info-directories":
		return configureSetDebugInfoDirectories(t, rest)
	}

	field := config.ConfigureFindFieldByName(t.conf, cfgname, "yaml")
	if !field.CanAddr() {
		return fmt.Errorf("%q is not a configuration parameter", cfgname)
	}

	if field.Kind() == reflect.Slice && field.Type().Elem().Name() == "SubstitutePathRule" {
		return configureSetSubstitutePath(t, rest)
	}

	return config.ConfigureSetSimple(rest, cfgname, field)
}

func configureSetSubstitutePath(t *Term, rest string) error {
	if strings.TrimSpace(rest) == "-clear" {
		t.conf.SubstitutePath = t.conf.SubstitutePath[:0]
		return nil
	}
	if strings.TrimSpace(rest) == "-guess" {
		rules, err := t.client.GuessSubstitutePath()
		if err != nil {
			return err

View on GitHub (pinned to a23773e6c3)

Solutions

  1. Run `config -list` to see valid parameter names and copy exactly
  2. Use hyphenated lowercase names (e.g. `substitute-path`, `max-retry-connection`)
  3. Check the Delve version — parameter names changed across releases (see Documentation/cli/locspec or config docs)
  4. Set debug info dirs via `config -set debug-info-directories ...` which has a dedicated handler

Example fix

// before
config -set maxRetryConnection 5
// after
config -set max-retry-connection 5
Defensive patterns

Strategy: try-catch

Try / catch

if err := dlv.ConfigSet(name, value); err != nil {
    if strings.Contains(err.Error(), "is not a configuration parameter") {
        names, _ := dlv.ConfigList()
        fmt.Fprintf(os.Stderr, "unknown config %q; valid: %v\n", name, names)
    }
}

Prevention

When it happens

Trigger: 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`).

Common situations: 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.

Related errors


AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31). Data as JSON: /api/errors/dcbfe0ff5674b0bf. Report an issue: GitHub.