Comfy-Org / Comfy-Org/ComfyUI-Manager

Manual review request: comfyui-filemanaty versions flagged (only 0.10.0 Active)

Open
#3,141 1 comment 1 reaction 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.