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
- 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.
- Strip any '=' or NUL characters from the name field in the config.
- 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
- Put full KEY=value pairs in env, not inheritEnv.
- Strip '=' and NUL from any name before writing config.
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
- environment: %w
- name is empty
- duplicate inherited variable %q
- variable %q contains NUL
- duplicate variable %q
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/f17a3873e1f3eadd.
Report an issue: GitHub.