mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-11-04 23:37:31 +00:00
[PR #3136] [CLOSED] fix: report the real reason a batch install or uninstall is denied #3045
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/ComfyUI-Manager#3045
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/ComfyUI-Manager/pull/3136
Author: @Dhevenddra
Created: 8/6/2026
Status: ❌ Closed
Base:
main← Head:fix-denial-diagnostics📝 Commits (1)
27dc3a5fix: report the real reason a batch install or uninstall is denied📊 Changes
4 files changed (+6 additions, -6 deletions)
View changed files
📝
glob/manager_server.py(+2 -2)📝
js/common.js(+0 -2)📝
js/custom-nodes-manager.js(+0 -2)📝
tests/test_install_flags_gates.py(+4 -0)📄 Description
Fixes #3128.
Problem
1. The batch install path throws away the server's 404 body.
js/custom-nodes-manager.jsreplaced every 404 with a message about the"default channel"and the security level. The denial it fires on most often cannot be resolved by either. Ininstall_custom_node, therisky_level == 'high'arm goes throughis_dedicated_install_allowed(core.get_config()['allow_git_url_install'], args.listen), which isflag AND loopbackand never readssecurity_level. Settingsecurity_level = weakchanges nothing, so the message is a false lead that users do follow.The same branch also swallowed the informative 404s on that route, for example
Following node pack doesn't provide `nightly` version, which the user never got to see.2. The uninstall path carried the same substitution for a status it never returns.
uninstall_custom_nodereturns 403 or 200 only. The 404 arm injs/common.jscould therefore only be reached when the endpoint itself was missing (an outdated or partly-installed Manager), where a note about channel configuration points in exactly the wrong direction.3.
SECURITY_MESSAGE_FLAG_GIT_URLomits half the gate.The message asks for
allow_git_url_install = trueand adds that the setting is independent ofsecurity_level, butis_dedicated_install_allowedalso requires a loopback listen address. Anyone on--listen 0.0.0.0is told to enable a flag they already enabled, with no hint about the real bound.SECURITY_MESSAGE_FLAG_PIPhas the identical gap.Fix
elsearm surfaces the server's own body. This is what the 403 path already does, and the dedicated/customnode/install/git_urlsurface already names the responsible flag throughjs/common.js.The loopback bound itself is deliberate per #2991 and is unchanged here. This is diagnostics only: no gate, status code, or policy moves.
Evidence
python -m pytest tests -qon a clean 3.12 venv:ruff check .(the CI gate) passes.The denial-copy guard in
tests/test_install_flags_gates.pynow asserts the loopback requirement. Reverting onlyglob/manager_server.pyand re-running it fails as expected:The JS side has no test harness in this repo, so those two changes are deletions that fall through to the existing
elsebranch rather than new logic.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.