{"record":{"id":"8cf6304d18fea53e","repo":"chenhg5/cc-connect","slug":"config-relay-visibility-must-be-full-summary","errorCode":null,"errorMessage":"config: relay.visibility must be \"full\", \"summary\", or \"none\"","messagePattern":"config: relay\\.visibility must be \"full\", \"summary\", or \"none\"","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"config/config.go","lineNumber":1021,"sourceCode":"\treturn c.validateInternal(false)\n}\n\nfunc (c *Config) validateInternal(permissive bool) error {\n\tif err := validateDisplayConfig(\"display\", &c.Display); err != nil {\n\t\treturn err\n\t}\n\tswitch strings.ToLower(strings.TrimSpace(c.AttachmentSend)) {\n\tcase \"\", \"on\", \"off\":\n\tdefault:\n\t\treturn fmt.Errorf(\"config: attachment_send must be \\\"on\\\" or \\\"off\\\"\")\n\t}\n\tif c.Relay.TimeoutSecs != nil && *c.Relay.TimeoutSecs < 0 {\n\t\treturn fmt.Errorf(\"config: relay.timeout_secs must be >= 0\")\n\t}\n\tswitch strings.ToLower(strings.TrimSpace(c.Relay.Visibility)) {\n\tcase \"\", \"full\", \"summary\", \"none\":\n\tdefault:\n\t\treturn fmt.Errorf(\"config: relay.visibility must be \\\"full\\\", \\\"summary\\\", or \\\"none\\\"\")\n\t}\n\tif len(c.Projects) == 0 {\n\t\treturn fmt.Errorf(\"config: at least one [[projects]] entry is required\")\n\t}\n\tfor i, proj := range c.Projects {\n\t\tprefix := fmt.Sprintf(\"projects[%d]\", i)\n\t\tif proj.Name == \"\" {\n\t\t\treturn fmt.Errorf(\"config: %s.name is required\", prefix)\n\t\t}\n\t\tif proj.Agent.Type == \"\" {\n\t\t\treturn fmt.Errorf(\"config: %s.agent.type is required\", prefix)\n\t\t}\n\t\tif len(proj.Platforms) == 0 && !permissive {\n\t\t\treturn fmt.Errorf(\"config: %s needs at least one [[projects.platforms]]\", prefix)\n\t\t}\n\t\tfor j, p := range proj.Platforms {\n\t\t\tif p.Type == \"\" {\n\t\t\t\treturn fmt.Errorf(\"config: %s.platforms[%d].type is required\", prefix, j)","sourceCodeStart":1003,"sourceCodeEnd":1039,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/config/config.go#L1003-L1039","documentation":"The config validator rejects an unsupported value for the relay.visibility setting. Only \"full\", \"summary\", or \"none\" (any case, with surrounding whitespace trimmed; empty string is allowed and means default) are accepted. This error is thrown during config validation in config/config.go before the engine starts, because relay visibility controls how much agent output is relayed to messaging platforms and an unknown value would silently break that behavior.","triggerScenarios":"Calling Load/Validate with a TOML config where [relay] visibility is set to any string other than \"full\", \"summary\", \"none\", or empty — e.g. visibility = \"verbose\", \"on\", \"true\", \"summarized\", or a typo like \"summery\".","commonSituations":"Users copying example configs from another project, guessing at allowed values, upgrading from an older version that used different visibility names, or using a localized value like \"完整\".","solutions":["Open config.toml and change relay.visibility to one of \"full\", \"summary\", or \"none\" (case-insensitive)","Remove the visibility line entirely to use the default (empty string is accepted)","Run the config through the validator again (restart cc-connect) to confirm it loads","Check config.example.toml for documented values"],"exampleFix":"// before\n[relay]\nvisibility = \"verbose\"\n// after\n[relay]\nvisibility = \"summary\"","handlingStrategy":"validation","validationCode":"v := strings.ToLower(strings.TrimSpace(cfg.Relay.Visibility))\nif v != \"\" && v != \"full\" && v != \"summary\" && v != \"none\" {\n    return fmt.Errorf(\"relay.visibility %q not in full/summary/none\", cfg.Relay.Visibility)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only copy visibility values from config.example.toml or docs","Keep a CI step that loads config.toml before deploying","Never hand-translate setting values; use the exact enum strings"],"tags":["config","validation","go"],"backgroundTag":"invalid-enum-value","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}