Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/cfg/core.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ nvm config set shim_bun=false
|--------|---------|--------|-------------|
| `log_executions` | `false` | Boolean | Whether to log every Node.js invocation (ex: `node file.js`). (shim-only) |
| `disable_announcements` | `false` | Boolean | Whether to disable project and release announcements. On Certified Builds, license expiry warnings still run when a commercial license is present. This does not suppress malware definition or malware block notifications. |
| `skip_malware_checks` | `false` | Boolean | Skip malware checks for package-manager and node shims. The definition file still updates. HKLM `SkipMalwareChecks` wins over HKCU. |
| `skip_malware_checks` | `false` | Boolean | Skip malware checks for package-manager and node shims. The definition file still updates. HKLM `SkipMalwareChecks` wins over HKCU. `AirGapped` with no `malware.db` also skips, without this key. |
| `notify_malware_definitions` | `true` | Boolean | Certified only. Show a silent notification after malware definitions change. HKLM can force it off. |

```powershell
Expand Down
4 changes: 2 additions & 2 deletions docs/cfg/enterprise/registry.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/

|Name|Key|Description|
|:-|:-|:-|
|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Skip live JWKS fetch from `licensing.author.io`. Verify `AccessToken` only against the COSE-signed offline JWKS store (`JwksCose` or `nvm-jwks.cose` next to `nvm.exe`). Independent of `LocalInstallOnly`.<br /><br />- `0` = off<br />- `1` = on<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Skip live JWKS fetch from `licensing.author.io`. Verify `AccessToken` only against the COSE-signed offline JWKS store (`JwksCose` or `nvm-jwks.cose` next to `nvm.exe`). Independent of `LocalInstallOnly`. When on and `malware.db` is not on disk, the shim skips malware scans. An invalid `malware.db` still blocks.<br /><br />- `0` = off<br />- `1` = on<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Version aliases**|`Aliases`|**Overridable.** Centrally managed aliases (e.g. `stable=24.9.0`). Blocks user-defined aliases when set by policy.<br /><br />`alias=version` per entry<br /><br />`REG_MULTI_SZ`|
|**Allow cache deletion**|`AllowDownloadCacheDelete`|**Overridable** (`allow_download_cache_removal`). Whether cached downloads may be removed (`nvm cache remove`).<br /><br />- `0` = blocked<br />- `1` = allowed<br /><br />Default: `1`<br /><br />`REG_DWORD`|
|**Allow insecure downloads**|`AllowInsecureDownloads`|**Overridable** (`allow_insecure_downloads`). Permit downloads when TLS certificates are expired or invalid.<br /><br />- `0` = blocked<br />- `1` = allowed<br /><br />Default: `0`<br /><br />`REG_DWORD`|
Expand All @@ -52,7 +52,7 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/
|**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Alternate local directory for Node.js archives (air-gapped mirrors). Overrides cache.<br /><br />`REG_SZ`|
|**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Restrict installs to `LocalInstallDir` only.<br /><br />- `0` = off<br />- `1` = on<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Audit logging**|`LogExecutions`|**Overridable** (`log_executions`). Log every Node.js invocation to the Windows Event Log (shim-only). Most useful on **Audit+** (structured ETW).<br /><br />- `0` = off<br />- `1` = on<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Skip malware checks**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Skip malware checks for package-manager and node shims. The definition file still updates. HKLM wins over HKCU.<br /><br />- `0` = check<br />- `1` = skip<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Skip malware checks**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Skip malware checks for package-manager and node shims. The definition file still updates. HKLM wins over HKCU. `AirGapped` with no `malware.db` also skips, without this key.<br /><br />- `0` = check<br />- `1` = skip<br /><br />Default: `0`<br /><br />`REG_DWORD`|
|**Wrap bun for malware checks**|`ShimBun`|**Overridable** (`shim_bun`). Wrap `bun` and `bunx` so OpenSSF malware checks run when bun is used as a package manager. NVM for Windows does not install bun and does not switch bun versions. HKLM wins over HKCU.<br /><br />- `0` = no bun shims<br />- `1` = create `{DataRoot}/.shim/bun.exe` and `bunx.exe`<br /><br />Default: `0` Community, `1` Certified Builds<br /><br />`REG_DWORD`|
|**Notify malware definitions**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Certified only. Silent toast after definitions change. HKLM can force it off.<br /><br />- `0` = hide<br />- `1` = show<br /><br />Default: `1`<br /><br />`REG_DWORD`|
|**Malware allow list**|`MalwareAllowList`|HKLM only. Patterns that clear an OpenSSF hit. Byte-for-byte. A `*` clears every OpenSSF hit. Does not clear an organization block. Empty allows nothing.<br /><br />`REG_MULTI_SZ`|
Expand Down
2 changes: 1 addition & 1 deletion docs/features/author-mirror.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Organizations whose policies prevent storing any organization data on hosted ser
| [`local_dir`](../cfg/registry#available-registry-keys) | `LocalInstallDir` | Directory of pre-staged Node archives (+ checksums). Preferred over network when present. |
| [`local_install_only`](../cfg/registry#available-registry-keys) | `LocalInstallOnly` | If on, **never** download; fail when the version is missing locally. |

`AirGapped` is separate: it only forces **offline license JWKS** verification (`licensing.author.io` skipped). It does **not** by itself block Node downloads — use `LocalInstallOnly` (and/or remove remote mirrors) for install air-gaps. See [Local Installations](./local-installations) and [Air-gapped Installations](../guide/air-gapped-installations).
`AirGapped` is separate: it only forces **offline license JWKS** verification (`licensing.author.io` skipped). It does **not** by itself block Node downloads — use `LocalInstallOnly` (and/or remove remote mirrors) for install air-gaps. When `AirGapped` is on and `malware.db` is missing, the shim skips malware scans. See [Local Installations](./local-installations) and [Air-gapped Installations](../guide/air-gapped-installations).

## Related

Expand Down
2 changes: 1 addition & 1 deletion docs/features/cache.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Under the NVM data root (parent of the install root; default `%LOCALAPPDATA%\Aut
|-------|------|----------|
| Versions | `.cache/versions` | Node.js `.7z` archives (`node-v{version}-win-{x64\|arm64}.7z`) |
| Metadata | `.cache/metadata` | Sync/release index metadata (not install archives) |
| Malware scans | `.cache/malware-scan` | One stamp per scanned lockfile. `malware.db` itself lives in the data root, next to this `.cache` directory |
| Malware scans | `.cache/malware-scan` | One stamp per scanned lockfile. `malware.db` itself lives in the data root, next to this `.cache` directory. If `AirGapped` is on and `malware.db` is missing, the shim skips the scan. |
| HTTP | `.cache/http` | Short-lived HTTP bodies (for example SHASUM fetches) |

If [`local_dir`](../cfg/registry#available-registry-keys) is set (see [registry policy](../cfg/registry)), that directory **replaces** `.cache/versions` as the archive source for installs.
Expand Down
2 changes: 2 additions & 0 deletions docs/guide/air-gapped-installations.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,6 @@ Repeat prefetch on a connected host when new Node releases are approved, update

:::tip[Certified Builds]
[`air_gapped`](../cfg/registry#available-registry-keys) controls offline license/JWKS behavior for Author mirrors _(Governance)_. It does **not** point Node installs at a local archive folder. Use [`local_dir`](../cfg/registry#available-registry-keys)/[`local_install_only`](../cfg/registry#available-registry-keys) (or the steps above) for that.

When `AirGapped` is on and `malware.db` is not on disk, the shim skips malware scans. Copy a valid `malware.db` into the NVM data root if you want those checks. An invalid file still blocks.
:::
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ certified:

|Имя|Ключ|Описание|
|:-|:-|:-|
|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Пропустить live-загрузку JWKS с `licensing.author.io`. Проверять `AccessToken` только по офлайн-хранилищу JWKS с подписью COSE (`JwksCose` или `nvm-jwks.cose` рядом с `nvm.exe`). Независимо от `LocalInstallOnly`.<br /><br />- `0` = выкл.<br />- `1` = вкл.<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Пропустить live-загрузку JWKS с `licensing.author.io`. Проверять `AccessToken` только по офлайн-хранилищу JWKS с подписью COSE (`JwksCose` или `nvm-jwks.cose` рядом с `nvm.exe`). Независимо от `LocalInstallOnly`. Если включено и `malware.db` нет на диске, shim пропускает проверки malware. Повреждённый `malware.db` всё равно блокирует.<br /><br />- `0` = выкл.<br />- `1` = вкл.<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Version aliases**|`Aliases`|**Overridable.** Централизованные псевдонимы (например, `stable=24.9.0`). Блокирует пользовательские псевдонимы, если задано политикой.<br /><br />`alias=version` на запись<br /><br />`REG_MULTI_SZ`|
|**Allow cache deletion**|`AllowDownloadCacheDelete`|**Overridable** (`allow_download_cache_removal`). Можно ли удалять кэшированные загрузки (`nvm cache remove`).<br /><br />- `0` = заблокировано<br />- `1` = разрешено<br /><br />По умолчанию: `1`<br /><br />`REG_DWORD`|
|**Allow insecure downloads**|`AllowInsecureDownloads`|**Overridable** (`allow_insecure_downloads`). Разрешить загрузки при просроченных или недействительных TLS-сертификатах.<br /><br />- `0` = заблокировано<br />- `1` = разрешено<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
Expand All @@ -43,7 +43,7 @@ certified:
|**Cache downloads**|`CacheDownloads`|**Overridable** (`cache_downloads`). Кэшировать загруженные версии Node.js для офлайн-использования.<br /><br />- `0` = выкл./false<br />- `1` = вкл./true<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Default detect file**|`DefaultDetectFile`|**Overridable** (`default_detect_file`). Файл, записываемый при закреплении версии (`nvm pin`) (только shim).<br /><br />По умолчанию: `.nvmrc`<br /><br />`REG_SZ`|
|**Disable announcements**|`DisableAnnouncements`|**Overridable** (`disable_announcements`). Скрыть объявления проекта и релизов.<br /><br />- `0` = показывать<br />- `1` = скрывать<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Пропускать проверки malware**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Не проверять пакеты и `node` по списку malware. Файл определений всё равно обновляется. HKLM важнее HKCU.<br /><br />- `0` = проверять<br />- `1` = пропустить<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Пропускать проверки malware**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Не проверять пакеты и `node` по списку malware. Файл определений всё равно обновляется. HKLM важнее HKCU. `AirGapped` без `malware.db` тоже пропускает, без этого ключа.<br /><br />- `0` = проверять<br />- `1` = пропустить<br /><br />По умолчанию: `0`<br /><br />`REG_DWORD`|
|**Уведомлять об обновлении определений**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Только Certified. Тихое уведомление после смены определений. HKLM может отключить его.<br /><br />- `0` = скрыть<br />- `1` = показать<br /><br />По умолчанию: `1`<br /><br />`REG_DWORD`|
|**Список разрешённых malware-имён**|`MalwareAllowList`|Только HKLM. Шаблоны, которые снимают попадание OpenSSF. Сравнение по байтам. `*` снимает все попадания OpenSSF и не снимает блок организации.<br /><br />`REG_MULTI_SZ`|
|**Список блокировки malware**|`MalwareBlockList`|Только Certified. Шаблоны HKLM, которые всегда блокируют, или один URL `https://`. Community игнорирует этот список.<br /><br />`REG_MULTI_SZ`|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Hosted rules настраиваются через клиентский порт
| [`local_dir`](../cfg/registry#available-registry-keys) | `LocalInstallDir` | Каталог предразмещённых архивов Node (+ checksums). Предпочтительнее сети, если есть. |
| [`local_install_only`](../cfg/registry#available-registry-keys) | `LocalInstallOnly` | Если включено, **никогда** не загружать; ошибка при отсутствии версии локально. |

`AirGapped` отдельно: только принудительная **офлайн-проверка license JWKS** (`licensing.author.io` пропускается). Сама по себе **не** блокирует загрузки Node — для air-gap установок используйте `LocalInstallOnly` (и/или уберите удалённые зеркала). См. [Локальные установки](./local-installations) и [Изолированные установки](../guide/air-gapped-installations).
`AirGapped` отдельно: только принудительная **офлайн-проверка license JWKS** (`licensing.author.io` пропускается). Сама по себе **не** блокирует загрузки Node — для air-gap установок используйте `LocalInstallOnly` (и/или уберите удалённые зеркала). Если `AirGapped` включён и `malware.db` нет, shim пропускает проверки malware. См. [Локальные установки](./local-installations) и [Изолированные установки](../guide/air-gapped-installations).

## См. также

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,6 @@ node -v

:::tip[Certified Builds]
[`air_gapped`](../cfg/registry#available-registry-keys) управляет offline-поведением лицензии/JWKS для зеркал Author _(Governance)_. Она **не** указывает установкам Node локальную папку архивов. Для этого используйте [`local_dir`](../cfg/registry#available-registry-keys)/[`local_install_only`](../cfg/registry#available-registry-keys) (или шаги выше).

Если `AirGapped` включён и `malware.db` нет на диске, shim пропускает проверки malware. Скопируйте действующий `malware.db` в корень данных NVM, если проверки нужны. Повреждённый файл всё равно блокирует.
:::
Loading