# Keras v3.15.1 — Keras 3.15.1 - Product: Keras (https://whatsnew.fyi/product/keras) - Vendor: Keras - Date: 2026-07-29 - Version: v3.15.1 - Original notes: https://github.com/keras-team/keras/releases/tag/v3.15.1 - Permalink: https://whatsnew.fyi/product/keras/releases/v3.15.1 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **security** — Restrict unpickling when loading IMDB and Reuters datasets by replacing bare np.load(allow_pickle=True) with a restricted unpickler that only permits numpy array reconstruction - **security** — Verify all intermediary H5 groups when navigating H5 files by manually resolving nested H5 group paths to verify group types at each step - **security** — Reject decompression-bomb members on the .keras asset extraction path by adding per-member decompression-ratio checks before extracting archives to disk - **security** — Restrict unpickling when loading CIFAR datasets by replacing bare cPickle.load in CIFAR-10/100 batch loading with the numpy-only RestrictedUnpickler - **fixed** — Improve model loading efficiency by capturing the weight store into a local variable and enhance nested container detection in legacy files with isolated failure tracking - **fixed** — Fix TraceContext errors when using JAX NNX backend with models like T5 that lack a build method by skipping trace-level checks during symbolic shape inference and handling Flax 0.12 API changes - **fixed** — Resolve NotImplementedError boolean coercion changes in Python 3.14 and fix dimension filtering in shape utilities #### Release Notes Keras 3.15.1 is a patch release containing important security hardening, bug fixes, and Python 3.14 compatibility improvements. ##### Security Fixes * **Restrict unpickling when loading IMDB and Reuters datasets** — Prevents insecure deserialization (CWE-502) by replacing bare `np.load(allow_pickle=True)` with a restricted unpickler that only permits numpy array reconstruction. ([#23047](https://github.com/keras-team/keras/pull/23047)) by @LinZiyuu * **Verify all intermediary H5 groups when navigating H5 files** — Manually resolves nested H5 group paths to verify group types at each step, preventing potential path traversal issues. ([#23168](https://github.com/keras-team/keras/pull/23168)) by @hertschuh * **Reject decompression-bomb members on the `.keras` asset extraction path** — Adds per-member decompression-ratio checks before extracting `.keras` archives to disk, preventing disk-exhaustion attacks via crafted archives. ([#23101](https://github.com/keras-team/keras/pull/23101)) by @LinZiyuu * **Restrict unpickling when loading CIFAR datasets** — Replaces bare `cPickle.load` in CIFAR-10/100 batch loading with the numpy-only `RestrictedUnpickler`, blocking arbitrary code execution via pickle gadgets. ([#23252](https://github.com/keras-team/keras/pull/23252)) by @SABITHSAHEB ##### Bug Fixes * **Refactor `_load_state` to capture weight store while preserving Keras test passing** — Improves model loading efficiency by capturing the weight store into a local variable, and enhances nested container detection in legacy files with isolated failure tracking. ([#23226](https://github.com/keras-team/keras/pull/23226)) by @buildwithsuhana * **Fix TraceContext error for NNX backend** — Fixes `TraceContext` errors when using JAX NNX backend with models like T5 that lack a `build` method. Skips trace-level checks during symbolic shape inference and handles Flax 0.12 API changes. Fixes [#23289](https://github.com/keras-team/keras/issues/23289). ([#23326](https://github.com/keras-team/keras/pull/23326)) by @divyashreepathihalli ##### Compatibility * **Fixes for Python 3.14** — Resolves `NotImplementedError` boolean coercion changes in Python 3.14 and fixes dimension filtering in shape utilities. ([#23259](https://github.com/keras-team/keras/pull/23259)) by @hertschuh --- ##### Contributors Thank you to all the contributors who made this release possible! 🎉 * @LinZiyuu — Security hardening for IMDB, Reuters, and `.keras` asset extraction ([#23047](https://github.com/keras-team/keras/pull/23047), [#23101](https://github.com/keras-team/keras/pull/23101)) * @hertschuh — H5 group verification, Python 3.14 compatibility ([#23168](https://github.com/keras-team/keras/pull/23168), [#23259](https://github.com/keras-team/keras/pull/23259)) * @buildwithsuhana — Model loading refactor ([#23226](https://github.com/keras-team/keras/pull/23226)) * @SABITHSAHEB — CIFAR dataset pickle restriction ([#23252](https://github.com/keras-team/keras/pull/23252)) * @divyashreepathihalli — NNX backend TraceContext fix ([#23326](https://github.com/keras-team/keras/pull/23326)) --- **Full Changelog**: https://github.com/keras-team/keras/compare/v3.15.0...v3.15.1