Comfy-Org / Comfy-Org/ComfyUI-Manager
Manual review request: comfyui-filemanaty versions flagged (only 0.10.0 Active)
- Dominant language
- Python
- Stars
- 16.1k
- Forks
- 2.5k
- Avg merge
- 5d 4h
- Merged PRs (30d)
- 13
Description
### Summary
Requesting manual review of flagged versions for **`comfyui-filemanaty`** (publisher `agarzon`).
Registry page: https://registry.comfy.org/nodes/comfyui-filemanaty
Only `0.10.0` is `Active`. Every version that contains backend Python is `Flagged`, so the registry
page still advertises `0.10.0` while `0.12.1` is current — users installing from the Manager get a
release from June.
| version | status |
| --- | --- |
| 0.12.1 | Pending (published today) |
| 0.12.0 / 0.11.0 / 0.10.1 | Flagged |
| **0.10.0** | **Active** — frontend-only release |
| 0.9.0 / 0.8.0 / 0.7.1 / 0.7.0 | Flagged |
The one version that passed is the only one whose diff was pure JavaScript, which suggests the
scanner is reacting to the filesystem code rather than to anything malicious.
### What this project is
An in-browser **file manager** for ComfyUI — browse, preview, upload, rename, move, copy, trash.
It is an extension, not a node pack: `NODE_CLASS_MAPPINGS` is empty and it registers aiohttp routes
on the existing PromptServer. Managing files is the product, so deleting and writing files inside
operator-configured roots is its declared purpose, not incidental behaviour.
### What it does not do
- no `eval`, `exec`, `compile`, or `__import__`
- no `subprocess`, `os.system`, or any shell invocation
- no `pickle` or `marshal`
- no obfuscation, no encoded payloads, no custom pip wheels
- no outbound network calls and no telemetry — `urllib` is imported once, for `urllib.parse.quote()`
on a Content-Disposition filename
- one runtime dependency: `Pillow>=10.0`, used for thumbnails
### Hardening already in place
- **Single path chokepoint.** Every user-supplied path goes through `filemanaty/security.py`
(`safe_resolve` / `safe_name`). It rejects absolute paths, Windows drive letters and UNC prefixes,
NUL bytes, path separators in single components, reserved device names, and anything that resolves
outside its root via `..` or a symlink. No other module calls `Path.resolve` or `os.path.join` on
user input.
- **Roots are opt-in.** The client never sends absolute paths — it sends a root id plus a relative
path, and the server resolves against roots the operator configured. Roots can be marked
read-only, and every mutating endpoint is guarded.
- **Deletes default to a trash.** They move to a per-root `.filemanaty_trash/` and are restorable;
permanent removal requires an explicit `permanent: true` on the request.
- **`sys.path.insert` in `__init__.py`** is the standard workaround for ComfyUI loading custom nodes
via `importlib.util.spec_from_file_location`, which doesn't put the node dir on `sys.path`. It
inserts only that directory.
- Test suite of ~290 tests, a large share covering the path-traversal and read-only guards.
### Known, documented limitation
There is **no built-in authentication** — whoever can reach the ComfyUI port can use it, the same
posture as ComfyUI itself. This is stated plainly in the README, which recommends an auth reverse
proxy for any non-local exposure.
### Ask
Please review and, if it passes, unflag `0.12.1` (and ideally the earlier flagged versions) so the
registry reflects the current release. Happy to explain any specific pattern that tripped the scan,
or to adjust the code if something here crosses a line I've misjudged.
Source: https://github.com/agarzon/ComfyUI-FileManaty
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the linked ComfyUI-FileManaty source, especially filemanaty/security.py and the README, alongside the flagged version statuses listed in the issue. The report describes the intended filesystem behavior and its safeguards; completion means a reviewer determines whether the releases meet registry requirements and, if approved, unflags the requested versions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 28/100