{"record":{"id":"1899ebb079bbf207","repo":"chenhg5/cc-connect","slug":"config-s-run-as-user-q-contains-invalid-charact","errorCode":null,"errorMessage":"config: %s.run_as_user %q contains invalid characters (allowed: a-z, A-Z, 0-9, -, _, .; must start with a letter or underscore)","messagePattern":"config: (.+?)\\.run_as_user %q contains invalid characters \\(allowed: a-z, A-Z, 0-9, -, _, \\.; must start with a letter or underscore\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"config/config.go","lineNumber":75,"sourceCode":"\t\tif dangerousEnvVars[strings.ToUpper(name)] {\n\t\t\treturn fmt.Errorf(\"config: %s.run_as_env must not include dangerous variable %q\", prefix, name)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateRunAsUser(prefix, name string) error {\n\tif name == \"\" {\n\t\treturn nil\n\t}\n\tif runtime.GOOS == \"windows\" {\n\t\treturn fmt.Errorf(\"config: %s.run_as_user is only supported on Linux/macOS\", prefix)\n\t}\n\tif name == \"root\" || name == \"0\" {\n\t\treturn fmt.Errorf(\"config: %s.run_as_user must not be root\", prefix)\n\t}\n\tif !isValidRunAsUserName(name) {\n\t\treturn fmt.Errorf(\"config: %s.run_as_user %q contains invalid characters (allowed: a-z, A-Z, 0-9, -, _, .; must start with a letter or underscore)\", prefix, name)\n\t}\n\treturn nil\n}\n\n// configMu serializes read-modify-write cycles to prevent lost updates.\nvar configMu sync.Mutex\n\n// ConfigPath stores the path to the config file for saving\nvar ConfigPath string\n\ntype Config struct {\n\tDataDir        string `toml:\"data_dir\"` // session store directory, default ~/.cc-connect\n\tAttachmentSend string `toml:\"attachment_send\"`\n\t// Quiet is legacy: when true and [display] does not set thinking_messages / tool_messages,\n\t// engines behave as if those flags were false. Per-project quiet overrides when set.\n\tQuiet              *bool                   `toml:\"quiet,omitempty\"`\n\tProviders          []ProviderConfig        `toml:\"providers\"`                      // global shared providers\n\tProviderPresetsURL string                  `toml:\"provider_presets_url,omitempty\"` // remote JSON URL for provider presets","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/config/config.go#L57-L93","documentation":"Validation guard in validateRunAsUser: the configured run_as_user value fails isValidRunAsUserName (allowed: a-z A-Z 0-9 - _ . and must start with a letter or underscore). Fires during config validation before the daemon will run commands as that user, because an invalid name would fail user lookup or allow injection.","triggerScenarios":"Thrown at config/config.go:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix run_as_user in config.toml: only a-z, A-Z, 0-9, -, _, . and start with a letter or underscore","On Windows remove run_as_user entirely — it is rejected on that OS regardless of value"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}