Juju 4.0.14ยถ

๐Ÿ—“๏ธ 18 Aug 2026

This is a cumulative bug fix release for Juju 4.0, covering changes from 4.0.12 to 4.0.14.

๐ŸŽฏ Highlightsยถ

  • Model migration and CMR are more reliable: Juju now validates imported models before activation, implements source-side cleanup and login redirection, and handles leadership, log transfer, synthetic remote units, offers, and relation teardown more consistently.

  • Secret handling is more consistent under hooks: secret creation and relation grants are committed atomically with other hook changes, including when Kubernetes secret backend RBAC is enabled.

  • Deployment and operator workflows are more predictable: fixes cover charm and model type mismatches, action metadata, zone placement, machine constraints, model defaults, status filtering, and machine removal.

  • Bootstrap and provider reliability improves: fixes apply proxy settings earlier, retry transient Kubernetes failures, improve S3 signing, and make MAAS, OpenStack Cinder, and controller address cleanup safer.

Full cumulative list of changes: https://github.com/juju/juju/compare/v4.0.12โ€ฆv4.0.14

๐Ÿ› ๏ธ Fixesยถ

๐Ÿ”’ Security and dependency maintenanceยถ

Go and cryptography dependencies were updated to address GO-2026-4550 and GO-2026-5856, including replacement of the deprecated OpenPGP package.

๐Ÿ” Migration and CMR correctnessยถ

This release implements target-side validation and source-side cleanup, and fixes several migration and cross-model relation (CMR) correctness issues. Validation covers secret backends and references, relation-unit consistency, cloud credential reachability, and agent binary availability. A failure leaves the imported model gated and abortable.

These changes harden specific migration phases and prechecks. They do not establish complete end-to-end validation of every migration scenario. Migration from a 4.0 controller to another 4.0 controller remains unsupported.

Redeploying a bundle with an unchanged offer now succeeds, but changing an existing offer remains unsupported.

๐Ÿ” Secrets and transaction consistencyยถ

Secret creation and grants made by charms are now coordinated with the rest of a hookโ€™s committed changes. Server-side secret ID reservations also allow Kubernetes backend RBAC to authorize new charm secrets without allowing units to claim arbitrary IDs.

๐Ÿงญ Deployment, actions, constraints, and statusยถ

Deployment and lifecycle operations now report invalid charm and model combinations earlier, make action metadata available during deployment, and retain the settings required for subsequent provisioning and automation. Kubernetes charms deployed to machine models are rejected unless --force is used, while machine charms deployed to Kubernetes models produce a warning. Bundle deployments are not covered by this mismatch check.

๐Ÿ—ƒ๏ธ Providers, Kubernetes, networking, and object storageยถ

Controller proxy settings are now applied before bootstrap makes outbound requests. Kubernetes deployment retries transient proxy failures and pod loss, while provider fixes improve MAAS VM ownership, OpenStack Cinder cleanup, and controller API address selection.

S3 signing regions are derived from common AWS endpoint forms. The optional object-store-s3-region controller setting takes precedence. If no region can be derived for an object store using static credentials, Juju uses a placeholder signing region and logs a warning; S3-compatible stores that validate the region should set it explicitly.

๐Ÿงฑ Agent, API, and workload behaviorยถ

Pebble polling now includes notices created by non-root workload users, so charms receive the corresponding pebble-custom-notice hooks. The Juju client also reports its version on the main API WebSocket connection, giving JIMM the metadata needed to apply compatibility rules in mixed controller fleets. Juju controllers themselves currently ignore this header.

๐Ÿ“˜ Documentationยถ

Documentation updates add user-secret lifecycle guidance and improve command examples, limits, cloud references, controller configuration details, and tutorial links.

๐Ÿ“˜ Summaryยถ

4.0.14 is a cumulative reliability patch release. It hardens specific model migration and CMR phases, makes hook-driven secret changes more atomic, improves deployment and status workflows, and strengthens bootstrap, Kubernetes, S3, MAAS, OpenStack, networking, and workload behavior since 4.0.12.