cilium/cilium · error

failed to write Cilium CIDR Groups to file: %w

Error message

failed to write Cilium CIDR Groups to file: %w

What it means

This error wraps a WriteYAML failure for the Cilium CIDR Groups collection task: the list call succeeded but writing ciliumCIDRGroupsFileName failed. Unlike error 832 it is not an API problem; it is a serialization or filesystem error surfaced during sysdump generation.

Source

Thrown at cilium-cli/sysdump/sysdump.go:784

				if err != nil {
					return fmt.Errorf("failed to collect Cilium Egress Gateway policies: %w", err)
				}
				if err := c.WriteYAML(ciliumEgressGatewayPoliciesFileName, v); err != nil {
					return fmt.Errorf("failed to collect Cilium Egress Gateway policies: %w", err)
				}
				return nil
			},
		},
		{
			Description: "Collecting Cilium CIDR Groups",
			Quick:       true,
			Task: func(ctx context.Context) error {
				v, err := c.Client.ListCiliumCIDRGroups(ctx, metav1.ListOptions{})
				if err != nil {
					return fmt.Errorf("failed to collect Cilium CIDR Groups: %w", err)
				}
				if err := c.WriteYAML(ciliumCIDRGroupsFileName, v); err != nil {
					return fmt.Errorf("failed to write Cilium CIDR Groups to file: %w", err)
				}
				return nil
			},
		},
		{
			Description: "Collecting Cilium local redirect policies",
			Quick:       true,
			Task: func(ctx context.Context) error {
				v, err := c.Client.ListCiliumLocalRedirectPolicies(ctx, corev1.NamespaceAll, metav1.ListOptions{})
				if err != nil {
					return fmt.Errorf("failed to collect Cilium local redirect policies: %w", err)
				}
				if err := c.WriteYAML(ciliumLocalRedirectPoliciesFileName, v); err != nil {
					return fmt.Errorf("failed to collect Cilium local redirect policies: %w", err)
				}
				return nil
			},
		},

View on GitHub (pinned to ac7b90affa)

Solutions

  1. Check disk space and directory permissions for the sysdump output path
  2. Run cilium-cli with --output pointing to a writable directory
  3. Confirm no security module (SELinux) is blocking writes (check audit logs)
  4. If the wrapped error is a YAML marshal failure, update cilium-cli to the latest patch release

Example fix

// before
cilium-cli sysdump   # fails writing into read-only CWD
// after
cd /tmp && cilium-cli sysdump --output /tmp/sysdump
ls -ld /tmp/sysdump  # confirm writable
Defensive patterns

Strategy: validation

Validate before calling

func ensureWritable(dir string) error {
	probe := filepath.Join(dir, ".probe")
	if err := os.WriteFile(probe, []byte("x"), 0o600); err != nil { return err }
	return os.Remove(probe)
}
// invoke before Run() with the sysdump output directory

Type guard

func isFileWriteError(err error) bool { return errors.Is(err, os.ErrPermission) || errors.Is(err, syscall.ENOSPC) || errors.Is(err, fs.ErrClosed) }

Try / catch

if err := c.WriteYAML(ciliumCIDRGroupsFileName, v); err != nil {
	return fmt.Errorf("failed to write Cilium CIDR Groups to file %s: %w", ciliumCIDRGroupsFileName, err)
}

Prevention

When it happens

Trigger: c.WriteYAML(ciliumCIDRGroupsFileName, v) fails after ListCiliumCIDRGroups succeeded — YAML marshal error or inability to create the file in the sysdump working directory.

Common situations: Read-only or full filesystem, SELinux/AppArmor denying writes, temp directory cleaned concurrently, or marshaling issues with unusual resource content.

Related errors


AI-assisted analysis of cilium/cilium@ac7b90affa (2026-08-31). Data as JSON: /api/errors/54cdc357597d5063. Report an issue: GitHub.