JusDB
Free DB Audit
NoSQL Databases

Which Valkey Versions Are Still Patched? Support Windows and the Minimum Safe Patch

Check whether your Valkey branch still gets fixes, which patch to run on 9.1, 9.0, 8.1, 8.0, and 7.2 as of November 2026, and the advisories each patch closes.

JusDB Team
Published November 4, 2026
Updated November 10, 2026
19 min read

Valkey patches five release lines at once: 9.1, 9.0, 8.1, 8.0, and 7.2. On 26 and 27 October 2026 every one of them shipped a release marked "Upgrade urgency SECURITY" for a cluster Pub/Sub heap overflow, GHSA-f4q9-j22m-xqq9. That advisory has no CVE ID, so a scanner that matches CVEs does not flag it. The support dates differ by branch in a way that is easy to misread. Valkey 9.0 and 8.0 get no extended security window: their support simply stops in 2028 and 2027. And since September 2026, some security-relevant fixes ship as ordinary bug fixes with no advisory at all. This post gives the support window for each branch, the minimum patch to run on each as of November 2026, the advisories each floor closes, and how to roll a patch out and keep up with the next one.

TL;DR
  • As of November 2026, the minimum safe patches are 9.1.3, 9.0.7, 8.1.11, 8.0.12, and 7.2.15. Each fixes GHSA-f4q9-j22m-xqq9 and every earlier advisory on its branch.
  • Valkey 8.0 support ends on 15 September 2027 and 9.0 support ends on 21 October 2028, with no security-only period after either. 7.2, 8.1, and 9.1 get security fixes until 2029, 2030, and 2031.
  • Read valkey_version from INFO server, not redis_version, which reports 7.2.4 on every Valkey release.
  • Several ACL bypass fixes shipped as plain bug fixes, and patch releases also change behavior: strict CRLF parsing, LSET errors, and a new nodes.conf.lock file.
  • Valkey 8.0.8 was revoked. A build from that tag reports version 255.255.255; replace it with 8.0.12.

Scope and review date: November 2026. This post covers self-managed Valkey 7.2, 8.0, 8.1, 9.0, and 9.1, plus a note on the 9.2 release candidates. Dates, versions, and advisories were checked against valkey.io, the Valkey GitHub releases and security advisories, and Docker Hub on 10 November 2026. The commands were checked against the documentation and source, not run in a lab, so rehearse them on staging.


Which Valkey versions are supported, and until when?

The Valkey releases and versioning page sets two windows. Maintenance support, meaning "patch releases for bug fixes and all security fixes", lasts 3 years from a minor version's first release. Extended security support lasts 5 years, but only for the latest minor version of each major. The page adds that the project "will only patch security issues we believe to be possible to exploit", at the discretion of the Technical Steering Committee (TSC).

That second rule is why the table has two short lines. 8.1 is the last 8.x minor, so 8.0 gets no extended period. 9.0 is not the last 9.x minor, so it stops at its maintenance date.

BranchFirst releaseMaintenance endsSecurity support endsMinimum safe patchReleased
9.119 May 202619 May 202919 May 20319.1.326 October 2026
9.021 October 202521 October 202821 October 20289.0.727 October 2026
8.131 March 202531 March 202831 March 20308.1.1126 October 2026
8.015 September 202415 September 202715 September 20278.0.1226 October 2026
7.216 April 202416 April 202716 April 20297.2.1526 October 2026

Support dates come from the releases page. The patch floor is the newest release on each branch, listed on the Valkey download page and in the GitHub release notes.

What each Valkey branch receives over time

Switch dates to see which branches lose bug fixes and which lose everything

November 2026

BranchFixes received
9.1Bug and security fixes
9.0Bug and security fixes
8.1Bug and security fixes
8.0Bug and security fixes
7.2Bug and security fixes

October 2027

BranchFixes received
9.1Bug and security fixes
9.0Bug and security fixes
8.1Bug and security fixes
8.0None: support ended 15 September 2027
7.2Security fixes only, until 16 April 2029

November 2028

BranchFixes received
9.1Bug and security fixes
9.0None: support ended 21 October 2028
8.1Security fixes only, until 31 March 2030
8.0None: support ended 15 September 2027
7.2Security fixes only, until 16 April 2029

