gastownhall/beads · error

--proxied-server-external-* flags cannot be combined with --

Error message

--proxied-server-external-* flags cannot be combined with --proxied-server-config-path (external mode has no managed dolt sql-server to configure)

What it means

In proxied-server mode you must choose either a managed dolt sql-server (configured via `--proxied-server-config-path`) or an external one (via `--proxied-server-external-*` flags) — not both. Because external mode has no managed server, there is no config file to point at, so combining the two is rejected (cmd/bd/init.go:507-509).

Source

Thrown at cmd/bd/init.go:508

				return fmt.Errorf("--proxied-server-idle-timeout requires --proxied-server")
			}
			if serverProxyIdleTimeout < 0 {
				return fmt.Errorf("--proxied-server-idle-timeout must be 0 (never) or a positive duration, got %s", serverProxyIdleTimeout)
			}
			if serverProxyIdleTimeout == 0 {
				serverProxyIdleTimeout = proxy.IdleTimeoutNever
			}
		}

		externalProvided := externalHost != "" || externalPort != 0 || externalSocketPath != "" ||
			externalUser != "" ||
			externalTLS || externalTLSCACertPath != "" || externalTLSCertPath != "" || externalTLSKeyPath != "" ||
			externalTLSServerName != "" || externalTLSSkipVerify || externalKeepAlive != 0
		if externalProvided && !initProxiedServer {
			return fmt.Errorf("--proxied-server-external-* flags require --proxied-server")
		}
		if externalProvided && serverConfigPath != "" {
			return fmt.Errorf("--proxied-server-external-* flags cannot be combined with --proxied-server-config-path (external mode has no managed dolt sql-server to configure)")
		}
		if externalProvided && debugMode {
			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,

View on GitHub (pinned to 71377f2769)

Solutions

  1. Remove `--proxied-server-config-path` and rely solely on the external-* flags.
  2. Remove the external-* flags and keep the managed config path if a managed server is what you want.
  3. Split into two init invocations/configs — one per mode.

Example fix

// before
bd init --proxied-server --proxied-server-config-path /etc/beads/dolt.toml --proxied-server-external-host db.example.com
// after
bd init --proxied-server --proxied-server-external-host db.example.com --proxied-server-external-port 3307
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
if [[ -n "$CONFIG_PATH" ]] && [[ -n "$EXT_HOST$EXT_PORT$EXT_SOCKET" ]]; then
  echo "external-* flags and --proxied-server-config-path are mutually exclusive" >&2; exit 2
fi

Type guard

func serverModeExclusive(configPathSet, externalSet bool) bool { return !(configPathSet && externalSet) }

Try / catch

if out, err := exec.Command("bd", "init", args...).CombinedOutput(); err != nil {
    if strings.Contains(string(out), "cannot be combined with --proxied-server-config-path") {
        // drop config-path (external mode) or drop external flags (managed mode)
    }
}

Prevention

When it happens

Trigger: Running `bd init --proxied-server --proxied-server-config-path /abs/dolt.toml` together with any `--proxied-server-external-*` flag (e.g. `--proxied-server-external-host` or `--proxied-server-external-tls`), i.e. `externalProvided && serverConfigPath != ""`.

Common situations: Migrating from managed to external mode and keeping the old config-path flag; merging flag sets from two scripts (one managed, one external); operator supplying the config file "for good measure" while also giving explicit connection settings.

Related errors


AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30). Data as JSON: /api/errors/0a7083e0e8e7dbef. Report an issue: GitHub.