crowdsecurity/crowdsec · error

appsec_config and appsec_config_path are mutually exclusive

Error message

appsec_config and appsec_config_path are mutually exclusive with appsec_configs

What it means

Validation guard in UnmarshalConfig: the configuration mixes the singular forms (appsec_config or appsec_config_path) with the plural list form (appsec_configs). Specifying both makes the intended ruleset ambiguous, so the combination is rejected rather than silently merged.

Source

Thrown at pkg/acquisition/modules/appsec/config.go:94

	if w.config.Path[0] != '/' {
		w.config.Path = "/" + w.config.Path
	}

	if w.config.Mode == "" {
		w.config.Mode = configuration.TAIL_MODE
	}

	// always have at least one appsec routine
	if w.config.Routines == 0 {
		w.config.Routines = 1
	}

	if w.config.AppsecConfig == "" && w.config.AppsecConfigPath == "" && len(w.config.AppsecConfigs) == 0 {
		return errors.New("appsec_config or appsec_config_path must be set")
	}

	if (w.config.AppsecConfig != "" || w.config.AppsecConfigPath != "") && len(w.config.AppsecConfigs) != 0 {
		return errors.New("appsec_config and appsec_config_path are mutually exclusive with appsec_configs")
	}

	if w.config.Name == "" {
		if w.config.ListenSocket != "" && w.config.ListenAddr == "" {
			w.config.Name = w.config.ListenSocket
		}

		if w.config.ListenSocket == "" {
			w.config.Name = fmt.Sprintf("%s%s", w.config.ListenAddr, w.config.Path)
		}
	}

	return nil
}

func loadCertPool(caCertPath string, logger log.FieldLogger) (*x509.CertPool, error) {
	caCertPool, err := x509.SystemCertPool()
	if err != nil {

View on GitHub (pinned to 909b515798)

Solutions

  1. Keep either appsec_config/appsec_config_path or appsec_configs, never both
  2. Move all entries into the appsec_configs list if you need several configs
  3. Re-run a config check after fixing the acquis stanza
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/acquisition/modules/appsec/config.go:94 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of crowdsecurity/crowdsec@909b515798 (2026-09-06). Data as JSON: /api/errors/43243f9bf22a4262. Report an issue: GitHub.