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
- Check disk space and directory permissions for the sysdump output path
- Run cilium-cli with --output pointing to a writable directory
- Confirm no security module (SELinux) is blocking writes (check audit logs)
- 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
- Check df free space before multi-task sysdump runs
- Avoid read-only/containerized working directories for output
- Log each task's error with the filename for pinpoint triage
- Whitelist the CLI in endpoint protection on hardened hosts
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
- unable to retrieve helm value from release %s: %w
- unable to retrieve helm meta from release %s: %w
- could not find container %q in pod %q with namespace %q
- could not find container %s
- could not create exec pod: %w
AI-assisted analysis of cilium/cilium@ac7b90affa (2026-08-31).
Data as JSON: /api/errors/54cdc357597d5063.
Report an issue: GitHub.