Prompt Stash Saver
A Prompt Library That Lives Inside ComfyUI — Prompt Stash Saver
- text
Let's be honest about the name: Prompt Stash Saver isn't just a saver. It's a small, persistent prompt library that lives inside your ComfyUI graph - you save prompts, organize them into lists, and load them back with a dropdown. The author built it after losing good prompts one too many times, and if you've ever generated something great and then realized you never wrote the prompt down, you're his target audience.
It's the workhorse of phazei's Prompt Stash pack, and it fills a spot vanilla ComfyUI leaves empty: text goes into a CLIPTextEncode and disappears, and there's no built-in way to keep the ones you like. This node gives you a searchable shelf instead of a graveyard of notebook tabs.
How it works
The heavy lifting happens through buttons in the node UI. Click Save Prompt and the frontend calls a local endpoint on ComfyUI's own server (/prompt_stash_saver/save) - no external service, no API key, nothing leaves your machine. Your prompts are stored as JSON at <ComfyUI user dir>/prompt_stash/prompt_stash_data.json, keyed by list and name. Saving to a name that already exists overwrites it, so the flow is: name it, save it, and if you need to replace it, save over it.
Everything in the pack shares one library - the Saver, the Passthrough, and the sibling Prompt Stash Manager all read the same file. The Manager node is where you create and delete lists, and it also handles export/import. Import merges rather than clobbers: if a name collides, the incoming prompt gets (2) appended so nothing you already saved is destroyed. That merge-without-overwrite behavior is a genuinely thoughtful touch you don't always get from custom nodes.
It also captures text, same as the Passthrough: toggle use_input_text and an upstream node's output (like an LLM) flows in and gets synced to the widget, so the prompt you're about to save is right there on screen.
The inputs that matter
use_input_text- take text from the incomingtextport instead of the typed field.text- the input connection; evaluated lazily, only when the toggle is on.prompt_text- what you type, or what gets captured and displayed.save_as_key- the name the prompt is saved under.
There are also load_saved and prompt_lists dropdowns, but don't expect them to drive the data flow - they're UI state that lets you pick a stored prompt and a list. The output is a single text (STRING) carrying whatever prompt is currently active, which you can wire straight into your encode node.
Installing it
ComfyUI Manager: search "Prompt Stash" and install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/phazei/ComfyUI-Prompt-Stash
Restart ComfyUI after. No model files, no extra pip packages - the pack runs on ComfyUI's own aiohttp server plus a couple of JS files.
Where people get burned
Two things to know before you lean on it. First, deleting is permanent - no undo, no recycle bin. If your collection matters, export it from the Manager node now and then; the export file is a tiny JSON you can back up or share. Second, the data file lives in your user directory, which is also where you go to start over: delete prompt_stash_data.json (old installs stored it inside the node folder, and the pack auto-migrates that to the user dir), refresh, and it rebuilds fresh.
And one expectation to check at the door: it stores text as-is. {red|blue|green} wildcard syntax won't be evaluated - the author's confirmed that's not what this pack does. If you want dynamic prompt variation, pair this with a wildcard node pack instead.
It's a small pack with an honest job, and for anyone running LLM-driven prompt workflows it quietly pays for itself the first week.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| use_input_textopt | BOOLEAN | false | — |
| textopt | STRING | Optional input text | |
| prompt_textopt | STRING | — | |
| save_as_keyopt | STRING | — | |
| load_savedopt | COMBO | None | 1 options: None |
| prompt_listsopt | COMBO | default | 1 options: default |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |