What do ComfyUI-Manager's security_level, install flags and model-download gate actually permit, and where do docs and README disagree?
Corrected 2026-10-24 - see C3-B1098-01; the original statements below are kept for history and are superseded where the correction says so. Corrected 2026-10-23 - see C3-B595-01; the original statements below are kept for history and are superseded where the correction says so. At ComfyUI-Manager commit a74929c6 (main, observed 2026-10-22; CHANGELOG heading 'Unreleased'), security_level takes four values (strong, normal, normal-, weak; the code default is 'normal'). The README says git-URL and pip installs are no longer governed by security_level but by two default-false flags (allow_git_url_install, allow_pip_install) that also require a loopback --listen. The Comfy-Org docs site (506a4a94) describes a different mapping: it lists git-URL and pip installs and 'fix custom nodes' as High and tells users to set security_level = weak. In code, the fix handler checks 'middle', so the code agrees with the README rather than the docs site. Model downloads through install_model pass three g...
Structured fields
{
"citations": [
{
"url": "https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/README.md",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/CHANGELOG.md",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://github.com/Comfy-Org/docs/blob/506a4a94db30524adb8706667aec050d71dbdf60/manager/configuration.mdx",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/glob/manager_server.py",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://github.com/Comfy-Org/docs/blob/506a4a94db30524adb8706667aec050d71dbdf60/manager/troubleshooting.mdx",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/glob/manager_core.py",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
},
{
"url": "https://api.github.com/repos/Comfy-Org/ComfyUI-Manager/security-advisories",
"note": "Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy'"
}
]
}Evidence claims
- [sourced_fact] Curator correction 2026-10-23 (discovery audit record C3-B595-01; sources re-fetched 2026-10-23, excerpts re-located by curator GET): Problem. The earlier finding says git-URL and pip installs are 'no longer governed by security_level but by two default-false flags that also require a loopback --listen'. That is true for POST /customnode/install/git_url and POST /customnode/install/pip only. Conditions. ComfyUI-Manager commit a74929c6 (README and CHANGELOG bytes are identical on main at 2026-10-23). Correct reading. allow_git_url_install also covers the unknown-git-URL arm of POST /manager/queue/install, and on that batch queue path the flag is 'necessary but not sufficient': the queue's normal security_level gate (middle) must also pass, so at security_level = strong batch unknown-URL installs stay denied even with the flag true. allow_pip_install governs only the standalone pip endpoint. Both flags default to false, only the string 'true' enables them, and they take effect only on a loopback listener. The CHANGELOG heading is still 'Unreleased'. Impact. An agent that reasons 'security_level strong does not matter for git-URL installs' would be wrong for the batch queue. Limitations. README/CHANGELOG text only; behaviour not run. · locator: curator correction paragraph in this record body (C3-B1098-01, C3-B595-01) source
- [sourced_fact] Curator correction 2026-10-24 (discovery audit record C3-B1098-01, curator-reviewed C3R-0702; excerpts re-located by independent curator GET 2026-10-24): Correction. C3-B049-G17-02 describes the Manager install gates at commit a74929c6 as security_level plus 'two default-false flags' and gives a five-step list of what an install request needs (method 'Resolve what a given install request needs'). The same README at that commit documents a third default-false setting, allow_flagged_nodepack_install, in the section directly after the cited lines (README L461-L490), and the code enforces it (manager_core.py L987, manager_server.py L165-L166, default False at manager_core.py L1975). A pack version that the registry marks flagged is refused unless every --listen address is loopback or this setting is true, in addition to the security_level and registry checks. The five-step list therefore omits a refusal condition that already existed when the record was written. The README statements the record did quote (two flags default false; loopback required; Unreleased heading) are accurate and unchanged; main still carries the same README bytes on 2026-10-24 (main HEAD is now 7e1af9c2, a database-update commit whose parent is a74929c6) and the latest tag is 4.3, so the omission is not due to later change. The record was otherwise accurate when written. · locator: curator correction paragraph in this record body (C3-B1098-01, C3-B595-01) source
- [sourced_fact] SUPERSEDED IN PART 2026-10-24 by curator correction C3-B1098-01, C3-B595-01 (see the correction claim above); original kept for history: At ComfyUI-Manager commit a74929c6 (main, observed 2026-10-22; CHANGELOG heading 'Unreleased'), security_level takes four values (strong, normal, normal-, weak; the code default is 'normal'). The README says git-URL and pip installs are no longer governed by security_level but by two default-false flags (allow_git_url_install, allow_pip_install) that also require a loopback --listen. The Comfy-Org docs site (506a4a94) describes a different mapping: it lists git-URL and pip installs and 'fix custom nodes' as High and tells users to set security_level = weak. In code, the fix handler checks 'middle', so the code agrees with the README rather than the docs site. Model downloads through install_model pass three gates: the 'middle' security level, a whitelist match of save path, base and filename against the cached or local model-list.json, and, for non-.safetensors filenames without 'high' permission, a default-channel URL match. On older ComfyUI without the System User Protection API (PR #10966), Manager's migration forces security_level to 'strong', overriding config.ini. Code read at the pin; nothing was executed. · locator: Manager a74929c6 README.md 'Security policy' and 'Dedicated install flags' (lines 373-459); CHANGELOG.md '## Unreleased'; manager_server.py lines 39-41, 127-138, 1755-1778; manager_core.py lines 1939, 1971; Comfy-Org/docs 506a4a94 manager/configuration.mdx 'Security levels' and 'Risk levels for features'; troubleshooting.mdx 'Security policy' source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://api.github.com/repos/Comfy-Org/ComfyUI-Manager/security-advisories
- cites → https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/CHANGELOG.md
- cites → https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/README.md
- cites → https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/glob/manager_core.py
- cites → https://github.com/Comfy-Org/ComfyUI-Manager/blob/a74929c65b49d7d7d81b9a6f140de878a818b893/glob/manager_server.py
- cites → https://github.com/Comfy-Org/docs/blob/506a4a94db30524adb8706667aec050d71dbdf60/manager/configuration.mdx
- cites → https://github.com/Comfy-Org/docs/blob/506a4a94db30524adb8706667aec050d71dbdf60/manager/troubleshooting.mdx