siyuan-note/siyuan · warning

invalid name %q

Error message

invalid name %q

What it means

Validation error from validateEnvironmentName: the environment variable name contains '=' or a NUL byte (\x00). Both characters are illegal in env var names on every supported platform — '=' would break the KEY=VALUE serialization in buildStdioEnvironment, and NUL cannot appear in a C-string environ entry. The offending name is quoted via %q.

Source

Thrown at kernel/mcp/client/mcp.go:539

		entry := entries[key]
		ret = append(ret, entry.name+"="+entry.value)
	}
	return ret, nil
}

func environmentKey(name, goos string) string {
	if goos == "windows" {
		return strings.ToUpper(name)
	}
	return name
}

func validateEnvironmentName(name string) error {
	if name == "" {
		return errors.New("name is empty")
	}
	if strings.ContainsAny(name, "=\x00") {
		return fmt.Errorf("invalid name %q", name)
	}
	return nil
}

func validateMCPServerEnvironment(server conf.MCPServer, goos string) error {
	inherited := map[string]bool{}
	for _, name := range server.InheritEnv {
		if err := validateEnvironmentName(name); err != nil {
			return err
		}
		key := environmentKey(name, goos)
		if inherited[key] {
			return fmt.Errorf("duplicate inherited variable %q", name)
		}
		inherited[key] = true
	}
	explicit := map[string]bool{}
	for name, value := range server.Env {

View on GitHub (pinned to 251596fc0d)

Solutions

  1. Split the offending entry: if you wrote "KEY=value" inside inheritEnv, move it to the env object as {"KEY":"value"} and keep only "KEY" in inheritEnv.
  2. Strip any '=' or NUL characters from the name field in the config.
  3. Re-run ValidateMCPServerEnvironment to confirm the fix.

Example fix

// before
"inheritEnv": ["API_KEY=secret"]
// after
"inheritEnv": [],
"env": {"API_KEY": "secret"}
Defensive patterns

Strategy: validation

Validate before calling

import "strings"
func cleanEnvName(name string) (string, error) {
    if name == "" { return "", errors.New("empty") }
    if strings.ContainsAny(name, "=\x00") { return "", fmt.Errorf("invalid %q", name) }
    return name, nil
}

Prevention

When it happens

Trigger: A name in server.InheritEnv or a key in server.Env contains '=' or '\x00'. validateMCPServerEnvironment calls validateEnvironmentName, which runs strings.ContainsAny(name, "=\x00") and returns this error.

Common situations: User mistakenly wrote an entire assignment like "API_KEY=secret" inside the inheritEnv array instead of a bare name; copy-paste of a 'KEY=value' line from a .env file into the name field; corrupted config containing a control character.

Related errors


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/f17a3873e1f3eadd. Report an issue: GitHub.