Nodes/ComfyUI-ChickTools/Chick Private Save
ComfyUI Node

Chick Private Save

The saver that keeps your carrier password out of the PNG

By chookg·Created about a month ago·Updated 30 days ago· 1
Chick Private Save
  • images
  • images
◄filename_prefixComfyUI►

The leak this node plugs

Here's the setup. In ComfyUI the metadata is the payload: a saved PNG carries the full prompt (the execution graph, every widget value) and workflow (your canvas graph) as text chunks inside the file. That's the property the whole sharing culture is built on, and it's also why the privacy advice in the KB amounts to "set --disable-metadata, export to a format that drops the graph, or scrub before posting."

Now add Chick Hide. Its password is a widget on the node, which means the password is a value in the execution prompt, which means a normal SaveImage copies it into the carrier PNG in plaintext. The payload stays encrypted; the key to it goes in the file next to it. That's a real hole, and Chick Private Save is the narrow, boring fix.

What it actually does

It's a subclass of the SaveImage you already have installed, and it changes exactly one thing about what reaches the PNG writer. The schema is deep-copied and the hidden prompt input is removed, so ComfyUI has no slot to hand the graph through. Then the save call runs with prompt=None, and the extra metadata is filtered down to a single allowlisted key, AIGC, which is for provenance. Everything else about the save is inherited: same output directory, same auto-incrementing counter, same file naming behavior.

It does not touch your carrier. Pixels, encrypted bytes, the packed payload - unchanged. This is purely about what gets written into the file's text chunks alongside them. It also doesn't mutate the execution graph while doing it, which matters because ComfyUI may still need that graph for other nodes in the same run.

The tradeoff is built in and worth saying plainly: the PNG it writes has no recoverable workflow in it. That's the point, but it means you can't drag the carrier back onto the canvas and get the graph back. The KB's standard answer applies - keep the workflow JSON somewhere else. And keep that file to yourself too, because the password is sitting in it; manually exported workflow JSON and API requests aren't covered by this node.

Inputs and output

  • images (IMAGE) - the thing to save. In this pack that's almost always chick_image from Chick Hide.
  • filename_prefix (STRING, default ComfyUI) - the author keeps ComfyUI's own tooltip here, and it's accurate: this is a small template language, so %date:yyyy-MM-dd% interpolates the date, %Empty Latent Image.width% pulls a live value out of another node, and a slash in the prefix drops the file into a subfolder. Files land in ComfyUI/output/.

Output is images (IMAGE), passed through, so you can chain it into a second save or a Notify Me node without rewiring.

Installing it

Nothing node-specific, and no models or downloads. It's in the same pack as Chick Hide:

cd ComfyUI/custom_nodes
git clone https://github.com/chookg/ComfyUI-ChickTools.git
cd ComfyUI-ChickTools
python -m pip install -r requirements.txt

Restart ComfyUI, then search Chick Private Save in the node menu under ChickTools/Media. ComfyUI Manager can also install the pack if it indexes the title; the manual clone is the dependable route.

One structural note, since it explains a failure you might otherwise never decode: this node needs ComfyUI's own SaveImage class to be importable at load time, because it inherits from it. On a normal install that's automatic. If it isn't there, the save raises and tells you ComfyUI's SaveImage is required to write carriers - that's the pack talking, not your PNG.

Where people get burned

Expecting the workflow back is the number one surprise. People save a carrier, send it, get asked "how did you make this," and there's nothing in the file to drag back. That's the feature working.

The second one is thinking this protects more than it does. It protects the saved PNG. Your password still exists in the prompt you can export out of the UI, in any API JSON you POST, and in any older PNG you saved with the stock saver. If a password is in a file you've already shared, change it and re-encode instead of retrofitting.

The third is the inverse mistake: assuming re-encoding is fine here because the save is clean. It isn't. A carrier's payload lives in the lowest bits of the pixels, so anything that decodes and rewrites the image - a host that recompresses, a screenshot, an editor - strips the payload entirely, no matter which saver wrote the original.

Use it for every carrier you keep, password or not. When there's no password there's no secret to leak, but there's also no reason to hand a host your whole node graph as a bonus.

CategoryChickTools/Media

Inputs (2)

NameTypeDefaultDescription
imagesIMAGEThe images to save.
filename_prefixSTRINGComfyUIThe prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes.

Outputs (1)

NameTypeDescription
imagesIMAGE—