# Changelog All notable changes to **ComfyUI-Manager** are documented in this file. The format is based on [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [4.2.2] - 2026-06-15 ### Security - **Dedicated install flags decouple git-URL / pip installs from `security_level`**: `POST /v2/customnode/install/git_url` and `POST /v2/customnode/install/pip` (and the batch install path for git URLs not in the custom-node DB) are now gated by two new `config.ini` `[default]` flags — `allow_git_url_install` and `allow_pip_install` — instead of `security_level`. Both default to `false` (secure by default), and a non-loopback listener stays denied unless `network_mode = personal_cloud` (the existing network-position invariant is retained — the flags never widen exposure beyond what was possible before). `security_level` no longer has any effect on these two endpoints, in either direction. The unknown-pip-package block in batch installs remains unconditional. Activation requires a restart (no hot reload). ### Migration notes - **Users running `security_level = weak` or `normal-`**: these environments could previously use the git-URL / pip install endpoints; after upgrading they are denied (HTTP 403) until you explicitly opt in by setting `allow_git_url_install = true` and/or `allow_pip_install = true` in the `[default]` section of `config.ini`. The flags are NOT auto-seeded from your `security_level` — explicit opt-in is intentional. ### Fixed - **pygit2 fallback hardening (Desktop 2.0)**: under `CM_USE_PYGIT2=1` the pygit2 backend ran `clone_repository` / `remote.fetch` honoring the user's global git config, so an `insteadOf` rewrite (https→ssh) or credential helper forced authentication and failed with *"authentication required but no callback set"*. The system/global/XDG config search path is now blanked at import time (hermetic libgit2 operations) and SSH-form GitHub URLs are normalized to anonymous HTTPS on clone and when opening a repo. System `git` is preferred when available. - **pygit2 fallback follow-ups**: `list_remotes()` fetches now route through `_fetch_remote` so the proxy and SSH→HTTPS rewrite apply to every fetch entry point, with `pull` provided on the proxies via a shared `_pull_remote` helper. `_to_https_url` now handles `ssh://git@host:port/...` URLs (drops the custom SSH port instead of mangling it) and collapses leading slashes; non-scp-form and port-only/IPv6 `ssh://` URLs are returned unchanged. `clone_repo` omits the `proxy=` kwarg when no proxy is configured (proxy-less installs keep working on pygit2 < 1.18), and pygit2 is now pinned to `>= 1.18`. ## [4.2.1] - 2026-04-22 Security-hardening release. Contains breaking-ish API changes for state-mutating endpoints. See **Migration notes** below before upgrading programmatic clients. ### Security - **CSRF Content-Type gate**: 18 state-mutation POST handlers (9 in `glob`, 9 in `legacy`) now reject the three CORS "simple request" Content-Types (`application/x-www-form-urlencoded`, `multipart/form-data`, `text/plain`). This closes the residual `