gastownhall/beads · error
--proxied-server-external-*: %v
Error message
--proxied-server-external-*: %v
What it means
bd init wraps any failure from cfg.Validate() on the external proxied-server TLS/connection config built from --proxied-server-external-* flags. The %v is the underlying validation error (e.g. missing cert, bad server name, non-positive keep-alive). It signals the flag combination did not form a valid external endpoint config before any workspace side effects occur.
Source
Thrown at cmd/bd/init.go:529
return fmt.Errorf("--debug cannot be combined with --proxied-server-external-* (debug applies to the managed dolt sql-server only)")
}
var externalConfig *configfile.ExternalDoltConfig
if externalProvided {
cfg := configfile.ExternalDoltConfig{
Host: externalHost,
Port: externalPort,
Socket: externalSocketPath,
User: externalUser,
TLSRequired: externalTLS,
TLSCACert: externalTLSCACertPath,
TLSCert: externalTLSCertPath,
TLSKey: externalTLSKeyPath,
TLSServerName: externalTLSServerName,
TLSSkipVerify: externalTLSSkipVerify,
KeepAlivePeriod: externalKeepAlive,
}
if err := cfg.Validate(); err != nil {
return fmt.Errorf("--proxied-server-external-*: %v", err)
}
externalConfig = &cfg
}
// Backend selection: Dolt is the only supported backend.
if !configfile.IsSupportedBackend(backendFlag) {
switch backendFlag {
case configfile.BackendPostgres, configfile.BackendMySQL:
return fmt.Errorf("storage backend %q is no longer supported: %s; the supported backend is \"dolt\" (default)", backendFlag, configfile.RemovedBackendRationale)
case configfile.BackendSQLite:
return fmt.Errorf("storage backend %q is no longer supported: %s; the supported backend is \"dolt\" (default)", backendFlag, configfile.RemovedSQLiteRationale)
}
return fmt.Errorf("unknown backend %q: the supported backend is \"dolt\" (default)", backendFlag)
}
// A registered extension backend passes IsSupportedBackend so its
// existing workspaces can be opened, but init provisions Dolt only and
// would otherwise create the workspace and persist backend: dolt. Reject
// it here rather than silently creating the wrong workspace; downstreamView on GitHub (pinned to 71377f2769)
Solutions
- Read the wrapped %v message to see exactly which field failed validation
- Supply both external TLS cert and key paths together, or neither
- Verify cert/key files exist and are readable at the given paths
- Check that keep-alive / skip-verify flag values are well-formed
- If you don't need an external proxied endpoint, drop the --proxied-server-external-* flags entirely
Example fix
// before bd init --proxied-server-external-tls-key ./key.pem // after bd init --proxied-server-external-tls-cert ./cert.pem --proxied-server-external-tls-key ./key.pem
Defensive patterns
Strategy: validation
Validate before calling
if tlsCert != "" && tlsKey == "" {
return fmt.Errorf("--proxied-server-external-tls-key required when cert is set")
}
if _, err := os.Stat(externalTLSKeyPath); err != nil {
return fmt.Errorf("external TLS key not readable: %v", err)
} Try / catch
if err := cfg.Validate(); err != nil {
return fmt.Errorf("invalid --proxied-server-external-* config: %w", err)
} Prevention
- Always set external TLS cert and key flags as a pair
- Stat the cert/key files before invoking bd init
- Avoid mixing --proxied-server-* (internal) flags with external ones in scripts
When it happens
Trigger: Running `bd init` with --proxied-server-external-* flags (cert path, key path, server name, skip-verify, keep-alive) whose assembled proxied.Config fails Validate(), e.g. TLSKey set without TLSCert or invalid keep-alive duration.
Common situations: Typo'd or half-specified TLS flag pairs (cert without key), pointing cert/key paths at nonexistent files, invalid keep-alive values, copy-pasted server-internal flags mixed with external ones.
Understand the failure class
Background: Config validation failed: what "invalid value for {key}" and settings-rejection errors mean across 19 open-source libraries — this error's family across 19 libraries.
Related errors
- --proxied-server-config-path %v
- --proxied-server-log-path %v
- ExternalDoltConfig: TLSCert/TLSKey set without TLSRequired
- ExternalDoltConfig: TLSServerName set without TLSRequired
- ExternalDoltConfig: TLSSkipVerify set without TLSRequired
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/a40f4486a40d7184.
Report an issue: GitHub.