What projectcalico/calico shipped
Written by FoxPlug from the repository's own releases; not affiliated with Tigera. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/projectcalico/calico; Tigera did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- The operator-rendered calico-crds ClusterRole now grants ippools/status, so creating an IPPool through the v3 API no longer logs permission errors on operator installs. Pull request #14528
- Felix now skips malformed nftables set members instead of panicking, so a bad NetworkSet member no longer crashes it during IP-set reconciliation. Pull request #14266
- Felix no longer retries link-local address removal endlessly on a deleted cali interface, which could block every later dataplane apply. Pull request #14463
- Release build and publish now run as named steps, with a plan flag that previews the run and warns about failing checks, a skip flag, and rollback of earlier steps when one fails. Pull request #14466
- The Istio controller now reports the status of a deleting Istio CR after an operator restart, so failed cleanup shows up in the istio TigeraStatus. Pull request #14480
- The Istio cluster ID is now set from ClusterInformation clusterGUID instead of the shared chart default, giving each cluster in a multi-cluster mesh a unique ID. Pull request #14478
- With flexVolumePath set to None, a flexvolume driver in the provider default plugin directory is now updated on upgrade; a driver at a custom path must be removed manually first. Pull request #14506
- The rule deciding which IP pools an IPAM request may use is consolidated into one module instead of being split across auto-assign, block affinity and specific-IP assignment. Pull request #14115
- Go fuzz tests for the selector parser now check that Parse and Validate agree and that String and UniqueID survive re-parsing within depth limits. Pull request #14527
- Dependencies of the bundled Istio, ztunnel and node-driver-registrar sources on release-v3.33 are patched for CVE fixes. Pull request #14551
Why it matters
This week is mostly about stability and correctness: a Felix panic on bad set members and a stuck address removal that blocked dataplane applies are both fixed. Operator users get a status permission fix for IPPool creation and better Istio status reporting after restarts, while release and IPAM internals were cleaned up. A large share of the work is CI and dependency maintenance, including CVE bumps across Istio, Envoy Gateway and Go on the 3.33 branch.
Changelog entry
- Calico-apiserver can now update ippools/status, fixing errors when creating IPPools through the v3 API on operator installs. Pull request #14528
- Felix no longer panics on a malformed NetworkSet member; invalid members are skipped during nftables IP-set reconciliation. Pull request #14266
- Felix no longer retries link-local address removal forever on a deleted cali interface, which previously blocked later dataplane applies. Pull request #14463
- Release build and publish run as named steps with plan preview, step skipping, and rollback of earlier steps on failure. Pull request #14466
- The status of a deleting Istio CR is now reported after an operator restart. Pull request #14480
- The Istio cluster ID is now set from ClusterInformation clusterGUID instead of the shared chart default. Pull request #14478
- With flexVolumePath set to None, a flexvolume driver in the default plugin directory is updated on upgrade. Pull request #14506
- IP pool qualification for IPAM requests is consolidated into a single module. Pull request #14115
- Added Go fuzz tests for the selector parser covering Parse, Validate, String and UniqueID. Pull request #14527
- Patched bundled Istio, ztunnel and node-driver-registrar dependencies on release-v3.33 for CVE fixes. Pull request #14551
- Bumped Envoy Gateway to v1.9.3 and envoy-ratelimit on release-v3.33 for CVE fixes. Pull request #14541
- Bumped Go, calico/base, Istio, Envoy, Kubernetes and klauspost/compress on release-v3.33 for CVE fixes. Pull request #14519
This week in Calico: Felix no longer panics on malformed nftables set members and no longer gets stuck retrying address removal on deleted interfaces. Operator installs can now update ippools/status, Istio cluster IDs come from clusterGUID, and CVE bumps landed for Istio, Envoy G
What shipped in Calico this week: Felix now skips malformed nftables set members instead of panicking, and stops retrying link-local address removal on deleted interfaces, which could block later dataplane applies. On operator installs, the calico-crds ClusterRole now grants ippools/status, so creating IPPools through the v3 API no longer hits permission errors. The Istio controller reports the status of a deleting Istio CR after an operator restart, and Istio cluster IDs are set from ClusterInformation clusterGUID for multi-cluster meshes. FlexVolume drivers in the default plugin directory now update on upgrade when flexVolumePath is set to None. IP pool qualification for IPAM requests is consolidated into one module, and selector parsing gained fuzz tests. CVE fixes landed for Istio, ztu
Week of October 26, 2026
What shipped
- IPAM GC now releases a stopped KubeVirt VM's address once the VM is gone, fixing a leaked IP address. Pull request #14406
- Calico-node now reconciles a node's tunnel address when an IP pool's nodeSelector changes or the pool starts deleting. Pull request #14441
- IPAM GC now treats IPs of replaced pod sandboxes and terminated pods as leaks and releases them. Pull request #14402
- Server-side dry runs for projectcalico.org/v3 objects are now validated against the Calico datastore, so invalid writes are rejected during dry run. Pull request #14442
- EBPF conntrack now recycles closed NAT reverse entries on SYN instead of leaving them unrecycled. Pull request #14188
- BPFConntrackTimeout validation now rejects malformed durations such as 1msms, 1hm, ms and.s. Pull request #14158
- Netkit flow probes no longer log an ERROR on every Felix start, and workload RPF drops are now counted. Pull request #14425
- V3.32.3 was released with container images, binaries, Kubernetes manifests and a Calico for Windows zip. Pull request #14399
- A release design document and a step-by-step release runbook were added to the repository. Pull request #14448
- Release publishing to S3 and GCS now uses the AWS and Google Cloud Go SDKs instead of the aws and gcloud CLIs. Pull request #14333
Why it matters
This week fixed several leaks and reconciliation gaps that could leave IP addresses held or tunnel addresses missing until calico-node restarted. Validation and dry runs now catch malformed input earlier, and v3.32.3 shipped with the fixes. The rest is mostly CI, test and release tooling work.
Changelog entry
- Release a stopped KubeVirt VM's address in IPAM GC once the VM is deleted. Pull request #14406
- Reconcile tunnel addresses on IP pool selector change or pool deletion. Pull request #14441
- Treat IPs of replaced sandboxes and terminated pods as leaks in IPAM GC. Pull request #14402
- Validate server-side dry runs of Calico objects against the datastore. Pull request #14442
- Recycle closed NAT reverse conntrack entries on SYN in eBPF. Pull request #14188
- Reject malformed durations in BPFConntrackTimeout validation. Pull request #14158
- Quiet the netkit probe device log and count workload RPF drops. Pull request #14425
- Build the v3.32.3 release. Pull request #14399
- Publish the v3.32.3 release artifacts. Release
- Publish releases with the cloud SDKs instead of the aws and gcloud CLIs. Pull request #14333
- Add release design doc and release runbook. Pull request #14448
- Mirror Enterprise counter layout in OSS BPF counters. Pull request #14444
This week in Calico: IPAM GC releases addresses of deleted stopped VMs and replaced pod sandboxes, tunnel addresses reconcile on IP pool changes, dry runs of Calico objects are validated, malformed BPFConntrackTimeout values are rejected, and v3.32.3 is out.
This week in Calico: the IPAM garbage collector now releases the address of a stopped KubeVirt VM after the VM is deleted, and also releases IPs held by replaced pod sandboxes and terminated pods. calico-node reconciles a node's tunnel address when an IP pool's nodeSelector changes or the pool is deleted. Server-side dry runs for projectcalico.org/v3 objects are validated against the Calico datastore, malformed BPFConntrackTimeout durations are rejected, and eBPF conntrack recycles closed NAT reverse entries on SYN. v3.32.3 shipped with container images, binaries and Kubernetes manifests.
Week of October 19, 2026
What shipped
- FelixConfiguration gains vxlanSrcPortMin and vxlanSrcPortMax to constrain the UDP source ports used for outgoing VXLAN traffic in the kernel and eBPF dataplanes. Pull request #12796
- Calico-ipam now runs in-process so a killed CNI ADD cannot later move a pod's address onto an abandoned sandbox. Pull request #14241
- Calico now protects the AWS VPC CNI pod IP annotation so only the AWS VPC CNI or identities granted write on awsvpcannotations.projectcalico.org can set it. Pull request #14269
- In eBPF mode on v3.32, splitting a policy program no longer emits unreachable code that the kernel verifier rejects, which could make a node report not ready. Pull request #14355
- The same eBPF policy program split fix for unreachable code is backported to v3.33. Pull request #14354
- Conntrack map autoscaling fixes the inverted trend check and corrects per-family sizing when DoubleIfFull is enabled. Pull request #14310
- BPF conntrack metrics are now labelled by IP family so v4 and v6 sweeps no longer overwrite each other, and map capacity is exported. Pull request #14273
- Copying a resized BPF map now batches writes instead of writing every entry one at a time. Pull request #14318
- Selector parenthesis nesting is limited to MaxNestingDepth of 100, with deeper selectors failing Parse and Validate with ErrNestingTooDeep. Pull request #14327
- Networking-calico now allows only a port's owning hosts to set its Neutron status, addressing duplicate etcd status entries during live migration. Pull request #14026
Why it matters
This week's changes touch dataplane behaviour that operators feel directly: VXLAN source port control for environments with flow limits, eBPF policy fixes that could leave nodes not ready, and conntrack autoscaling and metrics correctness on dual-stack nodes. IPAM and OpenStack changes reduce cases where addresses or port status end up attached to the wrong place. Several fixes are backported across release branches, and the AWS VPC CNI annotation is now protected.
Changelog entry
- Add vxlanSrcPortMin and vxlanSrcPortMax to FelixConfiguration to control the VXLAN source port range in kernel and eBPF dataplanes. Pull request #12796
- Run calico-ipam in-process so a killed CNI ADD cannot later claim a pod's address. Pull request #14241
- Protect the AWS VPC CNI pod IP annotation from writes by anyone except the AWS VPC CNI or granted awsvpcannotations.projectcalico.org write. Pull request #14269
- EBPF: do not emit unreachable code when splitting a policy program (backport to v3.32). Pull request #14355
- EBPF: do not emit unreachable code when splitting a policy program (backport to v3.33). Pull request #14354
- EBPF: fix conntrack map autoscaling trend check and per-family sizing. Pull request #14310
- BPF conntrack metrics: label by IP family and export map capacity. Pull request #14273
- BPF: batch writes when copying a resized map. Pull request #14318
- Limit parenthesis nesting depth in selectors to 100; deeper selectors fail Parse and Validate. Pull request #14327
- Networking-calico: only a port's owning hosts may set its Neutron status. Pull request #14026
- Confd: fix mesh peer AS fallback when this node has its own AS (backport to v3.32). Pull request #14371
- Confd: fix mesh peer AS fallback when this node has its own AS (backport to v3.33). Pull request #14368
Weekly Calico update: new VXLAN source port range options in FelixConfiguration, an in-process calico-ipam fix so killed CNI ADDs can't move pod addresses later, eBPF policy split and conntrack autoscaling fixes, and protection for the AWS VPC CNI pod IP annotation.
This week in Calico: FelixConfiguration adds vxlanSrcPortMin and vxlanSrcPortMax so operators can constrain UDP source ports for outgoing VXLAN traffic in kernel and eBPF dataplanes. calico-ipam now runs in-process, so a CNI ADD that kubelet gave up on cannot later move a pod's address onto an abandoned sandbox. eBPF mode gets fixes for unreachable code when splitting policy programs and for conntrack map autoscaling, plus conntrack metrics labelled by IP family. Calico now protects the AWS VPC CNI pod IP annotation. Selector nesting is limited to 100 levels, and fixes are backported to v3.31, v3.32 and v3.33.
Week of October 12, 2026
What shipped
- The shipped CNI plugins (host-local, portmap, loopback, tuning) now come from the upstream containernetworking/plugins repo instead of the fork, backported to release-v3.33. Pull request #14314
- The same CNI plugin switch to the upstream containernetworking/plugins repo was backported to release-v3.32. Pull request #14315
- IP assignment for KubeVirt VMs with IP persistence no longer panics the CNI plugin when the namespace and name together exceed about 107 characters. Pull request #14095
- Overlay replies are re-encapsulated in HostAddress mode so replies to host-networked clients reach a bare remote node IP. Pull request #13343
- Vx-submariner and vx-submariner-6 were added to DEFAULT_INTERFACES_TO_EXCLUDE so first-found no longer picks the Submariner VXLAN device and pulls the node address onto it. Pull request #14300
- The arm64 ztunnel build now passes the same aws-lc feature checks as amd64 and stops logging the unused -fuse-ld=lld argument. Pull request #14307
- Envoy Gateway is upgraded to v1.9.1 and the envoy binary image to v1.39.1, and the custom CRD-watch patch is dropped since it landed upstream. Pull request #14125
- Whisker-backend gained a GET /health liveness endpoint returning 200 with status ok so a Kubernetes liveness probe can restart a hung process. Pull request #13808
- User overrides are now applied after product variant modifiers in operator render, so modifier-added containers and init containers are no longer lost. Pull request #14150
- The tigera-operator chart takes an optional strategy value rendered into the operator Deployment's spec.strategy, defaulting to no strategy block. Pull request #14243
Why it matters
This week the project moved the CNI plugins it ships onto the upstream containernetworking/plugins repo and backported that to both maintained release branches, and backported a fix for a CNI panic on long KubeVirt VM names. It also fixed overlay reply handling in HostAddress mode, kept Submariner's VXLAN device out of node address autodetection, and upgraded the Envoy Gateway stack. Together these address a panic and address-selection bugs that could hit clusters using KubeVirt, Submariner or BPF overlay mode.
Changelog entry
- Ship CNI plugins from upstream containernetworking/plugins instead of the fork (release-v3.33). Pull request #14314
- Ship CNI plugins from upstream containernetworking/plugins instead of the fork (release-v3.32). Pull request #14315
- Fix a CNI panic on KubeVirt VM names longer than about 107 characters with IP persistence enabled. Pull request #14095
- Backport the KubeVirt long VM name CNI panic fix to release-v3.33. Pull request #14261
- Backport the KubeVirt long VM name CNI panic fix to release-v3.32. Pull request #14260
- Re-encapsulate overlay replies in HostAddress mode. Pull request #13343
- Add vx-submariner to DEFAULT_INTERFACES_TO_EXCLUDE. Pull request #14300
- Fix aws-lc feature probes failing in the arm64 ztunnel build. Pull request #14307
- Upgrade envoy-gateway to v1.9.1 and envoy to v1.39.1. Pull request #14125
- Add a GET /health liveness endpoint to whisker-backend. Pull request #13808
- Apply user overrides after product variant modifiers in operator render. Pull request #14150
- Add an optional strategy value to the tigera-operator chart. Pull request #14243
This week: CNI plugins (host-local, portmap, loopback, tuning) now come from upstream containernetworking/plugins on v3.32 and v3.33. Also a fix for a CNI panic on long KubeVirt VM names, overlay replies fixed in HostAddress mode, and vx-submariner excluded from node address auto
This week in projectcalico/calico: The CNI plugins the project ships (host-local, portmap, loopback, tuning) now come from the upstream containernetworking/plugins repository instead of the fork, backported to release-v3.32 and release-v3.33. A fix stops a CNI panic when a KubeVirt VM with IP persistence has a namespace and name longer than about 107 characters together. BPF overlay replies are re-encapsulated in HostAddress mode, and vx-submariner was added to the default interfaces to exclude so first-found no longer moves the node address onto the Submariner VXLAN device. Envoy Gateway moved to v1.9.1 and the envoy binary image to v1.39.1.
Week of October 5, 2026
What shipped
- Typha sync protocol gained zstd compression alongside snappy, cutting a 10k-pod snapshot from 1.17 MB to 561 KB at its fastest level. Pull request #11847
- The tigera-operator pre-delete uninstall Job no longer left behind a stale hook Job that blocked later helm uninstall runs, with the fix cherry-picked to the v3.29 through v3.33 branches. Pull request #14193
- Rule Source and Destination went back to omitempty, so an explicit empty source or destination in a stored policy is no longer stripped by the API server. Pull request #14222
- Goldmane flows now carry the distinct source and destination IP sets through the API to the Whisker backend. Pull request #13063
- A ValidatingAdmissionPolicy named protect-cni-annotations.projectcalico.org denies writes to the Calico CNI pod annotations unless they come from the node. Pull request #14065
- Felix no longer builds raw frames on asymmetric flows whose reply route is tunneled, fixing an incorrect
bpf_redirecton the reply leg. Pull request #13637 - Five Goldmane stream log lines now log the stream ID instead of dropping the field. Pull request #14173
- The CNI plugin retries reading the Calico nodename file during node startup instead of hard-failing with ENOENT, reducing sandbox retry storms. Pull request #14091
- The policy name migrator in calico-kube-controllers reads its DaemonSet name from the environment instead of a hardcoded calico-node, so it runs on canal installs. Pull request #14207
- The stale uninstall hook Job fix landed on the v3.32 branch. Pull request #14230
Why it matters
This week the project cut the wire size of Typha sync data for large clusters and removed an uninstall hook Job that could block helm uninstall on several maintained branches. It also restored the empty source and destination serialisation behaviour that GitOps tools depend on, and surfaced per flow source and destination IPs to the Whisker backend so operators can see which IPs made up a flow.
Changelog entry
- Add zstd compression algorithm support for the Typha sync protocol. Pull request #11847
- Fix the stale tigera-operator uninstall hook Job that blocked helm uninstall. Pull request #14193
- Restore omitempty on Rule Source and Destination so empty rules are kept. Pull request #14222
- Add distinct source and destination IP sets to Goldmane flows. Pull request #13063
- Add a ValidatingAdmissionPolicy to protect Calico CNI pod annotations. Pull request #14065
- Fix the raw frame on asymmetric flows with a tunneled reply route. Pull request #13637
- Log the stream ID in Goldmane stream log lines. Pull request #14173
- Retry reading the Calico nodename file instead of failing with ENOENT on node boot. Pull request #14091
- Read the policy name migrator's DaemonSet name from the environment. Pull request #14207
- Drop the legacy asymmetric IPIP TC programs. Pull request #13982
- Find TCX and netkit preambles when checking whether a workload is ready. Pull request #14133
- Fix the Whisker details panel crash on flows without a service. Pull request #14205
This week in Calico: Typha sync gained zstd compression, cutting a 10k-pod snapshot from 1.17 MB to 561 KB. Empty source and destination rules serialise again. Goldmane flows now carry source and destination IPs. The stale tigera-operator uninstall hook Job is fixed.
This week in Calico: Typha's sync protocol gained zstd compression alongside snappy, shrinking a 10k-pod snapshot from 1.17 MB to 561 KB at its fastest level. The tigera-operator pre-delete uninstall hook no longer leaves a Job that blocks later helm uninstall runs, with the fix on v3.29 through v3.33. Rule source and destination are back to omitempty, so an explicit empty source or destination is no longer stripped from stored policies. Goldmane flows now carry their distinct source and destination IPs through the API to the Whisker backend. Felix no longer builds raw frames on asymmetric flows with a tunneled reply route, and the CNI plugin retries reading the nodename file during node startup instead of failing with ENOENT.
Week of September 28, 2026
What shipped
- Released Calico v3.33.0 with container images, binaries, Kubernetes manifests, and Windows support. Release
- EBPF mode now re-attaches workloads when their preamble globals change, ensuring QoS controls and security settings take effect immediately. Pull request #14121
- Fixed IPv6 tunnel handle migration so VXLAN and WireGuard handles correctly map to nodes after datastore migration. Pull request #14108
- IP address release times in IPAM blocks are now preserved during v1-to-v3 datastore migration, maintaining cooldown periods. Pull request #14140
- EBPF dataplane now correctly applies ingress policy to pods reaching themselves through a service. Pull request #14134
- Calicoctl ipam show now uses the same accounting package as ipam check for consistent pool attribution. Pull request #14111
- Added Windows Server 2025 container images for Calico Windows node and CNI components. Pull request #14118
- CI now tests the manifest-to-operator upgrade path that users perform when adopting the operator. Pull request #14054
- Fixed mesh peering to correctly use the peer node's own AS number instead of falling back to the local AS. Pull request #14116
- Fixed calico node status command to work with the renamed process in v3.33. Pull request #14135
Why it matters
V3.33.0 ships with critical eBPF fixes for policy application and tunnel migration, IPAM improvements ensuring consistent pool attribution across tools, and expanded Windows support. These address core reliability issues in network policy enforcement and cluster upgrades.
Changelog entry
- V3.33.0 released Release
- EBPF: re-attach workloads when preamble globals change Pull request #14121
- Fix IPv6 tunnel handle migration and load balancer controller nil handle panic Pull request #14108
- Preserve IP address release times during v1-to-v3 IPAM block migration Pull request #14140
- EBPF: police pod-to-service-to-self flows against ingress policy Pull request #14134
- Calicoctl ipam show uses shared accounting package for consistency Pull request #14111
- Add Windows Server 2025 container images Pull request #14118
- Fix mesh peer AS fallback when peer node has its own AS Pull request #14116
- Fix calico node status command for v3.33 Pull request #14135
- E2E: add WithAvoidControlPlane and DumpCalicoNodeLogs helpers Pull request #14145
Calico v3.33.0 is out. eBPF enhancements for policy correctness, IPAM consistency fixes, IPv6 tunnel migration repair, and Windows Server 2025 support.
Calico v3.33.0 released. Key improvements: eBPF dataplane now correctly enforces policy on pod-to-service-to-self traffic, IPv6 tunnel handles preserved during migration, IPAM tools agree on pool attribution, and Windows Server 2025 container images added. Download from GitHub.
Week of September 21, 2026
What shipped
- Backported bug fixes to v3.31: fixed epstatusfile watcher leak, kept pre-existing forwarded flows alive when switching to eBPF, and fixed borrowed IP route handling. Pull request #14075
- Manifest installs now stage upstream CNI plugins in the calico-node chart so pod-networked pods can start. Pull request #14041
- Fixed calico-kube-controllers never becoming ready on manifest installs by pointing probes at its health server instead of running a non-existent command. Pull request #14050
- Fixed calico-apiserver on manifest installs to use mounted certificates instead of serving a self-signed localhost cert. Pull request #14059
- Upgraded bundled Envoy Gateway from v1.8.2 to v1.9.1, Envoy to v1.39.1, and Gateway API to v1.6.1. Pull request #14025
- Fixed calico-node crash-loop on canal installs by granting IPAMConfiguration read access regardless of IPAM mode. Pull request #14068
- Fixed BPF connlimit bypass where a forged RST on an idle NAT-outgoing flow incorrectly freed a connection slot. Pull request #14034
- Added ability to list HostEndpoints with field selector spec.node= on both Calico API server and native v3 CRDs. Pull request #14067
- Reduced unnecessary writes to datastore by only creating default tiers when they are missing instead of unconditionally. Pull request #14002
- Improved offline validation in calicoctl to catch duplicate list entries that the API server would reject. Pull request #14058
Why it matters
Manifest installs were broken across multiple components in recent releases. This week's fixes ensure calico-node, calico-kube-controllers, and calico-apiserver all work correctly on manifest-based deployments. Additionally, bug fixes address connlimit security issues and eBPF flow handling while reducing unnecessary datastore churn.
Changelog entry
- Backported epstatusfile watcher leak fix, eBPF forwarded flows fix, and borrowed IP route fix to v3.31 Pull request #14075
- Added upstream CNI plugins staging to calico-node chart for manifest installs Pull request #14041
- Fixed kube-controllers probes on manifest installs to use health server instead of non-existent command Pull request #14050
- Fixed calico-apiserver on manifest installs to use mounted certificates from calico-apiserver-certs secret Pull request #14059
- Upgraded Envoy Gateway to v1.9.1, Envoy to v1.39.1, Gateway API to v1.6.1 Pull request #14025
- Fixed calico-node crash-loop on canal installs by granting IPAMConfiguration read access for policy-only mode Pull request #14068
- Fixed BPF connlimit bypass where forged RST on idle NAT flow incorrectly freed connection slot Pull request #14034
- Added spec.node field selector support for HostEndpoint listing on Calico API server and native CRDs Pull request #14067
- Reduced datastore writes by creating default tiers only when missing instead of unconditionally Pull request #14002
- Improved calicoctl offline validation to catch duplicate list entries rejected by API server Pull request #14058
Fixed manifest install issues in Calico: calico-node now stages CNI plugins, kube-controllers probes work, and apiserver uses proper certificates. Also fixed connlimit security and upgraded Envoy Gateway to v1.9.1.
This week we fixed critical issues affecting Calico manifest installations. calico-node now properly stages CNI plugins so pods can network, kube-controllers probes point to the health server, and apiserver uses mounted certificates instead of self-signed certs. We also addressed a connlimit security bypass in BPF where forged RSTs freed connection slots incorrectly. Envoy Gateway upgraded from v1.8.2 to v1.9.1 with Envoy at v1.39.1. Reduced unnecessary datastore writes by only creating tiers when missing.
Week of September 14, 2026
What shipped
- CRD schemas now accept the full range of 4-byte AS numbers defined by RFC 4893, fixing rejection of AS numbers above 2147483647. Pull request #13979
- CRD schemas now validate peer IPs, network set entries and rule protocols to prevent kubectl and GitOps clients from storing values the API server would reject. Pull request #13913
- CRD schemas now apply the same field defaults as the aggregated API server, so raw kubectl reads see the documented default values. Pull request #13872
- Operator gains optional Installation.spec.tlsMinVersion field to set TLS 1.2 or 1.3 minimum on operator-managed workloads. Pull request #13963
- Bug fix: nftables connection transition log prefix validation now correctly allows prefixes up to 115 characters instead of rejecting 116+. Pull request #13969
- Bug fix: BPF connection limit no longer incorrectly releases slots when a pod with CAP_NET_RAW forges RST packets. Pull request #13880
- Bug fix: conntrack leg flags are now written atomically to prevent policy approval or TCP state bits from being dropped under concurrent writes. Pull request #13932
- BPF host interface auto-detection now correctly models NICs and VLAN sub-devices attached to Linux bridges. Pull request #13922
- Kube-controllers now runs on the host network during datastore migration to prevent the migration from being wedged by pod scheduling issues. Pull request #13871
- Flow backend now supports pluggable flow sources beyond Goldmane while maintaining backward compatibility for existing Calico installations. Pull request #12879
Why it matters
This week focused on improving API validation through CRD schemas to catch configuration errors earlier, fixing critical bugs in BPF connection tracking and network flow handling, and making the operator more flexible with TLS configuration. These changes reduce silent failures and make Calico deployments more robust.
Changelog entry
- Accept the full 4-byte AS number range in the CRD schemas Pull request #13979
- Validate peer IPs, network set entries and rule protocols in the CRD schemas Pull request #13913
- Apply the libcalico-go write defaults in the CRD schemas Pull request #13872
- Add operator TLS minimum version setting Pull request #13963
- Fix the nftables budget for connection transition log prefixes Pull request #13969
- BPF connlimit: RST no longer incorrectly releases a connection slot Pull request #13880
- Write conntrack leg flags atomically Pull request #13932
- Detect bridge-attached interfaces in BPF host interface auto-detection Pull request #13922
- Run kube-controllers on the host network during a datastore migration Pull request #13871
- Make whisker's flow source pluggable Pull request #12879
Calico v3.33+ now validates CRD writes, applies field defaults, accepts full 4-byte AS numbers, and fixes BPF connection tracking bugs.
This week's Calico updates strengthen schema validation to catch misconfigurations early, fix critical BPF bugs in connection tracking and flow handling, add TLS version control to operator deployments, and support pluggable flow sources. CRD schemas now validate peer IPs and enforce the same defaults as the API server, preventing silent failures when using kubectl or GitOps tools directly.