JuliusBrussee/caveman · error
postgres: production connection includes a plaintext fallbac
Error message
postgres: production connection includes a plaintext fallback
What it means
Error "postgres: production connection includes a plaintext fallback" thrown in JuliusBrussee/caveman.
Source
Thrown at shared/platform/postgresconfig/postgresconfig.go:68
return nil, fmt.Errorf("postgres: %s or %s is required in production", caEnvironment, caFileEnvironment)
}
if caPEM == "" {
return config, nil
}
roots := x509.NewCertPool()
if !roots.AppendCertsFromPEM([]byte(caPEM)) {
return nil, fmt.Errorf("postgres: %s contains no valid certificate", caEnvironment)
}
if config.ConnConfig.TLSConfig == nil {
return nil, errors.New("postgres: CA certificate configured while TLS is disabled")
}
config.ConnConfig.TLSConfig.RootCAs = roots
config.ConnConfig.TLSConfig.InsecureSkipVerify = false
config.ConnConfig.TLSConfig.ServerName = config.ConnConfig.Host
for _, fallback := range config.ConnConfig.Fallbacks {
if fallback.TLSConfig == nil {
if production {
return nil, errors.New("postgres: production connection includes a plaintext fallback")
}
continue
}
fallback.TLSConfig.RootCAs = roots
fallback.TLSConfig.InsecureSkipVerify = false
fallback.TLSConfig.ServerName = fallback.Host
}
return config, nil
}
func caPEMFromEnvironment() (string, error) {
filePath := strings.TrimSpace(os.Getenv(caFileEnvironment))
direct := strings.TrimSpace(os.Getenv(caEnvironment))
if filePath != "" && direct != "" {
return "", fmt.Errorf("postgres: set only %s or %s, not both", caFileEnvironment, caEnvironment)
}
if filePath == "" {
return direct, nilView on GitHub (pinned to 27d5a3981a)
Solutions
- Remove the plaintext fallback from the production connection config.
When it happens
Trigger: Thrown at shared/platform/postgresconfig/postgresconfig.go:68 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/6c94fabaa9ccec9b.
Report an issue: GitHub.