CRI-O v1.37.0
The release notes have been generated for the commit range
v1.36.0…69e598e on Mon, 21 Sep 2026 14:10:08 UTC.
Downloads
Release Bundles
Download one of our static release bundles via our Google Cloud Bucket.
Each bundle includes a SHA-256 checksum, a cosign signature (.bundle), and a SPDX bill of materials (.spdx) with its own signature:
Supply Chain Artifacts
The OpenVEX vulnerability report:
The SLSA provenance attestation:
OCI Distribution
All release artifacts are also available as signed OCI artifacts at ghcr.io/cri-o/bundle:69e598e16a8df156e5249ad1da1d8b7ed8eac6df.
Verification
To verify the artifact signatures via cosign, run:
> export COSIGN_EXPERIMENTAL=1
> cosign verify-blob cri-o.amd64.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.tar.gz \
--certificate-identity https://github.com/cri-o/packaging/.github/workflows/obs.yml@refs/heads/main \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository cri-o/packaging \
--certificate-github-workflow-ref refs/heads/main \
--bundle cri-o.amd64.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.tar.gz.bundle
To verify the bill of materials (SBOM) in SPDX format using the bom tool, run:
> tar xfz cri-o.amd64.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.tar.gz
> bom validate -e cri-o.amd64.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.tar.gz.spdx -d cri-o
To verify the OpenVEX vulnerability report, run:
> cosign verify-blob cri-o.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.openvex.json \
--certificate-identity https://github.com/cri-o/packaging/.github/workflows/obs.yml@refs/heads/main \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository cri-o/packaging \
--certificate-github-workflow-ref refs/heads/main \
--bundle cri-o.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.openvex.json.bundle
To verify the SLSA provenance attestation, run:
> cosign verify-blob cri-o.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.provenance.json \
--certificate-identity https://github.com/cri-o/packaging/.github/workflows/obs.yml@refs/heads/main \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository cri-o/packaging \
--certificate-github-workflow-ref refs/heads/main \
--bundle cri-o.69e598e16a8df156e5249ad1da1d8b7ed8eac6df.provenance.json.bundle
Changelog since v1.36.0
Changes by Kind
Dependency-Change
- Add conmon-rs v1.0.1 support, drop backward compatibility with previous versions. (#10111, @saschagrunert)
Deprecation
- The deprecated
insecure_registries configuration option and --insecure-registry CLI flag have been removed. Use the insecure option in registries.conf instead. (#10303, @amritansh1502)
Feature
- Add
enable_cni_status_monitoring config option (default false) and
cni_status_grace_period (default 60s) to gate continuous CNI STATUS
monitoring and tolerate brief plugin disruptions during upgrades. (#9918, @tsorya)
- Add a new config field to allow node admins to only allow checkpointing, and disallowing restore. (#10248, @haircommander)
- Add btrfs storage driver support to static builds (#9993, @saschagrunert)
- Added container memory metrics
container_memory_active_anon_bytes and container_memory_inactive_anon_bytes (cgroup v1 and v2), and container_memory_anon_thp_bytes, container_memory_shmem_thp_bytes and container_memory_file_thp_bytes (cgroup v2 only). These are gated behind a new memoryExtra value for included_pod_metrics, separate from memory. (#10143, @cragr)
- Added support for per-container targeting of cpu-load-balancing.crio.io, irq-load-balancing.crio.io, and cpu-quota.crio.io annotations. A container name can be appended to the annotation key (e.g. cpu-load-balancing.crio.io/my-container: “disable”) to apply the setting to a specific container rather than all containers in the pod. Container-specific annotations take precedence over pod-level annotations when both are present. (#9989, @bartwensley)
- CRI-O now reports
runtimeFeatures.UserNamespacesHostNetwork as enabled on Linux and uses a recursively read-only /sys bind mount for containers running with both host network and user namespaces. (#9930, @HirazawaUi)
- Support for encrypted container images in Confidential Containers use case: cri-o will now ignore the container image layers, allowing the underlying Confidential Container runtime to manage the image pull management.
This makes sure that Confidential Containers can use encrypted containers without sharing the encryption key with cri-o, allowing a fully confidential use case. (#9907, @littlejawa)
- Support gVisor containerd-shim-runsc-v1 (#9974, @xw19)
Design
- Default the checkpoint_restore config field container_level_enabled to “checkpoint_only”, thus disabling restore by default. It can be turned on by setting the field to “checkpoint_restore” (#10251, @haircommander)
- Renamed –checkpoint-restore-container-level-enabled flag to –checkpoint-restore-level (#10319, @haircommander)
Documentation
- Removed incorrect deprecation notice of seccomp_profile configuration field (#9946, @EmilyShepherd)
Bug or Regression
- Added
namespace, pod, and container labels to CRI metrics (#10173, @dgrisonnet)
- CRI-O now keeps logging blocked syscalls detected by the seccomp notifier instead of only reporting the first event when the notifier action is not “stop”. (#10120, @adilGhaffarDev)
- Deduplicate concurrent image volume MountImage calls to avoid containers/storage lock serialization when many pods mount the same image volume simultaneously. (#10233, @saschagrunert)
- Fix CRI-O crash (nil pointer dereference) in ListPodSandboxStats when a container’s cgroup is cleaned up during teardown. (#10206, @dgrisonnet)
- Fix SELinux labeling so systemd/init containers receive container_init_t again instead of remaining container_t and failing to create cgroups. (#10259, @abdhikal-tech)
- Fix a bug in high performance hooks where an init container would continue to hold a cpuset that could be used by a regular container in the same pod. (#10208, @haircommander)
- Fix a latent crash in
pinns caused by a missing zero terminator on the getopt_long long options array. The crash surfaces on builds whose linker places non-zero data immediately after the array (observed with ThinLTO release builds on armv7 musl). (#9935, @cehoffman)
- Fix artifact names from externally created OCI layouts (e.g. via skopeo) being incorrectly normalized to wrong docker references. (#10192, @saschagrunert)
- Fix network metrics collection to use the pod’s network namespace. (#10204, @dgrisonnet)
- Fixed CVE-2026-15809: bypass of CVE-2022-4318 fix allowing /etc/passwd injection via newline characters in the HOME environment variable. The original check incorrectly matched the literal string “\n” instead of actual newline bytes. (#10148, @aksjadha)
- Fixed a bug where ImageRef in container status changed from a repo@digest to a raw image ID hash after CRI-O restart. (#9925, @saschagrunert)
- Fixed privileged sandboxes inheriting generate.New()’s default-deny seccomp filter when privileged_seccomp_profile is unset, so they now run unconfined as intended. (#10288, @ShravanthReddy)
- NRI container lifecycle events now correctly include the container name and pod sandbox ID. (#10117, @nispriha)
- Reduced the verbosity of debug logs for List* RPC calls to improve performance (#9919, @fmuyassarov)
- Restores pre-1.34 behavior handling envvar values containing non-utf8 data (#10176, @liggitt)
Other (Cleanup or Flake)
- CRI-O now defaults
grpc_max_send_msg_size and grpc_max_recv_msg_size to 16 MiB (previously 80 MiB), matching the receive cap kubelet and crictl set via k8s.io/cri-client. (#10284, @sohankunkerkar)
- Drop the
name label from CRI metrics (#10175, @dgrisonnet)
- Optimized environment variable merging during container creation by eliminating redundant string operations, improving container startup performance. (#9687, @ankit98040)
- Remove experimental markers from additional_artifact_stores configuration option. (#10043, @saschagrunert)
Uncategorized
- Bump Go toolchain to 1.26.4 to fix CVE-2026-27145, CVE-2026-42504, and CVE-2026-42507. (#10145, @Chandan9112)
- Bumped go.podman.io/common to v0.68.0. Because of this change, the Configuration File lookup behavior has changed. Callers of functions in this project that read configuration files should refer to https://github.com/containers/container-libs/blob/main/common/docs/containers-config.5.md for details. (#9988, @adilGhaffarDev)
- Fix user namespace mappings persistence across CRI-O restarts (#10014, @ngopalak-redhat)
- The default pause image is now registry.k8s.io/pause:3.10.2. (#10325, @dependabot[bot])
- Update gomaxprocs hook to ignore workload partitioning when considering whether to inject, as well as update the calculation to ensure containers get at least double the requested number of CPUs, to reduce potential go scheduler throttling. (#9961, @haircommander)
Dependencies
Added
- cloud.google.com/go/pubsub/v2: v2.0.0
- github.com/ThalesGroup/crypto11: v1.6.0
- github.com/apapsch/go-jsonmerge/v2: v2.0.0
- github.com/aperturerobotics/json-iterator-lite: v1.1.0
- github.com/aperturerobotics/protobuf-go-lite: v0.15.0
- github.com/aws/aws-sdk-go-v2/internal/v4a: v1.4.24
- github.com/aws/aws-sdk-go-v2/service/signin: v1.0.11
- github.com/brianvoe/gofakeit/v7: v7.12.1
- github.com/decred/dcrd/dcrec/secp256k1/v4: v4.4.0
- github.com/go-openapi/runtime/server-middleware: v0.30.0
- github.com/go-openapi/swag/jsonutils/fixtures_test: v0.28.0
- github.com/go-openapi/swag/pools: v0.28.0
- github.com/go-openapi/testify/enable/yaml/v2: v2.6.0
- github.com/go-openapi/testify/v2: v2.6.0
- github.com/google/go-github/v73: v73.0.0
- github.com/google/go-github/v88: v88.0.0
- github.com/kelseyhightower/envconfig: v1.4.0
- github.com/klauspost/cpuid/v2: v2.3.0
- github.com/lestrrat-go/blackmagic: v1.0.4
- github.com/lestrrat-go/httpcc: v1.0.1
- github.com/lestrrat-go/httprc/v3: v3.0.0
- github.com/lestrrat-go/jwx/v3: v3.0.10
- github.com/lestrrat-go/option: v1.0.1
- github.com/lestrrat-go/option/v2: v2.0.0
- github.com/moby/moby/api: v1.54.2
- github.com/moby/moby/client: v0.4.1
- github.com/moby/sys/devices: v0.1.0
- github.com/oapi-codegen/runtime: v1.6.0
- github.com/oklog/ulid/v2: v2.1.1
- github.com/pborman/getopt: 7148bc3
- github.com/segmentio/asm: v1.2.0
- github.com/sigstore/rekor-tiles/v2: v2.0.1
- github.com/sigstore/timestamp-authority/v2: v2.0.6
- github.com/tink-crypto/tink-go-awskms/v3: v3.0.0
- github.com/transparency-dev/formats: 404c0d5
- github.com/valyala/fastjson: v1.6.4
- github.com/vektah/gqlparser/v2: v2.5.30
- go.opentelemetry.io/otel/exporters/stdout/stdouttrace: v1.45.0
- pgregory.net/rapid: v1.2.0
Changed
Removed
- github.com/antihax/optional: v1.0.0
- github.com/aws/aws-sdk-go: v1.55.7
- github.com/checkpoint-restore/go-criu/v7: v7.2.0
- github.com/clipperhouse/stringish: v0.1.1
- github.com/docker/docker: v28.5.2
- github.com/docker/libtrust: aabc10e
- github.com/google/go-github/v55: v55.0.0
- github.com/google/go-github/v75: v75.0.0
- github.com/jmespath/go-jmespath: b0104c8
- github.com/moby/sys/atomicwriter: v0.1.0
- github.com/montanaflynn/stats: v0.7.1
- github.com/morikuni/aec: v1.0.0
- github.com/niemeyer/pretty: a10e7ca
- github.com/rivo/uniseg: v0.4.7
- github.com/segmentio/ksuid: v1.0.4
- github.com/sigstore/timestamp-authority: v1.2.5
- github.com/skratchdot/open-golang: eef8423
- github.com/tink-crypto/tink-go-awskms/v2: v2.1.0
- github.com/xdg-go/pbkdf2: v1.0.0
- github.com/xdg-go/scram: v1.1.2
- github.com/xdg-go/stringprep: v1.0.4
- github.com/zeebo/errs: v1.4.0