From 0ecd17573a70b8dd7a7fc1a3f7a6e15f50e53e1d Mon Sep 17 00:00:00 2001
From: Corey Butler <770982+coreybutler@users.noreply.github.com>
Date: Wed, 28 Oct 2026 22:00:53 -0500
Subject: [PATCH] docs: lifecycle scripts inherit Governance node flags
npm/npx/pnpm get permission/V8 flags through npm_config_node_options
when policy is on. Default off does not write that env var.
Signed-off-by: Corey Butler <770982+coreybutler@users.noreply.github.com>
---
docs/cfg/core.md | 2 +-
docs/cfg/enterprise/registry.md | 6 +++---
docs/command/package-manager-shims.md | 5 +++--
docs/guide/builds/index.md | 6 +++---
docs/guide/security.md | 8 ++++----
.../ru/docusaurus-plugin-content-docs/current/cfg/core.md | 2 +-
.../current/cfg/enterprise/registry.md | 6 +++---
.../current/command/package-manager-shims.md | 5 +++--
.../current/guide/builds/index.md | 6 +++---
.../current/guide/security.md | 8 ++++----
10 files changed, 28 insertions(+), 26 deletions(-)
diff --git a/docs/cfg/core.md b/docs/cfg/core.md
index 2de9c3c..9503f79 100644
--- a/docs/cfg/core.md
+++ b/docs/cfg/core.md
@@ -117,7 +117,7 @@ _(not listed in `cfg docs`)_
| Version aliases (`stable=24.x`, etc.) | Prefer [`nvm alias`](../command/nvm/alias); values are stored as `aliases` |
| Turn version management on/off | [`nvm on`](../command/nvm/on)/[`nvm off`](../command/nvm/off) (writes `enabled`) |
| Active/last version | Managed by [`nvm use`](../command/nvm/use) (`active_version`, `last_version`) |
-| Shim security/V8 flags _(Governance)_ | [Registry reference](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`) |
+| Shim security/V8 flags _(Governance)_ | [Registry reference](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`). Off by default: no `npm_config_node_options` write. When on, npm/npx/pnpm lifecycle scripts inherit the same flags. |
| Governance locks (mirrors, version allow/block lists, proxies) | [Administrative Templates](ad) and [registry policies](registry) — Certified Builds |
```powershell
diff --git a/docs/cfg/enterprise/registry.md b/docs/cfg/enterprise/registry.md
index b5ca171..eb97cf4 100644
--- a/docs/cfg/enterprise/registry.md
+++ b/docs/cfg/enterprise/registry.md
@@ -45,11 +45,11 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/
|**Cache downloads**|`CacheDownloads`|**Overridable** (`cache_downloads`). Cache downloaded Node.js versions for offline reuse.
- `0` = off/false
- `1` = on/true
Default: `0`
`REG_DWORD`|
|**Default detect file**|`DefaultDetectFile`|**Overridable** (`default_detect_file`). File written when pinning a version (`nvm pin`) (shim-only).
Default: `.nvmrc`
`REG_SZ`|
|**Disable announcements**|`DisableAnnouncements`|**Overridable** (`disable_announcements`). Suppress project and release announcements.
- `0` = shown
- `1` = hidden
Default: `0`
`REG_DWORD`|
-|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Shim prepends `--disallow-code-generation-from-strings`, blocking `eval()` and `new Function()` (shim-only). Does not affect `node:vm`.
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
+|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Node shim prepends `--disallow-code-generation-from-strings`, blocking `eval()` and `new Function()` (shim-only). When `1`, the package-manager proxy also merges this flag into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Does not affect `node:vm`.
- `0` = off (no env write)
- `1` = on
Default: `0`
`REG_DWORD`|
|**Disable NVM upgrades**|`DisableUpgrade`|**Overridable.** Block in-app NVM upgrades (does not block AD/GPO package deployment).
- `0` = allowed
- `1` = blocked
Default: `0`
`REG_DWORD`|
|**Disable version management**|`Enabled`|**Overridable** (`nvm on`/`nvm off`). Forces version management on or off. When off, NVM does not manage or redirect Node.js commands.
- `0` = off (`nvm off`)
- `1` = on
Default: `1`
`REG_DWORD`|
-|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Shim prepends Node permission-model flag on every `node.exe` launch (shim-only). Default-deny FS/network unless the process passes `--allow-*` at runtime. NVM does not inject `--allow-*` grants. NVM never injects `--permission-audit` (Node 25.8+ report-only). There is no policy that forces `--permission-audit`.
- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: no flag (unsupported)
- HKLM Policies `1`: strip caller `--permission-audit` and inject `--permission` / `--experimental-permission`. Filter `--allow-*` even if the caller already passed `--permission`.
- Preference-only `1`: caller `--permission-audit` is a debug exception (no inject).
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
-|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Shim prepends `--frozen-intrinsics` so built-in prototypes cannot be patched (shim-only; Node.js 12+). Adds measurable startup cost.
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
+|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Node shim prepends Node permission-model flag on `node` launches (shim-only). When `1`, the package-manager proxy also merges the same flag and `DefaultPermissionGrants` into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. npm-cli.js itself is not launched under `--permission`. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Default-deny FS/network unless the process passes `--allow-*` at runtime. NVM does not inject `--allow-*` grants except `DefaultPermissionGrants`. NVM never injects `--permission-audit` (Node 25.8+ report-only). There is no policy that forces `--permission-audit`.
- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: no flag (unsupported)
- HKLM Policies `1`: strip caller `--permission-audit` (and `--permission-audit` already in `npm_config_node_options`) and inject `--permission` / `--experimental-permission`. Filter `--allow-*` even if the caller already passed `--permission`.
- Preference-only `1`: caller `--permission-audit` is a debug exception for `node` (no inject). Proxy still merges `--permission` into `npm_config_node_options` without stripping existing tokens.
- `0` = off (no env write)
- `1` = on
Default: `0`
`REG_DWORD`|
+|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Node shim prepends `--frozen-intrinsics` so built-in prototypes cannot be patched (shim-only; Node.js 12+). When `1`, the package-manager proxy also merges this flag into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Adds measurable startup cost.
- `0` = off (no env write)
- `1` = on
Default: `0`
`REG_DWORD`|
|**Install root**|`InstallRoot`|**Overridable** (`root`). Directory where Node.js versions are stored. Overrides machine and user preferences.
Default: `%LOCALAPPDATA%\Author Software\nvm\installs`
`REG_SZ`|
|**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Alternate local directory for Node.js archives (air-gapped mirrors). Overrides cache.
`REG_SZ`|
|**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Restrict installs to `LocalInstallDir` only.
- `0` = off
- `1` = on
Default: `0`
`REG_DWORD`|
diff --git a/docs/command/package-manager-shims.md b/docs/command/package-manager-shims.md
index 71c103c..ac5b190 100644
--- a/docs/command/package-manager-shims.md
+++ b/docs/command/package-manager-shims.md
@@ -22,8 +22,9 @@ Global CLIs installed with those managers (for example `tsc`) use the same `prox
5. Check the version directory is safe (not a reparse point, not cross-user writable) — failure → **NVM4305**.
6. Locate the delegated command under the Node install (`.exe`, then `.cmd`, then `.bat`).
7. Enforce package-manager constraints when policy applies (npm / npx / pnpm / yarn). HKLM `BlockPackageManagerLifecycleScripts` forces `--ignore-scripts` or `YARN_ENABLE_SCRIPTS=false`. Certified Builds with Advanced Logging write **NVM4412** for install-class commands only.
-8. Verify trust of `node.exe` and the delegated target (below).
-9. Spawn the real tool (for npm/npx/corepack: often `node.exe` + `*-cli.js`; otherwise the `.exe` / `.cmd`).
+8. When `EnforcePermissionModel`, `FreezeV8GlobalObjects`, or `DisableEvalAndStringExecution` is on, merge those Node flags into `npm_config_node_options` for npm/npx/pnpm so lifecycle scripts inherit them. Default off: no env write. Does not set `NODE_OPTIONS`. Yarn, bun, corepack, and vlt are skipped. npm-cli.js itself is not launched under `--permission`.
+9. Verify trust of `node.exe` and the delegated target (below).
+10. Spawn the real tool (for npm/npx/corepack: often `node.exe` + `*-cli.js`; otherwise the `.exe` / `.cmd`).
Canonical binary: `{DataRoot}/proxy.exe`. Per-command shims: `{DataRoot}/.shim/{name}.exe` (hardlink or copy of `proxy.exe`).
diff --git a/docs/guide/builds/index.md b/docs/guide/builds/index.md
index 072f4a0..ae0d0da 100644
--- a/docs/guide/builds/index.md
+++ b/docs/guide/builds/index.md
@@ -71,9 +71,9 @@ The Governance package for certified builds introduce policy management. With th
- Utilize corporate proxies (IWA, PAC/WPAD).
- Block unapproved Node.js Versions (i.e. EOL, vulnerable, or unstable versions).
- Require custom npm/yarn/pnpm cooldown periods.
-- Enforce Node.js permission model (`--permission` / `--experimental-permission`) so each `node.exe` starts default-deny; apps must pass `--allow-*` at runtime.
-- Freeze V8 intrinsics (`--frozen-intrinsics`) to prevent prototype pollution of built-ins.
-- Disallow `eval()` / `new Function()` (`--disallow-code-generation-from-strings`).
+- Enforce Node.js permission model (`--permission` / `--experimental-permission`) so shimmed `node` starts default-deny; npm/npx/pnpm lifecycle scripts inherit the same flags via `npm_config_node_options` when the policy is on. Apps must pass `--allow-*` at runtime.
+- Freeze V8 intrinsics (`--frozen-intrinsics`) to prevent prototype pollution of built-ins (also applied to npm/npx/pnpm scripts when the policy is on).
+- Disallow `eval()` / `new Function()` (`--disallow-code-generation-from-strings`) (also applied to npm/npx/pnpm scripts when the policy is on).
- Limit to local installations (airgapping).
- Restrict version installations (ex: lts/non-EOL/non-ALPHA) with the version firewall.
diff --git a/docs/guide/security.md b/docs/guide/security.md
index 31d5690..53e45e7 100644
--- a/docs/guide/security.md
+++ b/docs/guide/security.md
@@ -181,13 +181,13 @@ Supply-chain risk inside transitive `node_modules` remains largely an upstream r
## 4. Node permission and V8 lockdown (Governance, shim mode)
-Most teams never pass Node’s permission model flags. Governance policy can force them on every shimmed launch:
+Most teams never pass Node’s permission model flags. Governance policy can force them on shimmed `node` and, when at least one of these keys is on, on npm/npx/pnpm lifecycle scripts. Default off does not write `npm_config_node_options`. Yarn, bun, corepack, and vlt are not covered. NVM does not set `NODE_OPTIONS`.
| Policy | Effect |
|:-|:-|
-| `EnforcePermissionModel` | Prepend `--permission` (Node 23+) or `--experimental-permission` (20–22). Default-deny FS/network until the process passes `--allow-*`. NVM does not inject grants. HKLM Policies strips caller `--permission-audit` (report-only) and still injects `--permission`. Preference-only enforce leaves `--permission-audit` as a debug exception. NVM never injects `--permission-audit`. |
-| `FreezeV8GlobalObjects` | Prepend `--frozen-intrinsics` |
-| `DisableEvalAndStringExecution` | Prepend `--disallow-code-generation-from-strings` (blocks `eval` / `new Function`; does not cover `node:vm`) |
+| `EnforcePermissionModel` | Prepend `--permission` (Node 23+) or `--experimental-permission` (20–22) on `node`. Default-deny FS/network until the process passes `--allow-*`. NVM does not inject grants except `DefaultPermissionGrants`. HKLM Policies strips caller `--permission-audit` (report-only) and still injects `--permission`. Preference-only enforce leaves `--permission-audit` as a debug exception on `node`. Proxy merges the same flags into `npm_config_node_options` for npm/npx/pnpm; HKLM also strips `--permission-audit` from that variable. NVM never injects `--permission-audit`. |
+| `FreezeV8GlobalObjects` | Prepend `--frozen-intrinsics` on `node`; same flag in `npm_config_node_options` for npm/npx/pnpm when on |
+| `DisableEvalAndStringExecution` | Prepend `--disallow-code-generation-from-strings` (blocks `eval` / `new Function`; does not cover `node:vm`). Same flag in `npm_config_node_options` for npm/npx/pnpm when on |
See [Operating Modes](../features/modes) and [registry keys](../cfg/registry#available-registry-keys).
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
index 99f6c81..a7a8179 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md
@@ -112,7 +112,7 @@ _(не перечислены в `cfg docs`)_
| Псевдонимы версий (`stable=24.x` и т. д.) | Предпочтительно [`nvm alias`](../command/nvm/alias); значения хранятся как `aliases` |
| Включение/отключение управления версиями | [`nvm on`](../command/nvm/on)/[`nvm off`](../command/nvm/off) (записывает `enabled`) |
| Активная/последняя версия | Управляется [`nvm use`](../command/nvm/use) (`active_version`, `last_version`) |
-| Безопасность shim / флаги V8 _(Governance)_ | [Справочник реестра](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`) |
+| Безопасность shim / флаги V8 _(Governance)_ | [Справочник реестра](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`). По умолчанию выкл.: `npm_config_node_options` не пишется. При включении lifecycle-скрипты npm/npx/pnpm наследуют те же флаги. |
| Блокировки Governance (зеркала, списки разрешённых/заблокированных версий, прокси) | [Административные шаблоны](ad) и [политики реестра](registry) — Certified Builds |
```powershell
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
index 92942f7..2ccf91c 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md
@@ -50,11 +50,11 @@ certified:
|**Список разрешённых malware-имён**|`MalwareAllowList`|Только HKLM. Шаблоны, которые снимают попадание OpenSSF. Сравнение по байтам. `*` снимает все попадания OpenSSF и не снимает блок организации.
`REG_MULTI_SZ`|
|**Список блокировки malware**|`MalwareBlockList`|Только Certified. Шаблоны HKLM, которые всегда блокируют, или один URL `https://`. Community игнорирует этот список.
`REG_MULTI_SZ`|
|**Конфликт доверия malware**|`MalwareTrustConflict`|Только Certified. **Overridable** (`malware_trust_conflict`). `prevent` (по умолчанию) блокирует доверенное или одобренное имя из OpenSSF. `continue` пропускает такое явное доверие. HKLM важнее HKCU.
`REG_SZ`|
-|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Shim добавляет `--disallow-code-generation-from-strings`, блокируя `eval()` и `new Function()` (только shim). Не влияет на `node:vm`.
- `0` = выкл.
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
+|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Node shim добавляет `--disallow-code-generation-from-strings`, блокируя `eval()` и `new Function()` (только shim). При `1` proxy также вписывает этот флаг в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся.
- `0` = выкл. (без записи env)
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
|**Disable NVM upgrades**|`DisableUpgrade`|**Overridable.** Блокировать обновления NVM в приложении (не блокирует развёртывание пакетов AD/GPO).
- `0` = разрешено
- `1` = заблокировано
По умолчанию: `0`
`REG_DWORD`|
|**Disable version management**|`Enabled`|**Overridable** (`nvm on`/`nvm off`). Принудительно включает или отключает управление версиями. При выкл. NVM не управляет и не перенаправляет команды Node.js.
- `0` = выкл. (`nvm off`)
- `1` = вкл.
По умолчанию: `1`
`REG_DWORD`|
-|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Shim добавляет флаг permission model Node при каждом запуске `node.exe` (только shim). Запрет FS/сети по умолчанию, если процесс не передаёт `--allow-*` во время выполнения. NVM не добавляет grants `--allow-*`. NVM никогда не внедряет `--permission-audit` (Node 25.8+, только отчёт). Политики не форсируют `--permission-audit`.
- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: без флага (не поддерживается)
- HKLM Policies `1`: удаляет `--permission-audit` у вызывающего и внедряет `--permission` / `--experimental-permission`. Фильтрует `--allow-*`, даже если вызывающий уже передал `--permission`.
- Только Preferences `1`: `--permission-audit` — отладочное исключение (без внедрения).
- `0` = выкл.
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
-|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Shim добавляет `--frozen-intrinsics`, чтобы встроенные прототипы нельзя было изменять (только shim; Node.js 12+). Увеличивает время запуска.
- `0` = выкл.
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
+|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Node shim добавляет флаг permission model Node при запуске `node` (только shim). При `1` proxy также вписывает тот же флаг и `DefaultPermissionGrants` в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. npm-cli.js сам не запускается под `--permission`. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся. Запрет FS/сети по умолчанию, если процесс не передаёт `--allow-*` во время выполнения. NVM не добавляет grants `--allow-*`, кроме `DefaultPermissionGrants`. NVM никогда не внедряет `--permission-audit` (Node 25.8+, только отчёт). Политики не форсируют `--permission-audit`.
- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: без флага (не поддерживается)
- HKLM Policies `1`: удаляет `--permission-audit` у вызывающего (и из `npm_config_node_options`) и внедряет `--permission` / `--experimental-permission`. Фильтрует `--allow-*`, даже если вызывающий уже передал `--permission`.
- Только Preferences `1`: `--permission-audit` — отладочное исключение для `node` (без внедрения). Proxy всё равно вписывает `--permission` в `npm_config_node_options` без удаления существующих токенов.
- `0` = выкл. (без записи env)
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
+|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Node shim добавляет `--frozen-intrinsics`, чтобы встроенные прототипы нельзя было изменять (только shim; Node.js 12+). При `1` proxy также вписывает этот флаг в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся. Увеличивает время запуска.
- `0` = выкл. (без записи env)
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
|**Install root**|`InstallRoot`|**Overridable** (`root`). Каталог хранения версий Node.js. Переопределяет настройки машины и пользователя.
По умолчанию: `%LOCALAPPDATA%\Author Software\nvm\installs`
`REG_SZ`|
|**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Альтернативный локальный каталог архивов Node.js (air-gapped зеркала). Переопределяет кэш.
`REG_SZ`|
|**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Ограничить установки только `LocalInstallDir`.
- `0` = выкл.
- `1` = вкл.
По умолчанию: `0`
`REG_DWORD`|
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
index 175182d..33c6038 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md
@@ -22,8 +22,9 @@ Proxy разрешает активную версию Node.js (те же пра
5. Проверяет, что каталог версии безопасен (не reparse point, не writable другими пользователями) — отказ → **NVM4305**.
6. Находит делегированную команду в установке Node (`.exe`, затем `.cmd`, затем `.bat`).
7. Применяет ограничения package manager, если действует политика (npm / npx / pnpm / yarn). HKLM `BlockPackageManagerLifecycleScripts` принудительно ставит `--ignore-scripts` или `YARN_ENABLE_SCRIPTS=false`. Certified Builds с Advanced Logging пишут **NVM4412** только для install-команд.
-8. Проверяет доверие к `node.exe` и делегированной цели (ниже).
-9. Запускает реальный инструмент (для npm/npx/corepack часто `node.exe` + `*-cli.js`; иначе `.exe` / `.cmd`).
+8. Если включены `EnforcePermissionModel`, `FreezeV8GlobalObjects` или `DisableEvalAndStringExecution`, вписывает эти флаги Node в `npm_config_node_options` для npm/npx/pnpm, чтобы lifecycle-скрипты их наследовали. По умолчанию выкл.: env не пишется. `NODE_OPTIONS` не задаётся. Yarn, bun, corepack и vlt пропускаются. npm-cli.js сам не запускается под `--permission`.
+9. Проверяет доверие к `node.exe` и делегированной цели (ниже).
+10. Запускает реальный инструмент (для npm/npx/corepack часто `node.exe` + `*-cli.js`; иначе `.exe` / `.cmd`).
Канонический бинарник: `{DataRoot}/proxy.exe`. Shim на команду: `{DataRoot}/.shim/{name}.exe` (hardlink или копия `proxy.exe`).
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md b/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md
index cee7adc..190fea2 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md
@@ -66,9 +66,9 @@ NVM for Windows распространяется компанией Author Softw
- Использовать корпоративные прокси (IWA, PAC/WPAD).
- Блокировать неутверждённые версии Node.js (EOL, уязвимые или нестабильные).
- Задавать пользовательские cooldown для npm/yarn/pnpm.
-- Применять модель прав Node.js (`--permission` / `--experimental-permission`), чтобы каждый `node.exe` стартовал с default-deny; приложениям нужно передавать `--allow-*` при запуске.
-- Замораживать intrinsics V8 (`--frozen-intrinsics`), чтобы предотвратить загрязнение прототипов встроенных объектов.
-- Запрещать `eval()` / `new Function()` (`--disallow-code-generation-from-strings`).
+- Применять модель прав Node.js (`--permission` / `--experimental-permission`), чтобы shim-`node` стартовал с default-deny; lifecycle-скрипты npm/npx/pnpm наследуют те же флаги через `npm_config_node_options`, когда политика включена. Приложениям нужно передавать `--allow-*` при запуске.
+- Замораживать intrinsics V8 (`--frozen-intrinsics`), чтобы предотвратить загрязнение прототипов встроенных объектов (также для скриптов npm/npx/pnpm при включённой политике).
+- Запрещать `eval()` / `new Function()` (`--disallow-code-generation-from-strings`) (также для скриптов npm/npx/pnpm при включённой политике).
- Ограничивать установки локальными источниками (air-gapping).
- Ограничивать устанавливаемые версии (например lts/non-EOL/non-ALPHA) через version firewall.
diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md b/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md
index 886bd95..5a7ed95 100644
--- a/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md
+++ b/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md
@@ -124,13 +124,13 @@ NVM **сейчас не** применяет allow/deny list **пакетов**
## 4. Permission model и V8 lockdown Node (Governance, shim) \{#node-permission-and-v8-lockdown-governance-shim-mode}
-Большинство команд не передают флаги permission model Node. Политика Governance может принудительно включать их на каждый shim-запуск:
+Большинство команд не передают флаги permission model Node. Политика Governance может принудительно включать их на shim-`node` и, если хотя бы один ключ включён, на lifecycle-скрипты npm/npx/pnpm. По умолчанию выкл.: `npm_config_node_options` не пишется. Yarn, bun, corepack и vlt не покрыты. NVM не задаёт `NODE_OPTIONS`.
| Политика | Эффект |
|:-|:-|
-| `EnforcePermissionModel` | Добавляет `--permission` (Node 23+) или `--experimental-permission` (20–22). Default-deny FS/network, пока процесс не передаст `--allow-*`. NVM не внедряет grants. HKLM Policies удаляет `--permission-audit` (только отчёт) и всё равно внедряет `--permission`. Enforce только из Preferences оставляет `--permission-audit` как отладочное исключение. NVM никогда не внедряет `--permission-audit`. |
-| `FreezeV8GlobalObjects` | Добавляет `--frozen-intrinsics` |
-| `DisableEvalAndStringExecution` | Добавляет `--disallow-code-generation-from-strings` (блокирует `eval` / `new Function`; не покрывает `node:vm`) |
+| `EnforcePermissionModel` | Добавляет `--permission` (Node 23+) или `--experimental-permission` (20–22) на `node`. Default-deny FS/network, пока процесс не передаст `--allow-*`. NVM не внедряет grants, кроме `DefaultPermissionGrants`. HKLM Policies удаляет `--permission-audit` (только отчёт) и всё равно внедряет `--permission`. Enforce только из Preferences оставляет `--permission-audit` как отладочное исключение для `node`. Proxy вписывает те же флаги в `npm_config_node_options` для npm/npx/pnpm; HKLM также удаляет `--permission-audit` из этой переменной. NVM никогда не внедряет `--permission-audit`. |
+| `FreezeV8GlobalObjects` | Добавляет `--frozen-intrinsics` на `node`; тот же флаг в `npm_config_node_options` для npm/npx/pnpm при включении |
+| `DisableEvalAndStringExecution` | Добавляет `--disallow-code-generation-from-strings` (блокирует `eval` / `new Function`; не покрывает `node:vm`). Тот же флаг в `npm_config_node_options` для npm/npx/pnpm при включении |
См. [Operating Modes](../features/modes) и [ключи реестра](../cfg/registry#available-registry-keys).