ComfyUI Node

Save Snapshot

Give your workflow an undo button you actually remember to use

By ethanfel·Created 6 months ago·Updated 7 days ago· 1
Save Snapshot
  • value
  • *
labelNode Trigger

Every ComfyUI veteran has a story about the hour of tweaking that vanished because they rewired one node and couldn't remember how it was before. Workflows are just JSON, but ComfyUI ships with zero version control - no undo history, no autosave rollback, nothing. That's what the Workflow Snapshot Manager pack fixes, and SaveSnapshot is the node half of it. The pack's sidebar already auto-captures your graph every time you edit. This node is for the checkpoints you want to name: "Before adding the second ControlNet", "seed 42 worked", "good LoRA balance". It fires when the queue runs, not when you remember to click a button.

It's a tiny node - two inputs, one passthrough output - but it slots into a genuinely useful pack. Drop it anywhere in your graph, queue a run, and a snapshot of the whole workflow appears in the sidebar with a purple border and a "Node" badge so you can tell it apart from the auto-saves. That's it. The snapshot is stored server-side as a JSON file under snapshot_manager/snapshots/ in your ComfyUI user directory, so it survives browser refreshes and is reachable from any browser on the same machine.

How it works

The mechanism is simple and worth understanding because it explains a quirk. SaveSnapshot's IS_CHANGED returns NaN, which is ComfyUI-speak for "always run me." So the node executes on every queue run, no matter what. When it fires, it sends a snapshot-manager-capture WebSocket event to the browser with your label (plus a thumbnail if you fed it an image). The pack's frontend listens for that event, saves the snapshot with source: "node", and prunes it against the node-specific rolling limit.

That's the important gotcha: node-triggered snapshots have their own cap, separate from the main per-workflow limit - default is 5, configurable 1–50 under Settings → Snapshot Manager → "Max node-triggered snapshots". If you queue a 10-image batch with a SaveSnapshot in the graph, you don't get 10 snapshots. You get 5, with the oldest pruned. If you want one checkpoint per run, bump the cap or put the node somewhere that only executes when you actually want a capture.

The inputs that matter

Only two, and you mostly touch one:

  • value (*) - an anything-goes pass-through. Feed it an image tensor and the snapshot gets a small thumbnail preview in the sidebar, which makes scanning your history vastly easier. Wire it to whatever you're generating (an output, a preview) and it just rides along.
  • label (STRING, default "Node Trigger") - the name the snapshot is saved under. This is the thing you set; it's what shows up in the sidebar, timeline tooltip, and search.

The output (*) is the same value passed straight through, so the node is safe to inline anywhere without breaking the data flow.

Installing it

This is one of the rare custom-node installs with zero friction - no models, no extra pip packages. It only uses torch and PIL, which ComfyUI already has. Easiest path: open ComfyUI Manager, search Workflow Snapshot Manager, click install, restart. Or from the command line:

cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/Comfyui-Workflow-Snapshot-Manager.git

Then restart ComfyUI. The node lives under the Snapshot Manager category, and the full sidebar (the clock icon) comes with the same install.

Common issues

  • "My snapshots disappeared." Usually the rolling limit pruning, not a bug. Check the max-snapshots settings before assuming data loss.
  • "Nothing saved when I ran from an API script." This node needs the browser frontend alive to catch the WebSocket event - headless/API-only runs have nothing listening.
  • Don't confuse it with ComfyUI Manager's own "Snapshot Manager". That's a different feature that backs up your installed nodes and config, not your workflow graphs. This pack is purely about the graph on your canvas.
  • Lock important captures (the padlock in the sidebar) and they're safe from both the rolling prune and "Clear All".

The author, ethanfel, is an active ComfyUI dev (also behind the LoRA Optimizer pack), and this one is MIT-licensed and published through the Comfy Registry. Worth ten seconds to install even if you only use the node once - because the day you actually need that "before I broke it" snapshot, it'll be there.

CategorySnapshot Manager

Inputs (2)

NameTypeDefaultDescription
value*
labelSTRINGNode Trigger

Outputs (1)

NameTypeDescription
**