No soft landing: 8.0 and 9.0 go straight from full maintenance to no fixes. Plan their minor upgrades to 8.1 and 9.1 before those dates, not after.

Treat the 9.1 security date as provisional

The policy says the minor that gets extended security support "will be decided once the next major version has been launched". 9.2 is a 9.x minor in release candidate now. Our reading is that if 9.2 becomes the last 9.x minor, it may take the 5-year window from 9.1. Check the table again when 9.2 and 10.0 ship.

Which advisories does each patch floor close?

Every advisory published in 2026 is fixed at or below the floor on each affected branch. The matrix lists the first fixed release per branch, from the Valkey security advisories and the GitHub release notes. A dash means the advisory does not list that branch as affected.

AdvisoryIssue9.19.08.18.07.2
CVE-2025-67733RESP protocol injection through a Lua error_reply-9.0.38.1.68.0.77.2.12
CVE-2026-21863Malformed cluster bus message causes a remote crash (medium)-9.0.38.1.68.0.77.2.12
CVE-2026-27623Pre-authentication crash from a malformed request-9.0.3---
CVE-2026-23479, CVE-2026-25243, CVE-2026-23631Use-after-free in the unblock flow, invalid memory access in RESTORE, use-after-free during a full sync in a yielding script9.1.09.0.48.1.78.0.97.2.13
CVE-2026-56684TLS use-after-free reachable through CLIENT KILL; TLS only9.1.19.0.58.1.98.0.107.2.14
CVE-2026-63639Crafted stream RESTORE payload causes a use-after-free9.1.19.0.58.1.98.0.107.2.14
GHSA-jcj7-v34w-v9vvRDMA use-after-free; RDMA builds with an RDMA listener only9.1.29.0.68.1.108.0.11-
GHSA-fq2f-crmw-q97rUse-after-free of the Lua interpreter state in the script debugger9.1.2----
GHSA-f4q9-j22m-xqq9Heap overflow building cluster Pub/Sub messages over 4 GiB; cluster mode only9.1.39.0.78.1.118.0.127.2.15

Three 2026 advisories had no CVE ID on 10 November 2026: GHSA-jcj7-v34w-v9vv, GHSA-fq2f-crmw-q97r, and GHSA-f4q9-j22m-xqq9. The May CVEs have no Valkey repository advisory and appear only in release notes, and 7.2.14 lists one more zipmap RESTORE fix under CVE-2026-25243. Track by GHSA ID and release version, not by CVE alone. One small discrepancy: the CVE-2025-67733 advisory lists 9.0.2 as patched, while the fix appears in the 9.0.3 notes. The 9.0 floor covers both.

bash
# List Valkey advisories with their CVE (if any) and patched versions
gh api "repos/valkey-io/valkey/security-advisories?per_page=100" \
  --jq '.[] | [.ghsa_id, (.cve_id // "no CVE"), .severity,
              ([.vulnerabilities[].patched_versions] | join(" "))] | @tsv'

Interpretation: each line pairs a GHSA ID with its CVE, or "no CVE", and the patched versions per branch. Feed the GHSA IDs, not just CVEs, into your vulnerability tracker. On a release older than 2026, the 2025 Lua advisories (CVE-2025-49844 and three related CVEs, fixed in 8.1.4, 8.0.6, and 7.2.11) also apply; the floor fixes those as well.

If you cannot patch this week

The GHSA-f4q9-j22m-xqq9 advisory notes that building a message over 4 GiB needs a script, because the default proto-max-bulk-len of 512 MB blocks large client arguments. Its mitigation is to deny scripting commands to users who do not need them and to keep that limit at its default.

bash
valkey-cli CONFIG GET proto-max-bulk-len
valkey-cli ACL SETUSER reporting -@scripting
valkey-cli ACL GETUSER reporting

Interpretation: 536870912 is the 512 MB default. -@scripting removes EVAL, FCALL, FUNCTION, and the other scripting commands from that user. This narrows exposure for one advisory; it is not a substitute for the floor.

Which security fixes shipped without an advisory?

