What containerd/containerd shipped
Written by FoxPlug from the repository's own releases; not affiliated with Containerd. 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/containerd/containerd; Containerd 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
- Pull now supports an
ignore_descriptor_urlsoption under the transfer v1 local and CRI images plugins to skip URLs in image descriptors, with a descriptor URL request counter and info-level logging of sanitized URLs. Pull request #14401 - A new containerd-shim-sandboxed-runc-v2 shim implements the Sandbox API itself so a pod needs no pause container and no pause image, serving the io.containerd.runc.v2 runtime type. Pull request #14135
- An integration testcase was added for concurrent task creation, covering the window before the shim is registered where the only guard is the bundle directory creation. Pull request #14516
- The shim now keeps the console open when stdin closes on a terminal process, since a single PTY master carries both stdin and output. Pull request #14502
- On Windows, the bundle work directory no longer uses a symlink, so task creation no longer needs administrator rights or Developer Mode. Pull request #14510
- On Windows, the sparse file attribute is now set before mkfs, so files extended with Truncate stay sparse during extent metadata writes. Pull request #14512
- On release/2.2, a registry OCI error body is now surfaced when a HEAD request is rejected with 403 Forbidden by falling back to GET. Pull request #13747
- On release/2.4, the docker remote now closes the request body when authorization fails. Pull request #14448
- On release/2.3, the docker remote now closes the request body when authorization fails. Pull request #14514
- On release/2.2, the docker remote now closes the request body when authorization fails. Pull request #14513
Why it matters
This week touches both the transfer path and the runtime path people rely on every day. Registry pulls gain an option to skip descriptor URLs along with counter and log visibility, while request bodies are now closed on authorization failures across several release branches. On the runtime side, a sandboxed runc shim that removes the pause container and pause image requirement, console handling fixes when stdin closes, and Windows fixes for bundle directories and sparse files make task creation more reliable.
Changelog entry
- Remotes/docker: add
ignore_descriptor_urlsoption to skip URLs in image descriptors during pull, with a request counter and info-level sanitized URL logging. Pull request #14401 - Introduce containerd-shim-sandboxed-runc-v2, a runc shim implementing the Sandbox API so a pod needs no pause container or pause image. Pull request #14135
- Integration: add testcase for concurrent task creation. Pull request #14516
- Shim: keep console open when stdin closes on a terminal process. Pull request #14502
- Runtime/v2: avoid symlink for bundle work dir on Windows. Pull request #14510
- Mount/manager: set sparse file attribute on Windows before mkfs. Pull request #14512
- [release/2.2] remotes: surface OCI error body on HEAD 403 via GET fallback. Pull request #13747
- [release/2.4] remotes/docker: close request body when authorization fails. Pull request #14448
- [release/2.3] remotes/docker: close request body when authorization fails. Pull request #14514
- [release/2.2] remotes/docker: close request body when authorization fails. Pull request #14513
- [release/2.0] remotes/docker: close request body when authorization fails. Pull request #14515
This week: ignore_descriptor_urls option for pulls, a sandboxed runc shim with no pause container, console kept open when stdin closes, Windows bundle and sparse file fixes, and request body cleanup on auth failures backported across releases.
This week in containerd: pulls gain an ignore_descriptor_urls option with a descriptor URL request counter and sanitized logging, and a sandboxed runc shim now implements the Sandbox API so a pod needs no pause container or pause image. Other changes keep the console open when stdin closes on a terminal process, avoid symlinks for the bundle work directory on Windows so task creation no longer needs administrator rights, and set the sparse file attribute before mkfs. The docker remote now closes request bodies on authorization failures, backported to release branches.
Week of October 26, 2026
What shipped
- The runc shim no longer holds its lock across the whole of Init.Delete and execProcess.Delete cleanup, so State RPCs are not blocked behind a slow delete and timed out by containerd. Pull request #14380
- The vendored gRPC dependency was updated to v1.85.0 to fix a transport deadlock that could stall client and server when many RPCs share one connection. Pull request #14473
- SELinux pod labels are now allocated and tracked in the CRI layer, with the sandbox controller only applying the label when needed. Pull request #14108
- The dialer now accepts AF_UNIX sockets on Windows alongside named pipes, using unix:// or unix: prefixes or a bare path. Pull request #14349
- Runtime handlers for image pulls now resolve to their configured platform and snapshotter, rejecting unknown handlers and keeping backend platform defaults. Pull request #14314
- The overlay snapshotter no longer overrides a user-configured index mount option, backported to release 2.2. Pull request #14491
- The change propagating context deadline exceeded errors was reverted so a temporarily unresponsive shim does not make Get fail or List omit tasks. Pull request #14488
- The Rust runc shim now runs in CI so problems are caught early. Pull request #14475
- NRI was updated to version 0.12.5. Pull request #14453
- The Makefile now disables legacy gRPC tracing and drops an obsolete
urfave_cli_no_docsbuild tag, reducing binary sizes. Pull request #14468
Why it matters
This week improves container runtime reliability and Windows networking support, tightens CRI ownership of SELinux labels and runtime handler resolution, and fixes dependency and snapshotter issues across maintained branches. Users get fixes for lock contention and deadlocks that could cause timeouts or stalls, along with corrected overlay mount behavior on release branches.
Changelog entry
- Runc-shim: State no longer blocks on an in-flight Delete holding the lock. Pull request #14380
- Runc-shim: backported the State/Delete fix to release/2.4. Pull request #14484
- Vendor google.golang.org/grpc v1.85.0 to fix a transport deadlock. Pull request #14473
- Backport gRPC v1.85.0 to release/2.4. Pull request #14474
- CRI: allocate the pod SELinux label in the CRI layer. Pull request #14108
- Dialer: support AF_UNIX sockets on Windows. Pull request #14349
- CRI: resolve runtime handlers for image pulls. Pull request #14314
- Overlay: do not override a configured index mount option (release/2.2). Pull request #14491
- Overlay: do not override a configured index mount option (release/2.0). Pull request #14490
- Overlay: do not override a configured index mount option (release/2.3). Pull request #14492
- Revert propagation of context deadline exceeded errors. Pull request #14488
- Add the Rust runc shim to CI. Pull request #14475
Weekly digest: runc shim no longer blocks State on in-flight Delete, gRPC updated to v1.85.0 to fix a transport deadlock, SELinux pod labels allocated in the CRI layer, AF_UNIX socket support on Windows, and overlay no longer overrides a configured index mount option.
This week in containerd: the runc shim no longer holds its lock across full Delete cleanup, so State calls are not blocked behind slow deletes. The vendored gRPC is updated to v1.85.0 to fix a transport deadlock under concurrent RPCs. SELinux pod labels are now allocated and tracked in the CRI layer, and runtime handlers for image pulls resolve to their configured platform and snapshotter. The overlay snapshotter no longer overrides a user-configured index mount option, backported across release branches. The dialer now accepts AF_UNIX sockets on Windows next to named pipes, the Rust runc shim runs in CI, NRI is updated to 0.12.5, and legacy gRPC tracing is disabled in the Makefile.
Week of October 19, 2026
What shipped
- Runhcs was updated to v0.15.0 on main. Pull request #14441
- The runhcs v0.15.0 update was backported to release/2.4. Pull request #14450
- The runhcs v0.15.0 update was backported to release/2.3. Pull request #14451
- Go was updated to 1.27.3, which includes a crypto/x509 security fix blocking trust in a small set of intermediate certificates. Pull request #14439
- The Go 1.27.3 / 1.26.10 update, including the crypto/x509 security fix, was backported to release/2.4. Pull request #14440
- The Docker remote pusher now closes the upload request body when authorization fails. Pull request #14360
- Core/content Copy again accepts -1 as an unknown size. Pull request #14381
- The core/content Copy fix for -1 as unknown size was backported to release/2.4. Pull request #14435
- The core/content Copy fix for -1 as unknown size was backported to release/2.3. Pull request #14434
- CRI now records pull progress on request events, so responses with empty bodies and quick active-request changes are captured. Pull request #14391
Why it matters
This week brings a security-related Go update to both main and release/2.4, plus runhcs v0.15.0 across main and the 2.3 and 2.4 branches. Several fixes also land in the releases people run: the Docker pusher body leak on authorization failure, the Copy handling of unknown sizes, and CRI pull progress reporting. Upgrade test coverage was adjusted so the 2.3 and 2.4 branches test the upgrades the release documentation promises.
Changelog entry
- Update runhcs to v0.15.0. Pull request #14441
- [release/2.4] Update runhcs to v0.15.0. Pull request #14450
- [release/2.3] Update runhcs to v0.15.0. Pull request #14451
- Update to go1.27.3, including a crypto/x509 security fix. Pull request #14439
- [release/2.4] Update to Go 1.27.3 / 1.26.10. Pull request #14440
- [release/2.3] Keep the go.mod patch version at the lowest possible. Pull request #14377
- Remotes/docker: close the request body when authorization fails. Pull request #14360
- Core/content: Copy: restore support for -1 as unknown size. Pull request #14381
- [release/2.4] core/content: Copy: restore support for -1 as unknown size. Pull request #14435
- [release/2.3] core/content: Copy: restore support for -1 as unknown size. Pull request #14434
- Cri: record pull progress on request events. Pull request #14391
- [release/2.4] cri: record pull progress on request events. Pull request #14428
This week: Go 1.27.3 with a crypto/x509 security fix on main and release/2.4, runhcs v0.15.0, a Docker pusher body leak fix, Copy accepting -1 as unknown size, and CRI pull progress on request events.
This week in Containerd: Go was updated to 1.27.3, which carries a crypto/x509 security fix, and the update reached release/2.4. runhcs moved to v0.15.0 on main and was backported to the 2.3 and 2.4 branches. The Docker remote pusher now closes the upload request body when authorization fails, fixing a leak when authorization does not succeed. core/content Copy again supports -1 as an unknown size, backported to 2.3 and 2.4. CRI records pull progress on request events so empty-body responses and brief active-request changes are observed. Upgrade tests were adjusted on 2.3 and 2.4, and flaky CI and documentation anchors were fixed.
Week of October 12, 2026
What shipped
- Containerd 2.3.7 was released with fixes, updates and security patches including CVE-2026-95839. Release
- Containerd 2.2.10 was released with fixes, updates and security patches including CVE-2026-95839. Release
- Containerd 2.4.2 was released with fixes, updates and security patches, including hardening for CRI. Release
- Erofs snapshotter gained an
fsync_on_commitoption, off by default, that fsyncs layer content before commit to avoid corrupt blobs or missing directories after a power loss during or after a pull. Pull request #14334 - Runc-v2 now releases terminal I/O when a terminal process is deleted instead of skipping the release and keeping the pty master held by the shim. Pull request #14312
- The
runtime_platformsmigration in cri/images was fixed for release 2.4 after the old per-runtime snapshotter key caused the migration to produce no results. Pull request #14400 - Fixes for nil spec and runtime options flakes, such as NRI validation timing and flaky type-URL lookups, were applied to release 2.4. Pull request #14399
- VM scripts now mask systemd-tmpfiles-clean.timer, which could delete empty directories under containerd's root during integration test layer extraction. Pull request #14321
- Golang.org/x/net was vendored at v0.60.0, bringing security fixes also present in go1.27.2 and go1.26.9. Pull request #14351
- Integration test buckets for gVisor runsc were added with installation, runtime configuration, cgroup reporting, cleanup and skips for unsupported tests. Pull request #14131
Why it matters
This week brought patch releases on the 2.2, 2.3 and 2.4 lines with security patches, so users on multiple release branches have updated builds to move to. Alongside them came fixes for erofs layer durability, terminal I/O cleanup on delete, and test flakes that affect reliability of the CRI and gVisor coverage.
Changelog entry
- Release containerd 2.3.7 with fixes, updates and security patches. Release
- Release containerd 2.2.10 with fixes, updates and security patches. Release
- Release containerd 2.4.2 with fixes, updates and security patches. Release
- Erofs: add
fsync_on_commitoption, off by default, to sync a layer before committing its snapshot. Pull request #14334 - Erofs: trim comments added with
fsync_on_commit. Pull request #14378 - Runc-v2: release terminal I/O when a terminal process is deleted. Pull request #14312
- Cri/images: fix
runtime_platformsmigration for release 2.4. Pull request #14400 - Fix nil config flakes for spec and runtime options in release 2.4. Pull request #14399
- Vendor golang.org/x/net v0.60.0 with security fixes. Pull request #14351
- Vendor github.com/Microsoft/go-winio v0.6.3. Pull request #14254
- Script/vm: mask systemd-tmpfiles-clean.timer in VM setups. Pull request #14321
- Add integration test buckets for gVisor runsc. Pull request #14131
Three patch releases shipped this week: 2.2.10, 2.3.7 and 2.4.2, all with security patches. Also in: an opt-in erofs fsync_on_commit option, terminal I/O released on delete for runc-v2, a runtime_platforms migration fix in CRI, and gVisor runsc integration buckets.
This week containerd shipped patch releases on three lines: 2.2.10, 2.3.7 and 2.4.2, each containing fixes, updates and security patches including CVE-2026-95839. Work also landed on layer durability for the erofs snapshotter: a new fsync_on_commit option, off by default, fsyncs a layer before its snapshot is committed so a power loss during or shortly after a pull cannot leave corrupt blobs or missing directories. The runc-v2 shim now releases terminal I/O when a terminal process is deleted, the CRI runtime_platforms migration was fixed for release 2.4, and integration buckets for gVisor runsc were added along with fixes for nil spec and runtime option test flakes.
Week of October 5, 2026
What shipped
- CRI no longer follows symlinks for container log files. Pull request #14293
- CRI PullImage now rejects requests with an unknown runtime handler. Pull request #14255
- Multipart image fetch gained stability fixes that avoid hangs and data corruption. Pull request #14316
- Integration test TestContainerExecLargeOutputWithTTY was fixed in the release/2.2 branch. Pull request #14307
- Integration test TestContainerExecLargeOutputWithTTY was fixed in the release/2.3 branch. Pull request #14306
- Integration test TestContainerExecLargeOutputWithTTY was fixed in the release/2.0 branch. Pull request #14308
- The critest OOMKilled testcase is skipped for systemd cgroup in the release/2.0 branch. Pull request #14320
- The critest OOMKilled testcase is skipped for systemd cgroup in the release/2.2 branch. Pull request #14319
- A planned release date was added for version 2.5. Pull request #14323
Why it matters
This week brings security hardening to how container log files are read, plus stricter validation of runtime handlers in image pulls. Multipart image fetch also becomes more reliable, reducing hangs and data corruption for users pulling images. Several fixes were backported across the 2.0, 2.2 and 2.3 branches so older releases benefit too.
Changelog entry
- Cri: do not follow log file symlinks Pull request #14293
- Cri: do not follow log file symlinks (release/2.4 backport) Pull request #14302
- Cri: do not follow log file symlinks (release/2.2 backport) Pull request #14300
- Cri: do not follow log file symlinks (release/2.0 backport) Pull request #14299
- Cri: do not follow log file symlinks (release/2.3 backport) Pull request #14301
- Cri: reject unknown runtime handler in PullImage Pull request #14255
- Avoid hang and data corruption during multipart image fetch (release/2.2 backport) Pull request #14316
- Integration/client: fix TestContainerExecLargeOutputWithTTY (release/2.2 backport) Pull request #14307
- Integration/client: fix TestContainerExecLargeOutputWithTTY (release/2.3 backport) Pull request #14306
- Integration/client: fix TestContainerExecLargeOutputWithTTY (release/2.0 backport) Pull request #14308
- Skip critest OOMKilled testcase for systemd cgroup (release/2.0 backport) Pull request #14320
- Skip critest OOMKilled testcase for systemd cgroup (release/2.2 backport) Pull request #14319
CRI stops following symlinks for container log files. Unknown runtime handlers in PullImage are now rejected. Multipart image fetch gets stability fixes against hangs and corruption. Test fixes backported to 2.0, 2.2 and 2.3.
This week in containerd: container log files are no longer read through symlinks, hardening against link-based log access. CRI PullImage now rejects unknown runtime handlers, matching the configured handlers in the runtime service; an empty handler still behaves as before. Multipart image fetch received stability fixes that avoid hangs and data corruption. Integration test fixes for TestContainerExecLargeOutputWithTTY landed in the 2.0, 2.2 and 2.3 branches, and the critest OOMKilled testcase is skipped for systemd cgroup in 2.0 and 2.2. A planned date was added for release 2.5.
Week of September 28, 2026
What shipped
- Minimum Go version bumped to 1.27.0 to align with Kubernetes 1.38 requirements. Pull request #14268
- Fixed reference parser to reject.. path components that could rewrite the host portion of image references. Pull request #13781
- Seccomp default profile now uses an allow-list for socket domains instead of open-ended range checks, blocking AF_ALG and AF_VSOCK. Pull request #14245
- Proxy snapshotter now supports optional
default_timeoutconfiguration for gRPC method calls. Pull request #14187 - AppArmor default container profile now denies AF_ALG and AF_VSOCK sockets. Pull request #14258
- Release documentation updated to reflect 1.7 end of life status. Pull request #14272
- EROFS documentation corrected to reflect removal of symlinks from cache implementation. Pull request #14273
- Release 2.3 branch updated with runc binary v1.5.2. Pull request #14240
- Release 2.4 branch updated with runc binary v1.5.2. Pull request #14241
Why it matters
This week includes important security fixes backported across multiple release branches, including stricter reference parsing and seccomp socket domain handling. The minimum Go version requirement update prepares for Kubernetes 1.38 compatibility. Configuration improvements like proxy snapshotter timeouts address operational stability concerns.
Changelog entry
- Go minimum version bumped to 1.27.0 for Kubernetes 1.38 alignment Pull request #14268
- Reference parser rejects.. path components that could rewrite host Pull request #13781
- Seccomp profile uses explicit allow-list for socket address families Pull request #14245
- Proxy snapshotter supports optional
default_timeoutconfiguration Pull request #14187 - AppArmor profile denies AF_ALG and AF_VSOCK sockets Pull request #14258
- EROFS documentation updated for symlink removal Pull request #14273
- Release 2.4 backport: reference parser security fix Pull request #14282
- Release 2.3 backport: reference parser security fix Pull request #14281
- Release 2.2 backport: reference parser security fix Pull request #14280
- Release 2.3 vendor update: google.golang.org/grpc v1.83.2 Pull request #14263
This week: Go 1.27.0 minimum for K8s 1.38 compatibility, reference parser security fix, stricter seccomp socket rules, and proxy snapshotter timeouts across multiple releases.
Containerd this week shipped security and compatibility improvements across releases. Go minimum version bumped to 1.27.0 for Kubernetes 1.38 support. Reference parser now properly rejects path traversal attempts in image references. Seccomp profile switched to explicit socket domain allow-listing. Proxy snapshotter gains configurable timeout support for improved stability.
Week of September 21, 2026
What shipped
- Containerd 1.7.36 released with security patch CVE-2026-53493 and various fixes including image storage improvements. Release
- Containerd 2.4.1 released with security patch CVE-2026-53493 and CRI fixes including task leak prevention during failed container starts. Release
- Containerd 2.2.9 released with security patch CVE-2026-53493 and CRI fix for SELinux relabeling failures. Release
- Containerd 2.3.6 released with security patch CVE-2026-53493 and CRI fix for SELinux relabeling failures. Release
- Containerd 2.0.13 released with security patch CVE-2026-53493 and image storage improvements. Release
- Runc updated to v1.5.2 with workaround for Linux kernel cgroup v2 bug and regression fixes including HOME environment variable handling. Pull request #14231
- Fixed task leak in CRI when StartContainer cleanup fails to delete task, preventing container removal. Pull request #14218
- Fixed ctr images export command to preserve arguments following dash separator. Pull request #14217
- Fixed flag parsing issues in ctr run, containers create, tasks exec, and oci-hook commands. Pull request #14209
- Applied hardening to filter ID-mapping labels from image annotations during unpack to prevent snapshotter privilege escalation. Pull request #13855
Why it matters
This week delivered five patch releases across active containerd versions addressing a security vulnerability and several resource leaks and command-line parsing bugs. These fixes improve reliability in container runtime operations and address issues affecting CRI, image storage, and command-line tool behavior.
Changelog entry
- Runc binary updated to v1.5.2 with Linux kernel cgroup v2 bug workaround and regression fixes Pull request #14231
- Add conditional GitHub Actions to skip certain CI checks for private security patch validation forks Pull request #14232
- Fix resource leak when StartContainer cleanup fails to delete task in CRI Pull request #14218
- Preserve arguments after dash in ctr images export command Pull request #14217
- Fix flag parsing in ctr run, containers create, tasks exec, and oci-hook Pull request #14209
- Use stable service name containerd-shim-runc-v2 in OpenTelemetry instrumentation Pull request #14201
- Tolerate wrapped ENOTSUP errors during SELinux relabeling on unsupported filesystems in CRI Pull request #14207
- Filter ID-mapping labels from image annotations during unpack to prevent privilege escalation Pull request #13855
Containerd patch releases: 1.7.36, 2.0.13, 2.2.9, 2.3.6, 2.4.1. Security fix CVE-2026-53493 and CRI/image storage improvements.
We released patch updates across containerd versions 1.7.36, 2.0.13, 2.2.9, 2.3.6, and 2.4.1 this week. These releases address security concern CVE-2026-53493 alongside important fixes for task leaks during failed container starts, SELinux relabeling failures, image layer fetching, and command-line argument parsing. runc was also updated to v1.5.2 with a kernel bug workaround.
Week of September 14, 2026
What shipped
- Containerd 2.4.0 released as a regular non-LTS release with a shorter support window for users who want to adopt new features sooner. Release
- Containerd API 1.12.0 released, aligning with containerd 2.4 and including media type in content create events and UpdateSandbox RPC for sandbox controller updates. Release
- Fixed content upload failures when retrying fetch content after reaching EOF in release/2.4 branch. Pull request #14197
- Fixed bug in ctr subcommands where comma-separated flag values were incorrectly split in release/2.4 branch. Pull request #14188
- Masked /proc/interrupts and /sys/devices/system/cpu thermal throttle inside Linux containers by default across release/1.7, /2.0, /2.2, and /2.3 branches. Pull request #14184
- Updated fxamacker/cbor dependency to v2.9.4 which fixes various potential panics. Pull request #14174
- Removed deprecated CRI and tracing configuration options including
enable_cdi,bin_dir, and OTLP endpoint parameters. Pull request #14166 - Fixed urfave/cli/v3 migration issue where child commands no longer inherited DisableSliceFlagSeparator from root command. Pull request #14185
- Fixed unpacking to fetch layers of every config-sharing manifest in an index to support manifests with identical configs but different compression. Pull request #14142
Why it matters
Containerd 2.4.0 is now available as a regular release focused on new features following the 2.3 LTS. The API 1.12.0 release adds sandbox controller updates and media type tracking. Multiple bug fixes address registry uploads, CLI flag handling, and container isolation.
Changelog entry
- Containerd 2.4.0 released Release
- Containerd API 1.12.0 released Release
- Reverted closing fetch readers at EOF to restore registry-cache upload retries Pull request #14194
- Fixed ctr subcommands to disable slice flag separator on urfave/cli/v3 Pull request #14185
- Masked /proc/interrupts and /sys/devices/system/cpu thermal throttle in containers Pull request #14184
- Updated fxamacker/cbor to v2.9.4 to fix potential panics Pull request #14174
- Removed deprecated
enable_cdi,bin_dir, and OTLP tracing configuration options Pull request #14166 - Fixed unpacking to fetch layers from config-sharing manifests in indices Pull request #14142
Containerd 2.4.0 and API 1.12.0 are now available. This non-LTS release includes bug fixes for registry uploads, CLI flags, and container isolation. See release notes for full details.
Containerd 2.4.0 and API 1.12.0 releases are now available. As a regular non-LTS release, 2.4.0 introduces new features with a shorter support window for early adopters. Key fixes include content upload retry handling, CLI flag parsing in subcommands, and default masking of thermal interrupt information in containers. The API release adds sandbox controller update propagation and media type tracking in content events.