diff --git a/core/modules/node/src/NodeGrantDatabaseStorage.php b/core/modules/node/src/NodeGrantDatabaseStorage.php
index f6ae1f6c134..07e87fe4d00 100644
--- a/core/modules/node/src/NodeGrantDatabaseStorage.php
+++ b/core/modules/node/src/NodeGrantDatabaseStorage.php
@@ -110,11 +110,14 @@ public function access(NodeInterface $node, $operation, AccountInterface $accoun
     // cases. For now, this must remain marked as uncacheable, even when it is
     // theoretically cacheable, because we don't have the necessary metadata to
     // know it for a fact.
-    $set_cacheability = function (AccessResult $access_result) use ($operation) {
+    $set_cacheability = function (AccessResult $access_result) use ($operation, $node) {
       $access_result->addCacheContexts(['user.node_grants:' . $operation]);
       if ($operation !== 'view') {
         $access_result->setCacheMaxAge(0);
       }
+      else {
+        $access_result->addCacheableDependency($node);
+      }
       return $access_result;
     };
 