In a 17 September 2026 post, the maintainers changed what gets an advisory: Valkey "stopped issuing advisories for availability-only bugs that require an authenticated attacker", and fixes them as ordinary bugs. A pre-authentication crash, an out-of-bounds read, or "any action beyond granted permissions" still gets one. The same post counts seven advisories in the first eight months of 2026 and "almost three dozen security-adjacent fixes".

In practice several permission fixes appear only in the "Bug Fixes" list of a release:

Fix (pull request)What it closedFixed in
GEORADIUS duplicate STORE (#3971)A second STORE or STOREDIST wrote keys outside the user's key patterns9.1.2, 9.0.6, 8.1.10, 8.0.11, 7.2.15
HGETEX permission (#4576)Read-only users could change field TTLs or delete fields9.1.2, 9.0.6
TLS certificate CN (#4577)An embedded NUL in a certificate CN could impersonate another ACL user9.1.2, 9.0.6
Database ACLs (#3801, #3806, #4155)COPY, CLUSTER FLUSHSLOT, and MOVE reached databases outside a user's db= rule9.1.1 and 9.1.2
Cluster bus lengths (#3972)Forged PUBLISH or MODULE packets crashed nodes9.1.2, 9.0.6, 8.1.10, 8.0.11, 7.2.15
Config injection (#3847, #3848)Control characters in SENTINEL SET values, cluster AUX fields, or cluster-announce-ip wrote into config files9.1.1, 9.0.5, 8.1.8 or 8.1.9, 8.0.10, 7.2.14

Note the 7.2 dates. The GEORADIUS and cluster bus fixes reached 8.x and 9.x on 31 August and 1 September 2026, but 7.2 only in 7.2.15, eight weeks later. The same thing can happen to any branch in its security-only period, which receives security fixes but not ordinary bug fixes. Our reading of the September policy is that authenticated crash bugs may then not reach it at all.

bash
# Every fix between your running patch and the floor, ACL items first
gh release view 9.0.7 --repo valkey-io/valkey | grep -iE "acl|permission|tls|inject"
gh release view 9.0.6 --repo valkey-io/valkey | grep -iE "acl|permission|tls|inject"

Interpretation: run it for every release between your current patch and the floor, because release notes list only the changes since the previous patch. Each hit is a permission or input-validation fix that a CVE feed will not show.

What else changes when you apply a Valkey security patch?

The releases page says patch versions carry backward-compatible bug fixes and that upgrading between them "should be safe". The fixes still change behavior that applications and scripts can see. These are the ones most likely to surface in testing:

  • Strict CRLF parsing (#2872). Requests without proper line endings now get a protocol error instead of being misparsed. In 9.0.5, 8.1.8, 8.0.10, and 7.2.14; in 9.1 since 9.1.0-rc1. Hand-written health checks are the usual casualty.
  • COMMAND INFO in RESP3 (#3939). The subcommands field is now an array, not a set. In 9.1.1, 9.0.5, 8.1.9, 8.0.10, and 7.2.14.
  • lua-enable-insecure-api (#3548). A yes set in the config file now takes effect at startup; before, it was ignored. In 8.1.9, 8.0.10, and 7.2.14. Check the file before you patch.
  • AOF replay and dump validation (#3984, #3721). Replaying the AOF no longer applies ACL checks, and sanitize-dump-payload became a no-op with deep validation always on. In 9.1.2, 9.0.6, 8.1.10, 8.0.11, and 7.2.15.
  • Hash field commands (#4576, #4300). HGETEX needs write permission, and HPERSIST, HTTL, HPTTL, HEXPIRETIME, and HPEXPIRETIME return a syntax error without FIELDS. In 9.1.2 and 9.0.6.
  • The October wave. LSET with an out-of-range index returns an error instead of changing the wrong element (all five branches). A negative sorted set LIMIT offset returns an empty result (all but 7.2). The cluster startup lock moved to a separate nodes.conf.lock file (all five), and PUBLISH over the cluster bus size limit now returns an error.
bash
# Find code paths that hit the commands whose replies changed
grep -rnE "HGETEX|HPERSIST|HTTL|HPTTL|HEXPIRETIME|LSET|COMMAND INFO" ./src
# Check whether the config file asks for the insecure Lua API
grep -n "lua-enable-insecure-api" /etc/valkey/valkey.conf

Interpretation: any hit is a test to run on staging against the target patch. If the second command prints lua-enable-insecure-api yes, decide whether you still want it before the patch makes it real. Backup and file-sync tools that copy the data directory should expect nodes.conf.lock on cluster nodes.

How do you check which Valkey version is actually running?

Ask the server. Package versions, image tags, and the Redis compatibility field all mislead. Every Valkey release reports redis_version:7.2.4 in INFO server, hard-coded as a compatibility value that "should never exceed 7.2.x" in version.h. The real version is in valkey_version.

INFO server on a Valkey 9.0 node, then a fleet check

Illustrative output: field names match the 9.0.7 source, the hosts and versions are examples

ops@bastion:~
$ valkey-cli -h cache-01 INFO server | head -6# Serverredis_version:7.2.4server_name:valkeyvalkey_version:9.0.6valkey_release_stage:garedis_git_sha1:00000000$ for h in cache-01 cache-02 cache-03; do printf "%s " "$h"; \ valkey-cli -h "$h" INFO server | tr -d '\r' | grep valkey_version; donecache-01 valkey_version:9.0.6 below the 9.0.7 floorcache-02 valkey_version:9.0.7 at floorcache-03 valkey_version:9.0.7 at floor

Ignore redis_version: it reads 7.2.4 on 7.2, 8.x, and 9.x alike, so any inventory or scanner keyed on it reports every Valkey node as the same version.

With extended-redis-compatibility yes, the HELLO reply also claims to be Redis 7.2.4, per networking.c at 9.1.3. INFO server keeps both fields either way. Off the server, the binary reports its own version:

bash
valkey-server --version
docker run --rm valkey/valkey:8 valkey-server --version

Interpretation: the output starts with Valkey server v= and the version. On 10 November 2026 the floating valkey/valkey:8 tag had the same digest as 8.1.11, and latest matched 9.1.3. A team that reads :8 as "the 8.0 line" is running 8.1. Pin the full patch tag. Bundles number separately: the valkey-bundle 9.1.4 Dockerfile builds on Valkey 9.1.3.

The revoked 8.0.8 release

Valkey 8.0.8 appeared on 6 May 2026 with the other May security releases. Its release, now titled "8.0.8 (revoked)", says: "The 8.0.8 tag was placed on a commit that is not part of the 8.0 release branch. Users should upgrade to 8.0.9 instead." 8.0.9 followed the same day with the three May CVE fixes. GitHub's compare view shows the 8.0.8 tag 1,292 commits ahead of 8.0.7 and diverged from it. The tagged version.h carries the development placeholder version, so a server built from it reports:

bash
valkey-cli INFO server | grep -E "valkey_version|valkey_release_stage"
# valkey_version:255.255.255  means a development build, such as the 8.0.8 tag

Interpretation: 255.255.255 is the version string of Valkey's unstable branch. Any node reporting it is not running an 8.0 release. Docker Hub has no 8.0.8 tag, so the risk is in source builds and internal mirrors. Rebuild those nodes from 8.0.12.

Should you patch in place or move to a newer branch?

Do both, in that order. A patch on the same branch is the smallest change: the releases page says it should be safe to run "a primary-replica pair or a Valkey cluster with servers running on different patch versions". Moving branch is a minor or major upgrade, and the same page says it is "not recommended to run a Valkey cluster with servers running on different minor versions", so that rollout needs a shorter, planned window.

Patch in place, then decide whether to move branch

Step 2 is always a same-branch patch; steps 3 and 4 depend on how long your branch has left

Deciding between a Valkey patch and a branch upgrade Step 1: read valkey_version from INFO server on every node. Step 2: patch to the floor for your branch with a rolling, replicas-first upgrade. Then check the support table. Step 3: if support ends within your planning horizon, as for 8.0 in September 2027 and 9.0 in October 2028, plan a minor upgrade to 8.1 or 9.1. Step 4: if years of support remain, stay on the branch and review new releases monthly. Valkey 7.2 has no newer 7.x minor, so its next move is a major upgrade. Running version INFO server Patch to floor same branch, rolling Move to 8.1 or 9.1 if support ends soon Stay and review if years remain 1 2 3 4 7.2 has no newer 7.x minor: its next move is a major upgrade to 8.1 or 9.1

Order matters: patch to the floor first. A branch upgrade takes weeks to plan, and the floor closes the open advisories now.

Some branch-specific notes for step 3. From 9.0, go straight to 9.1.3 or later: earlier 9.1 releases had a listpack incompatibility that broke RDB loads and replication with 9.0 for some entry sizes (#4819). The Valkey 9.1 upgrade guide covers that path and its rollback limits. From 7.2, a move to 8.1 keeps the same RDB format: rdb.h describes RDB 11 as "used by Valkey 7.x and 8.x", while 9.x writes version 80.

bash
# How long does each branch you run have left? (GNU date)
for d in 2027-09-15 2028-10-21; do
  echo "$d: $(( ( $(date -d "$d" +%s) - $(date +%s) ) / 86400 )) days"
done

Interpretation: the two dates are the support ends for 8.0 and 9.0. If the count is shorter than your usual lead time for a tested upgrade, step 3 belongs in this quarter's plan.

How do you roll a Valkey patch through replicas and the primary?

The releases page says to "always upgrade replicas before upgrading primaries". For a patch release, each node is a stop, binary swap, and start. The only write interruption is the controlled failover.

Rolling patch runbook: replicas first, then the primary

Eight steps per shard; step 6 is the brief write interruption

  1. Record version and role on every node

    Keep the output in the change ticket as the before state.

    valkey-cli -h cache-02 INFO server | grep valkey_version valkey-cli -h cache-02 INFO replication | grep role
  2. Read every release note up to the floor

    Check the behavior changes against your application and config before touching a node.

    gh release view 9.0.7 --repo valkey-io/valkey
  3. Take a fresh snapshot

    Wait for the save to finish and copy the RDB off the host.

    valkey-cli -h cache-01 BGSAVE valkey-cli -h cache-01 LASTSAVE
  4. Patch one replica

    Stop it, install the new binary or image, and start it with the same config.

    sudo systemctl stop valkey sudo systemctl start valkey
  5. Wait for it to resync

    Continue only when the link is up and no sync is in progress, then repeat steps 4 and 5 for each replica.

    valkey-cli -h cache-02 INFO replication \ | grep -E "master_link_status|sync_in_progress"
  6. Fail over to a patched replica

    Write pause

    With Sentinel, ask Sentinel. In cluster mode, run CLUSTER FAILOVER on the patched replica.

    valkey-cli -p 26379 SENTINEL FAILOVER mymaster valkey-cli -h cache-02 CLUSTER FAILOVER
  7. Patch the old primary

    It is now a replica. Swap its binary the same way and wait for the resync.

  8. Verify and watch for new denials

    Every node must report the floor version. New ACL LOG entries usually point to a tightened permission such as HGETEX.

    valkey-cli -h cache-02 ACL LOG 10

Rollback point: until step 6, the primary still runs the old patch. Because patch releases of one branch can replicate to each other, rolling back is the same swap in reverse.

On managed services such as Amazon ElastiCache or Google Cloud Memorystore, the provider builds and schedules engine versions. Check which Valkey patch your engine version corresponds to in the provider's own release notes rather than assuming the open source floor applies.

How do you track new Valkey releases and advisories?

Valkey ships most security fixes to every supported branch within a day, so one feed covers all of them. Three sources are enough:

  • GitHub watch. On the valkey-io/valkey repository, choose Watch, then Custom, then Releases. GitHub's notification settings documentation describes the custom options.
  • The release feed. Release notes carry an "Upgrade urgency" line: LOW, MODERATE, HIGH, or SECURITY. Alert on SECURITY and HIGH.
  • The advisories API. Poll it on a schedule and diff against the last run, so advisories without a CVE are not missed.
bash
# Newest releases, then the urgency line of one release
curl -s https://github.com/valkey-io/valkey/releases.atom | grep -o "<title>[^<]*" | head -8
gh release list --repo valkey-io/valkey --limit 10
gh release view 9.1.3 --repo valkey-io/valkey | grep "Upgrade urgency"

Interpretation: the Atom feed and gh release list show the newest tags, including release candidates such as 9.2.0-rc2 from 4 November 2026. The download page states that release candidates "are not supported for production use", so leave them out of the floor. The urgency line tells you how fast to act.

A monthly review is enough between waves

In 2026 the security releases landed in February, May, July, late August, and October. An alert on the SECURITY urgency line catches each wave when it ships, and a monthly review of the feed covers the HIGH and MODERATE releases between them.

Frequently asked questions

Which Valkey versions are still supported?

As of November 2026, Valkey 9.1, 9.0, 8.1, 8.0, and 7.2 all receive bug and security fixes. Valkey 8.0 support ends on 15 September 2027 and 9.0 support ends on 21 October 2028, with no security-only period. Valkey 7.2, 8.1, and 9.1 receive security fixes until 16 April 2029, 31 March 2030, and 19 May 2031.

What is the minimum safe Valkey version in November 2026?

Run at least 9.1.3, 9.0.7, 8.1.11, 8.0.12, or 7.2.15, depending on your branch. These October 2026 releases fix GHSA-f4q9-j22m-xqq9, a cluster Pub/Sub heap overflow, and include every earlier 2026 security fix for their branch. Check the GitHub releases page for newer patches before you schedule the work.

Why does Valkey report redis_version 7.2.4?

It is a fixed compatibility value for tools that expect Redis. Valkey's version.h sets it to 7.2.4 on every release, including 8.x and 9.x. The real server version is the valkey_version field in INFO server, or the v= value from valkey-server --version. Inventory and vulnerability scanners should read valkey_version.

Was Valkey 8.0.8 a bad release?

Valkey 8.0.8, published on 6 May 2026, was revoked because its tag pointed at a commit outside the 8.0 release branch. Valkey 8.0.9 replaced it the same day with the intended security fixes. A server built from the 8.0.8 tag reports valkey_version 255.255.255. Move any such node to 8.0.12.

Do Valkey security patches change behavior?

Sometimes. Patches in 2026 made RESP parsing reject malformed line endings, required write permission for HGETEX, made LSET return an error for out-of-range indexes, and moved the cluster startup lock to nodes.conf.lock. Read the release notes between your version and the target, and test on staging first.

Key takeaways

  • Patch every branch to the November 2026 floor: 9.1.3, 9.0.7, 8.1.11, 8.0.12, or 7.2.15.
  • Plan the minor upgrades off 8.0 before 15 September 2027 and off 9.0 before 21 October 2028; neither gets a security-only period.
  • Track GHSA IDs and release-note fixes, not only CVEs: three 2026 advisories have no CVE, and authenticated crash bugs now ship as plain bug fixes.
  • Inventory by valkey_version, pin full image tags, and rebuild anything reporting 255.255.255.
  • Test the behavior changes in each patch, then roll replicas first and fail over once per shard.

Keep your Valkey fleet patched with JusDB

JusDB's Valkey support team can review the versions running across your nodes against the current patch floor, check the release notes between each version and its target for behavior changes, and plan or run the rolling upgrades, including the 8.0 and 9.0 branch moves.

Bring your node list, current versions, topology (standalone, Sentinel, or cluster), and maintenance windows. Your team approves every production change.

Share this article

Database engineering notes

Articles like this one, in your inbox. No spam, unsubscribe anytime.

JusDB Team

Official JusDB content team

Keep reading

Moving a Multi-Database Valkey Instance into a 9.x Cluster

Move a Valkey instance that uses SELECT 1 to 15 into a 9.x cluster: keep or remap databases, copy each one, verify counts per database, and keep a way back.

Redis18 minNov 10, 2026
Read

Valkey Keyspace Notifications in Production: Expired Events, hexpired and Cluster Mode

Run Valkey keyspace notifications in production: why expired and hexpired events lag the TTL, how to subscribe on every cluster node, and when a stream is safer.

Redis20 minNov 10, 2026
Read

Valkey GLIDE in Production: AZ-Affinity Reads and Migrating from Legacy Clients

Configure Valkey GLIDE AZ-affinity reads on servers and clients, learn what GLIDE 2.5.3 does not support, and migrate from redis-py, Jedis, ioredis, or go-redis one service at a time.

Redis20 minNov 10, 2026
Read