The immutable Linux meta-distribution for edge Kubernetes
v4.5.0
Version bump: minor (from v4.4.0)
- patch: ci: cut a release from green master every Monday (#6075) (d9db631)
- patch: chore(deps): roll up pending Renovate updates (#6078) (d533833)
- patch: fix(agent): rank a git-describe KAIROS_INIT_VERSION after its tag (#5594) (3674abc)
- patch: fix(deps): bump Go to 1.27.4 for GO-2026-6859 (#6080) (0d3616c)
- patch: fix(agent): unmount the downloaded ISO before removing its temp dir (#5904) (fa68014)
- patch: chore(deps): update AuroraBoot to v0.30.0 (#6065) (6b7191e)
- patch: fix(kcrypt): move kube-rbac-proxy sidecar to upstream image (#6049) (0d0b51b)
- patch: ci: check that pull request titles are Conventional Commits (#6050) (74f64dd)
- patch: fix(upgrade): read --exclude-path the same way for every source type (#6047) (1573430)
- patch: docs(agent): name install.encrypted_partitions in the install config guide (#5871) (2a91198)
- patch: fix(kairos-init): put run-stage flags before the stage name in datasource (#5939) (8498373)
- patch: fix(kcrypt): show the passphrase prompt on a Trusted Boot boot (#6024) (fc0acbb)
- patch: chore(deps): roll up pending CI action and zizmor updates (#6030) (33f1743)
- patch: fix(ci): re-date the osv ignores that expired on 2026-11-10 (#6039) (f35a874)
- patch: fix(versioneer): sort the os-release variables so the output is stable (#6042) (4d50b4e)
- patch: fix(release-notes): put the kairos-diff fallback reason on its own line (#6013) (3d25fe7)
- patch: fix(tests): require a Ready node row in the provider e2e waits (#6000) (e31d86c)
- patch: fix(upgrade): read the node's files correctly when upgrading from Kubernetes (#6035) (29ad93d)
- patch: fix(upgrade): refresh the grub.cfg on the state partition with the ESP (#6028) (5c9d963)
- patch: fix(immucore): encrypt pending partitions on an in-RAM boot too (#5411) (3a8d145)
- patch: fix(immucore): free the UKI initramfs after copying it to the sysroot (#6023) (d208e2a)
- minor: feat(kcrypt): unlock with a passphrase typed at boot (#6022) (1272743)
- patch: ci(pr): run the PR pipeline on docs-only changes too (#6002) (293018a)
- patch: chore(deps): roll up pending Renovate updates (#5995) (665db8d)
- patch: refactor: one retry helper instead of 10 hand-rolled backoff loops (#4549) (5120df4)
- patch: fix(immucore): drop /sysroot from overlay dirs in the fstab entry (#5950) (307f2c6)
- patch: fix(immucore): run cmdline yip stages with the immucore console (#5979) (00383fc)
- patch: fix(ci): check for an existing onboarding issue per role (#5948) (7989010)
- patch: fix(ci): parse the factory base_image tag per path component (#5945) (cd86811)
- patch: fix(immucore): strip the port from networkd DNS servers (#5972) (9691624)
- patch: fix(kairos-init): validate sees a unit masked in /etc or /run (#5976) (22dfcf9)
- patch: fix(kairos-init): dry-run no longer needs an installed kernel (#5981) (62c4c12)
- patch: fix(schema): anchor the users[].name pattern (#5964) (876445b)
- patch: fix(install): reject an unparsable install.source (#5954) (1e4459a)
- patch: fix(sdk): OSRelease reads only the file it is given (#5962) (f9ffa3a)
- patch: fix(uki): emit install progress steps (#5968) (0599d5c)
- patch: fix(provider): reject a role set call with missing arguments or an unknown role (#5975) (f8b891a)
- patch: ci: add a qa-gate check that requires the QA: pass label (#5983) (91986ec)
- patch: fix(provider): register stops when the --config file cannot be read (#5974) (bacd178)
- patch: fix(agent): phone-home uninstall strips every cloud-config the boot scan reads (#5895) (a0981f5)
- patch: fix(agent): install a sysext path or URI without fetching the catalog (#5897) (37e9861)
- patch: chore(deps): roll up pending Renovate updates (#5919) (b03ac8f)
- patch: fix(provider): reject a non-positive or non-numeric token interval (#5931) (9d80850)
- patch: fix(schema): declare kubevip.manifest_sha256 (#5933) (c005c19)
- patch: fix(kcrypt): route the escrow Service to the manager pod (#5934) (c22f49f)
- patch: fix(kairos-init): repeated --skip-step adds to the skipped steps (#5936) (293818d)
- patch: fix(kcrypt): keep the TOFU Secret partition label a valid label value (#5941) (62a14b4)
- patch: fix(provider): wait for a usable node IP on the LAN path (#5932) (6687828)
- patch: ci: run the PR smoke and CodeQL on merge queue branches (#5977) (6e79a4c)
- patch: fix(kairos-init): chown home dirs to the user's primary gid (#5903) (dc32ce4)
- patch: fix(collector): return the error from a malformed Overwrites (#5853) (b17638d)
- patch: fix(agent): record the reset state file on the persistent partition (#5870) (f6e0d93)
- patch: chore(agent): remove the Makefile whose e2e targets point at a deleted directory (#5872) (37df61d)
- patch: ci(zizmor): also run on changes to linting-composite-action (#5868) (bc340cd)
- patch: fix(agent): don't truncate a sysext installed from the extensions dir itself (#5893) (5c2e63c)
- patch: fix(kcrypt): report the challenger error sent in place of a challenge (#5894) (8618302)
- patch: fix(sdk): apply group, xattrs and mtime when extracting a sysext layer (#5898) (126002d)
- patch: chore(agent): remove the goreleaser and codecov configs nothing runs (#5899) (e6478e7)
- patch: fix(immucore): refuse a bind mount onto a symlink instead of following it (#4901) (b6c45e9)
- patch: fix(kcrypt): reach an mDNS challenger that only answers on IPv6 (#5896) (07781a1)
- patch: chore: move the kairos CLIs from urfave/cli to cobra (#5900) (7738742)
- patch: fix(immucore): run udevadm trigger after LVM activation (#5636) (3879a87)
- patch: fix(immucore): let the boot-failure banner outlive the unit stop timeout (#5145) (b758c1e)
- patch: fix(immucore): guard the recorded fstab entries with a mutex (#5789) (bfea6ca)
- patch: fix(immucore): keep custom mounts whose device path has a colon (#5828) (bf45ae8)
- patch: fix(agent): refuse a docker save archive built for another platform (#5877) (f796478)
- patch: fix(immucore): mount the /run/overlay tmpfs 0755 with nosuid,nodev (#5867) (80d6693)
- patch: fix(sysext): return layer errors instead of panicking (#5846) (2201daa)
- patch: fix(sysext): skip OCI whiteout markers when extracting the last layer (#5860) (eb2d37a)
- patch: fix(agent): report a phonehome config parse error in phone-home (#5848) (6e9c33a)
- patch: fix(kairos-init): skip the provider info hook on --dry-run (#5859) (e7ab5ee)
- patch: fix(tests): expect the 32-character TOFU names the challenger now creates (#5842) (1643e12)
- patch: fix(kcrypt): stop TOFU names colliding on the first 8 hash chars (#5755) (190426f)
- patch: fix(phonehome): fall back to the default for a negative heartbeat or backoff (#5788) (4b89cd5)
- patch: fix(tests): stop shadowing installOutput in upgrade-latest-with-cli (#5766) (8cbfdee)
- patch: fix(agent): skip releases with a null or non-semver name in FindReleases (#5764) (79b0d63)
- patch: fix(kcrypt): keep re-querying mDNS for the whole MDNSTimeout (#5761) (86bf730)
- patch: fix(images): default KAIROS_INIT to v4.4.0 and let renovate bump it (#5765) (7ff4e46)
- patch: fix(sdk): compare the Authenticode digest with the PE hash when verifying signatures (#5799) (a8561e2)
- patch: fix(agent): time out stalled downloads, not slow ones (#5800) (050a876)
- patch: fix(collector): let the later scalar win when kinds differ (#5801) (f4a24e8)
- patch: fix(examples): comment out the github SSH key in worker.yaml (#5762) (071c7be)
- patch: fix(agent): stop UKI upgrade panicking when no source is given (#5689) (b738859)
- patch: fix(immucore): strip only the leading /sysroot when writing fstab (#5635) (be39197)
- patch: fix(agent): deprecate the no-op start --force flag (#5634) (8f1dcf0)
- patch: fix(upgrade): run recovery finalize on the unpacked squashfs tree (#5633) (3b0ade9)
- patch: fix(agent): treat a bare install key as an empty install block (#5621) (78edb28)
- patch: fix(agent): exit on SIGINT and SIGTERM during an install (#5622) (324e2c9)
- patch: fix(sdk): reload systemd after OverrideCmd writes the drop-in (#5614) (100c7de)
- patch: fix(machine): keep backslashes and lone apostrophes in the kernel cmdline (#5610) (2c0d032)
- patch: fix(edit-config): keep the working copy out of the cloud-config dir and clean up on signals (#5609) (7dfd98a)
- patch: fix(partitions): stop letting the last disk win the EFI partition lookup (#5397) (97d4217)
- patch: test(p2p): use Auto.Enabled in the unpinned role specs (#5605) (12a261a)
- patch: chore(deps): roll up pending Renovate updates (#5604) (8c5e3be)
- patch: fix(schema): declare the partition keys the installer reads (#4904) (f8b7cff)
- patch: fix(immucore): log a failed cloud-init stage instead of discarding it (#4871) (a4b63f6)
- patch: fix(cloudconfigs): stop the accounting stage chmodding a symlink's target (#4872) (7c5a84e)
- patch: fix(provider): keep the k0s join token out of a world-readable file (#4773) (5a2b773)
- patch: fix(kcrypt): ask for the Secret the operator named, not a rewritten one (#4803) (2a57fce)
- patch: fix(immucore): do not claim the root was never mounted when it was (#4814) (bd2402f)
- patch: fix(cloudconfigs): enable each sysext unit only where the image has it (#4760) (558dd74)
- patch: fix(schema): read top-level
optionsas the mapping the runtime holds (#4678) (9f794ea) - patch: fix(schema): describe the Kubernetes blocks the provider reads (#4674) (a2a7bc6)
- patch: fix(p2p): accept the documented empty role, and stop erroring on "none" (#4671) (889022d)
- patch: fix(agent): make --override-cloud-init-paths actually remove the defaults (#4666) (cac767c)
- minor: feat(schema): suggest the schema key a misspelled one meant (#5488) (d03c7aa)
- patch: fix(provider): create the k0s system users at build time (#4469) (f3a70c6)
- patch: fix(kairos-init): stop installing tmux on SUSE (#5576) (2d18642)
- patch: fix(cis): check DIL 5.3.1 pwquality instead of waiving it (#5598) (ec724c0)
- patch: fix(agent): collect the journal for the edgevpn units the p2p provider writes (#5446) (85dafe0)
- patch: fix(release-notes): skip the kairos-init Makefile when the ref has none (#5592) (8c24a22)
- patch: fix(agent): do not resume an HTTP download onto an existing file (#4604) (a6eca34)