{"record":{"id":"0a7083e0e8e7dbef","repo":"gastownhall/beads","slug":"proxied-server-external-flags-cannot-be-combin","errorCode":null,"errorMessage":"--proxied-server-external-* flags cannot be combined with --proxied-server-config-path (external mode has no managed dolt sql-server to configure)","messagePattern":"--proxied-server-external-\\* flags cannot be combined with --proxied-server-config-path \\(external mode has no managed dolt sql-server to configure\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/init.go","lineNumber":508,"sourceCode":"\t\t\t\treturn fmt.Errorf(\"--proxied-server-idle-timeout requires --proxied-server\")\n\t\t\t}\n\t\t\tif serverProxyIdleTimeout < 0 {\n\t\t\t\treturn fmt.Errorf(\"--proxied-server-idle-timeout must be 0 (never) or a positive duration, got %s\", serverProxyIdleTimeout)\n\t\t\t}\n\t\t\tif serverProxyIdleTimeout == 0 {\n\t\t\t\tserverProxyIdleTimeout = proxy.IdleTimeoutNever\n\t\t\t}\n\t\t}\n\n\t\texternalProvided := externalHost != \"\" || externalPort != 0 || externalSocketPath != \"\" ||\n\t\t\texternalUser != \"\" ||\n\t\t\texternalTLS || externalTLSCACertPath != \"\" || externalTLSCertPath != \"\" || externalTLSKeyPath != \"\" ||\n\t\t\texternalTLSServerName != \"\" || externalTLSSkipVerify || externalKeepAlive != 0\n\t\tif externalProvided && !initProxiedServer {\n\t\t\treturn fmt.Errorf(\"--proxied-server-external-* flags require --proxied-server\")\n\t\t}\n\t\tif externalProvided && serverConfigPath != \"\" {\n\t\t\treturn fmt.Errorf(\"--proxied-server-external-* flags cannot be combined with --proxied-server-config-path (external mode has no managed dolt sql-server to configure)\")\n\t\t}\n\t\tif externalProvided && debugMode {\n\t\t\treturn fmt.Errorf(\"--debug cannot be combined with --proxied-server-external-* (debug applies to the managed dolt sql-server only)\")\n\t\t}\n\t\tvar externalConfig *configfile.ExternalDoltConfig\n\t\tif externalProvided {\n\t\t\tcfg := configfile.ExternalDoltConfig{\n\t\t\t\tHost:            externalHost,\n\t\t\t\tPort:            externalPort,\n\t\t\t\tSocket:          externalSocketPath,\n\t\t\t\tUser:            externalUser,\n\t\t\t\tTLSRequired:     externalTLS,\n\t\t\t\tTLSCACert:       externalTLSCACertPath,\n\t\t\t\tTLSCert:         externalTLSCertPath,\n\t\t\t\tTLSKey:          externalTLSKeyPath,\n\t\t\t\tTLSServerName:   externalTLSServerName,\n\t\t\t\tTLSSkipVerify:   externalTLSSkipVerify,\n\t\t\t\tKeepAlivePeriod: externalKeepAlive,","sourceCodeStart":490,"sourceCodeEnd":526,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/init.go#L490-L526","documentation":"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).","triggerScenarios":"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 != \"\"`.","commonSituations":"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.","solutions":["Remove `--proxied-server-config-path` and rely solely on the external-* flags.","Remove the external-* flags and keep the managed config path if a managed server is what you want.","Split into two init invocations/configs — one per mode."],"exampleFix":"// before\nbd init --proxied-server --proxied-server-config-path /etc/beads/dolt.toml --proxied-server-external-host db.example.com\n// after\nbd init --proxied-server --proxied-server-external-host db.example.com --proxied-server-external-port 3307","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\nif [[ -n \"$CONFIG_PATH\" ]] && [[ -n \"$EXT_HOST$EXT_PORT$EXT_SOCKET\" ]]; then\n  echo \"external-* flags and --proxied-server-config-path are mutually exclusive\" >&2; exit 2\nfi","typeGuard":"func serverModeExclusive(configPathSet, externalSet bool) bool { return !(configPathSet && externalSet) }","tryCatchPattern":"if out, err := exec.Command(\"bd\", \"init\", args...).CombinedOutput(); err != nil {\n    if strings.Contains(string(out), \"cannot be combined with --proxied-server-config-path\") {\n        // drop config-path (external mode) or drop external flags (managed mode)\n    }\n}","preventionTips":["Choose managed (config-path) or external (external-* flags) mode explicitly per environment.","Delete old --proxied-server-config-path flags when migrating to external mode.","Encode the exclusivity rule in wrapper scripts before invoking bd init."],"tags":["cli","flag-validation","mutually-exclusive","external-server"],"backgroundTag":"mutually-exclusive-flags","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}