Nodes/ComfyUI-ALLinONE-MinimaxH3/H3 Cache Fingerprint (internal)
ComfyUI Node

H3 Cache Fingerprint (internal)

Swapped your reference image and got the same video? This node is the fix

By LeonQ8·Created 10 days ago·Updated about 16 hours ago· 273
H3 Cache Fingerprint (internal)
  • clip
  • clip
fingerprint

On the surface, H3 Cache Fingerprint (internal) looks like nothing at all: a CLIP goes in, the identical CLIP comes out, and there's a multiline text box labeled fingerprint that you'll never fill in by hand. Don't skip past it - it exists because of a real ComfyUI cache bug that silently wastes people's evenings, and it's the reason swapping a reference image in this pack actually changes the output.

Here's the problem it solves. ComfyUI's execution cache fingerprints each node from its input values plus the fingerprints of every node wired into it, and serves you cached output whenever that signature is unchanged. That's normally great - it's why a graph with 200 nodes only re-runs the branch you touched. But the H3 node's V3 autogrow inputs (ref_images, ref_audios, …) arrive as dicts of links, and the cache does not traverse links nested inside dicts. So you swap a reference image for a different one, the cache signature doesn't change, and every downstream node - conditioning, sampler, save - serves you the stale render. Same video, no matter what you did.

The fix is exactly what the display name says: this node sits upstream of the conditioning node and returns a SHA-256 digest of everything that must invalidate generation - the prompt, all media file names, plus the on-disk content of those files. Hashing file contents matters, because it catches the case where you replace a file under the same name (the signature would otherwise stay identical). It does this in its IS_CHANGED method, so the hash is compared between runs and the whole downstream chain re-executes when it moves.

The inputs are minimal:

  • clip (CLIP) - passed through byte-for-byte untouched. The node's entire visible job is to be a routing point that participates in the cache.
  • fingerprint (STRING) - the JSON payload listing the files to hash, written by the pack's frontend when it builds the graph.

Output is the same clip.

You will almost certainly never add this node to a workflow by hand - the pack's JavaScript inserts it between your CLIP loader and the H3 conditioning node automatically, and it ships with the pack, so no extra install or model. But if you've ever hit the "I changed the prompt and nothing happened" wall in a complex graph, this is the class of bug it's fighting: the cache thought your inputs were unchanged when they weren't. Think of it as a well-placed cache-buster, the plumbing layer working so you don't have to think about the plumbing layer. If you do want to poke at it, the whole implementation is in the pack's nodes.py - a couple dozen lines, satisfyingly readable.

CategoryOne Node

Inputs (2)

NameTypeDefaultDescription
clipCLIP
fingerprintSTRING

Outputs (1)

NameTypeDescription
clipCLIP