Released 2026-08-17. Hotfix on top of 2.8.0, published the same morning.
2.8.0's headline work made long agent sessions commit their cache frontier on every turn, including turns that carry images. Our release pipeline runs a correctness sentinel for exactly that surface: send a transcript with one image, then repeat the identical transcript with a different image, and require that the second request never reads cached state from past the image position. That sentinel failed on the desktop build gate.
The cause: the session frontier is keyed by token ids, and every image placeholder shares a single id, so two different images look identical to it. Once vision histories started committing, a repeated transcript with different pixels could restore the previous image's KV wholesale and answer about the wrong image.
The published PyPI wheel for 2.8.0 carried this defect for about an hour. The desktop DMG never shipped with it; the gate blocked it.
Vision conversations keep their full prompt-cache behavior through the content-keyed store introduced in 2.8.0: it derives cache keys from the actual image bytes, so identical pixels restore the whole prefix and different pixels can never match past the first image token. What changed is the raw-id session frontier: image-bearing histories no longer advance it, on any of its four write paths. Same speed for the honest case, hard stop for the aliasing one.
Five new regression tests pin the behavior, and the release gate that caught it now runs against a hermetic cache directory so a previous run's state can never mask or fake a result.
pip install -U mtplx (2.8.1)brew upgrade mtplxNothing else changed from 2.8.0; its release notes remain the reference for what is new.