crowdsecurity/crowdsec · error

allowlist %s has no ID

Error message

allowlist %s has no ID

What it means

An allowlist entry received from CAPI has a name and URL but a nil ID field. The ID is required to key the allowlist in local state; a missing ID means the CAPI payload is malformed/incomplete for this entry, so it is rejected rather than silently mis-keyed.

Source

Thrown at pkg/apiserver/apic.go:726

}

func (a *apic) updateOneAllowlist(ctx context.Context, client *apiclient.ApiClient, link *modelscapi.AllowlistLink) error {
	if log.IsLevelEnabled(log.TraceLevel) {
		log.Tracef("allowlist body: %+v", spew.Sdump(link))
	}

	if link.Name == nil {
		log.Warn("allowlist has no name")
		return nil
	}

	if link.URL == nil {
		log.Warnf("allowlist %s has no URL", *link.Name)
		return nil
	}

	if link.ID == nil {
		return fmt.Errorf("allowlist %s has no ID", *link.Name)
	}

	description := ""
	if link.Description != nil {
		description = *link.Description
	}

	req, err := http.NewRequestWithContext(ctx, http.MethodGet, *link.URL, http.NoBody)
	if err != nil {
		return fmt.Errorf("while pulling allowlist: %s", err)
	}

	resp, err := client.GetClient().Do(req)
	if err != nil {
		return fmt.Errorf("while pulling allowlist: %s", err)
	}
	defer resp.Body.Close()

View on GitHub (pinned to 909b515798)

Solutions

  1. Retry the pull later — transient stream glitches can drop fields
  2. Upgrade crowdsec if a version mismatch in the CAPI contract is suspected
  3. If persistent, capture the allowlist entry and report it to CrowdSec
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/apiserver/apic.go:726 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/2928015cb3117857. Report an issue: GitHub.