install_extension
Install a ComfyUI node pack from the Comfy Registry safely: preview the plan with dry_run, get an automatic checkpoint, and refuse unsafe installs before fetching.
Instructions
Install a node pack from the Comfy Registry, with a checkpoint and a refusal first.
The order is the whole design. What installing a pack does to this machine is
almost never about the pack's own files - those are a folder that
set_extension_enabled can hide again in one rename. It is about the packages its
requirements move, and that is irreversible without a record. So: the plan is read
before anything is fetched and an unsafe one is refused outright; a checkpoint is
written whether or not anyone asked; and the difference the install actually made is
measured afterwards rather than taken from the plan.
The fetching is ComfyUI-Manager's and the packages are this server's. Manager
resolves the registry id, downloads the archive and places it with its own
conventions - reimplementing that would be a second set of conventions for the same
folders. But its post-install step pip-installs requirements.txt one line at a
time with nothing watching torch, and runs the pack's own install.py, which is
arbitrary code. This asks it to skip that step and does the package half here.
Two consequences to know about, both reported in the reply rather than hidden:
A pack shipping
install.pyis only partly installed by this route. That script is not run. Most packs do not have one; a pack that does may need a person.Packages that move an already-installed version are not installed while ComfyUI is running, because it has them loaded and replacing a loaded file fails on Windows. The pack lands, the packages wait, and
repair_extensionfinishes the job with ComfyUI stopped.
Args:
name: the pack's registry id, or something that identifies one entry. Ambiguity
is refused rather than guessed at.
version: which released version, or "latest". Not a git ref - Manager rates
every nightly and every unknown git URL as high risk and refuses them at
the usual security level, and this server does not work around that.
dry_run: read the plan and stop. Nothing is fetched, nothing is written, and no
checkpoint is taken. This is the call to make first.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dry_run | No | ||
| version | No | latest |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||