renovate-bot opened a new pull request, #8874: URL: https://github.com/apache/texera/pull/8874
> ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [nx](https://nx.dev) ([source](https://redirect.github.com/nrwl/nx/tree/HEAD/packages/nx)) | [`23.0.2` → `23.2.1`](https://renovatebot.com/diffs/npm/nx/23.0.2/23.2.1) |  |  | --- ### Nx: Path traversal in nx migrate package-migrations extraction [CVE-2026-104853](https://nvd.nist.gov/vuln/detail/CVE-2026-104853) / [GHSA-hrvq-x7jp-36xv](https://redirect.github.com/advisories/GHSA-hrvq-x7jp-36xv) <details> <summary>More information</summary> #### Details ##### Summary `nx migrate` reads each target package's `nx-migrations.migrations` value from its manifest and extracts the referenced file to a path built by joining that value onto a temporary directory. The value is never validated, so a package whose `migrations` field contains `..` segments (or an absolute path) steers the extraction to write outside the temporary directory. A hostile package — or any package pulled in transitively through a trusted package's `packageGroup` — can write attacker-controlled content, or truncate an existing file, anywhere the running user can write. This happens during migration *planning*, before the user reviews the migration list and before `--run-migrations`, so it does not require the user to approve or execute anything. **Most workspaces need no action.** By default `nx migrate` does not run the nx installed in your workspace — it installs `nx@latest` into a temporary directory and performs the upgrade planning, including this extraction, with that copy. Now that a patched nx is the latest release, a default `nx migrate` run is unaffected whatever version the workspace has installed. The installed version only runs, and is only then exposed, when that hand-off is bypassed — see Remediation. ##### Severity Exploitable when the victim runs `nx migrate` against a package the attacker controls, directly or through a trusted package's `packageGroup`. The primary impact is a file write with attacker-controlled content and no path confinement; overwriting an auto-loaded file (a shell rc, a git hook, a CI script) escalates that write to code execution. There is no known evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 13.10.0, < 22.7.10`; `>= 23.0.0, < 23.2.1` | `22.7.10`, `23.2.1` | Every version in the ranges above is affected. The lower bound is 13.10.0, the first release where `nx migrate` extracted a package's migrations file from its tarball; earlier versions resolved migrations without that extraction. > [!IMPORTANT] > `nx migrate` normally fetches and runs `nx@latest` rather than the nx installed in your workspace. The ranges above therefore say where the vulnerable code ships, not who is exposed — it only runs when that hand-off is bypassed. ##### Remediation **If you run `nx migrate` normally, there is nothing to do.** It resolves and runs the latest nx, which is patched, so your workspace's own nx version does not matter for this flaw. Upgrade only if you bypass that hand-off and run the workspace's nx instead — that is, if you set `NX_USE_LOCAL` or `NX_MIGRATE_USE_LOCAL`, pin `NX_MIGRATE_CLI_VERSION` to an affected version, resume an existing run with `--run-id`, or run where the temporary install fails and `nx migrate` falls back to the local nx. In those cases upgrade to **22.7.10** (22.x line) or **23.2.1** (23.x line) or later: ``` nx migrate 23.2.1 ``` The fix is a drop-in — no configuration changes are required, and no legitimate `migrations` value is affected (real packages reference `./migrations.json` or another path within their own directory, all of which remain valid). Either way, do not run `nx migrate` against packages, or `packageGroup` members, that you do not trust. ##### Details While planning an upgrade, `nx migrate` extracts each target package's migrations file to a destination built by joining the package's own `nx-migrations.migrations` value onto a temporary directory. That value is read from the manifest without validation, and it is handled asymmetrically: the name Nx matches against the archive entries is normalized (so its `..` segments collapse), while the destination path it writes to is a raw join that keeps the `..` segments and resolves outside the temporary directory. Because the attacker controls the tarball, they name their entry to equal the normalized form; the match then succeeds and the bytes are written to the un-normalized, escaping destination. The normalization is not a defence — it only dictates what the attacker must name their entry. The same value also seeds the directory used for prompt-file extraction, which has the same shape, so both writes are steerable from the one field. Two distinct primitives fall out of this: - **Truncation** — the destination write stream is opened, and truncates, before any tar entry is inspected. So a package that points `migrations` at an existing file empties that file even when no tar entry matches — no crafted archive required. - **Controlled write** — when a tar entry's name matches, its bytes are written to the escaping destination. The extractor performs no path containment of its own. ##### Credits - **Arkadiusz Marta** (RE:SOURCE) — Reporter #### Severity - CVSS Score: 5.8 / 10 (Medium) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-hrvq-x7jp-36xv](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-hrvq-x7jp-36xv) - [https://nvd.nist.gov/vuln/detail/CVE-2026-104853](https://nvd.nist.gov/vuln/detail/CVE-2026-104853) - [https://github.com/nrwl/nx/pull/36887](https://redirect.github.com/nrwl/nx/pull/36887) - [https://github.com/nrwl/nx/commit/38cd82a0c05e8212e538bdb87ccb198d6504e58f](https://redirect.github.com/nrwl/nx/commit/38cd82a0c05e8212e538bdb87ccb198d6504e58f) - [https://github.com/nrwl/nx/commit/95474ab457e8e1dbdbefad29040c166105a8fb90](https://redirect.github.com/nrwl/nx/commit/95474ab457e8e1dbdbefad29040c166105a8fb90) - [https://github.com/nrwl/nx/commit/de37c5ebd1852fac700d70726326236ac398af3f](https://redirect.github.com/nrwl/nx/commit/de37c5ebd1852fac700d70726326236ac398af3f) - [https://github.com/nrwl/nx/releases/tag/22.7.10](https://redirect.github.com/nrwl/nx/releases/tag/22.7.10) - [https://github.com/nrwl/nx/releases/tag/23.2.1](https://redirect.github.com/nrwl/nx/releases/tag/23.2.1) - [https://github.com/advisories/GHSA-hrvq-x7jp-36xv](https://redirect.github.com/advisories/GHSA-hrvq-x7jp-36xv) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-hrvq-x7jp-36xv) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Nx daemon and plugin worker sockets are accessible to other local users [CVE-2026-104854](https://nvd.nist.gov/vuln/detail/CVE-2026-104854) / [GHSA-w3vv-58gj-gw77](https://redirect.github.com/advisories/GHSA-w3vv-58gj-gw77) <details> <summary>More information</summary> #### Details ##### Summary Nx creates the Unix domain sockets for its daemon and its plugin workers in a shared temporary directory with default permissions, so any other user on the same machine can connect to them. The daemon accepts a `PROCESS_IN_BACKGROUND` request that names a module to load and invokes its default export, which turns socket access into code execution inside the daemon process. On a multi-user machine — a shared build server, a shared developer box, or a container running several accounts — one local user can execute code as another user running Nx. ##### Severity Exploitable by any other unprivileged local user on a shared host while a daemon or plugin worker is running, with no user interaction. There is no known evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 14.6.0, < 22.7.9`; `>= 23.0.0, < 23.1.2` | `22.7.9`, `23.1.2` | Every version in the ranges above is affected. The lower bound is 14.6.0, when the daemon request handler that turns socket access into code execution was added. > [!IMPORTANT] > Single-user machines are not exposed. The vulnerability requires another local account on the same host, so an ordinary laptop with one user account is unaffected — the exposure is shared CI runners, shared build and development servers, and containers or images that run more than one uid. > > Disabling the daemon is not sufficient on its own: the plugin worker sockets used by plugin isolation are created in the same directory with the same permissions, and those are used during normal command runs whether or not the daemon is enabled. ##### Remediation Upgrade to **22.7.9** (22.x line) or **23.1.2** (23.x line) or later: ``` nx migrate 23.1.2 ``` On a shared machine, run `nx reset` after upgrading so that any sockets and directories created by an older version are removed rather than reused. If you cannot upgrade, point `NX_SOCKET_DIR` at a directory you own with mode `0700`, which is already honoured by the vulnerable versions, and disable the daemon with `NX_DAEMON=false` to reduce the reachable surface — though, per the callout above, that does not remove the plugin worker sockets. ##### Details The daemon and the plugin workers communicate over Unix domain sockets placed in a subdirectory of the shared OS temporary directory. That directory is created with default permissions, which on a typical system leave it readable and traversable by every user on the machine, and nothing narrows the socket files themselves. The directory name is derived from a hash of the workspace path and the process id, so it is unique but not secret — any local user who lists the temporary directory can find it. The connection carries no authentication: the containment is meant to be the filesystem permissions alone, and those are too broad. Any local process that can reach the socket is treated as a fully trusted client. The impact of that access is set by what the daemon's request handlers allow. One handler takes a module path from the request and loads and invokes it; because an absolute path resolves regardless of the lookup constraints in place, a caller who can write a file anywhere on the machine — their own home directory suffices — and connect to the socket can have the daemon execute it, as the user running the daemon. Other handlers expose workspace file contents, the project graph, and task hashes to the same unauthenticated caller. ##### Credits Reported by researchers at the University of Sydney: - Liyi - Ziyue - Strick - Maurice - Chenchen #### Severity - CVSS Score: 8.5 / 10 (High) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-w3vv-58gj-gw77](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-w3vv-58gj-gw77) - [https://nvd.nist.gov/vuln/detail/CVE-2026-104854](https://nvd.nist.gov/vuln/detail/CVE-2026-104854) - [https://github.com/nrwl/nx/pull/36370](https://redirect.github.com/nrwl/nx/pull/36370) - [https://github.com/nrwl/nx/commit/3298fd8b2dd066167eb3cc0410643994a59b0bba](https://redirect.github.com/nrwl/nx/commit/3298fd8b2dd066167eb3cc0410643994a59b0bba) - [https://github.com/nrwl/nx/commit/63e1abb287a3d69f8ba981828a1de325d0d3dc68](https://redirect.github.com/nrwl/nx/commit/63e1abb287a3d69f8ba981828a1de325d0d3dc68) - [https://github.com/nrwl/nx/commit/71c2253b6aac23b008e192c4e2642c42a5e07545](https://redirect.github.com/nrwl/nx/commit/71c2253b6aac23b008e192c4e2642c42a5e07545) - [https://github.com/nrwl/nx/releases/tag/22.7.9](https://redirect.github.com/nrwl/nx/releases/tag/22.7.9) - [https://github.com/nrwl/nx/releases/tag/23.1.2](https://redirect.github.com/nrwl/nx/releases/tag/23.1.2) - [https://github.com/advisories/GHSA-w3vv-58gj-gw77](https://redirect.github.com/advisories/GHSA-w3vv-58gj-gw77) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-w3vv-58gj-gw77) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Nx: OS command injection via git revisions and remote refs [GHSA-w2vw-w76x-qr89](https://redirect.github.com/advisories/GHSA-w2vw-w76x-qr89) <details> <summary>More information</summary> #### Details ##### Summary Nx core builds several `git` invocations as shell command strings with untrusted values interpolated into them, so a value that should be a git revision or ref is parsed by `/bin/sh` instead. Two entry points are reachable by an attacker: `affected` commands, where `defaultBase` / `affected.defaultBase` from `nx.json` (and the `NX_BASE` / `NX_HEAD` environment variables) reach `git merge-base` and `git diff`; and `nx import`, where a branch name advertised by a remote repository reaches `git fetch`, `git checkout`, and `git config`. In both cases an attacker who controls a repository — or who opens a pull request against one — gets arbitrary command execution on the machine of anyone who runs an ordinary Nx command against it, including CI runners. The `affected` path is the more serious of the two. `nx affected` and `nx show projects --affected` run constantly in CI, so a pull request that changes nothing but `nx.json` is enough to execute code on the runner with whatever credentials that job holds. ##### Severity Exploitable by anyone who controls repository content — a fork's pull request, or a repository the victim clones — that the victim then runs an ordinary `nx affected` or `nx import` against; no access to the victim's machine is required. We have no evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 14.0.0, < 22.7.8`; `>= 23.0.0, < 23.1.1` | `22.7.8`, `23.1.1` | Treat every version below the patched ones as affected. ##### Remediation Upgrade to **22.7.8** (22.x line) or **23.1.1** (23.x line) or later: ``` nx migrate 23.1.1 ``` The fix is a drop-in — no configuration changes are required. If you cannot upgrade, treat `nx.json` from untrusted sources as executable content, do not run `affected` commands against pull requests you have not reviewed, and do not run `nx import` against repositories you do not trust. ##### Details ##### `affected` commands Nx computes the merge base and the changed-file set by building `git merge-base` and `git diff` command lines as strings and running them through a shell. The base and head revisions in those strings come from `nx.json`'s `defaultBase` / `affected.defaultBase` or from the `NX_BASE` / `NX_HEAD` environment variables, and a related code path reads file contents with `git show <revision>:<path>` the same way. Because a shell parses the whole line, a revision value containing shell syntax is executed rather than passed to `git`. The revisions are wrapped in double quotes, which looks protective but is not: POSIX shells still perform command substitution inside double quotes, so a value of `$(…)` runs without needing to break out of the quotes. ##### `nx import` The `GitRepository` helper runs every git operation — `fetch`, `checkout`, `reset`, `config`, and others — by interpolating its arguments into a shell command string. The untrusted argument is a branch name: `nx import` lists the branches a remote advertises, offers them to the user to choose from, and feeds the chosen name back into those commands. A hostile repository controls the names of its own branches, so it controls the command that runs when one is selected. ##### Credits - **Arkadiusz Marta** (RE:SOURCE) — Reporter #### Severity - CVSS Score: 8.5 / 10 (High) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-w2vw-w76x-qr89](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-w2vw-w76x-qr89) - [https://github.com/nrwl/nx/pull/36348](https://redirect.github.com/nrwl/nx/pull/36348) - [https://github.com/nrwl/nx/pull/36379](https://redirect.github.com/nrwl/nx/pull/36379) - [https://github.com/nrwl/nx/commit/11ab38573478172109bb5306cb30ca4af246caf0](https://redirect.github.com/nrwl/nx/commit/11ab38573478172109bb5306cb30ca4af246caf0) - [https://github.com/nrwl/nx/commit/4159295a037fdbd8e7f44a33a19d85ab3792415b](https://redirect.github.com/nrwl/nx/commit/4159295a037fdbd8e7f44a33a19d85ab3792415b) - [https://github.com/nrwl/nx/commit/9ce184a04d2098a4797c8b0d6877ee079b751abf](https://redirect.github.com/nrwl/nx/commit/9ce184a04d2098a4797c8b0d6877ee079b751abf) - [https://github.com/nrwl/nx/commit/c12850ce7b364db08e325c13541641d754db7123](https://redirect.github.com/nrwl/nx/commit/c12850ce7b364db08e325c13541641d754db7123) - [https://github.com/nrwl/nx/commit/cd9b3c068e17adc9c1722b35b9ca962b98542c20](https://redirect.github.com/nrwl/nx/commit/cd9b3c068e17adc9c1722b35b9ca962b98542c20) - [https://github.com/nrwl/nx/commit/cf996496bbad727362d48292b50fafc8c3665847](https://redirect.github.com/nrwl/nx/commit/cf996496bbad727362d48292b50fafc8c3665847) - [https://github.com/nrwl/nx/releases/tag/22.7.8](https://redirect.github.com/nrwl/nx/releases/tag/22.7.8) - [https://github.com/nrwl/nx/releases/tag/23.1.1](https://redirect.github.com/nrwl/nx/releases/tag/23.1.1) - [https://github.com/advisories/GHSA-w2vw-w76x-qr89](https://redirect.github.com/advisories/GHSA-w2vw-w76x-qr89) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-w2vw-w76x-qr89) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Nx: OS command injection via git revisions and remote refs [GHSA-w2vw-w76x-qr89](https://redirect.github.com/advisories/GHSA-w2vw-w76x-qr89) <details> <summary>More information</summary> #### Details ##### Summary Nx core builds several `git` invocations as shell command strings with untrusted values interpolated into them, so a value that should be a git revision or ref is parsed by `/bin/sh` instead. Two entry points are reachable by an attacker: `affected` commands, where `defaultBase` / `affected.defaultBase` from `nx.json` (and the `NX_BASE` / `NX_HEAD` environment variables) reach `git merge-base` and `git diff`; and `nx import`, where a branch name advertised by a remote repository reaches `git fetch`, `git checkout`, and `git config`. In both cases an attacker who controls a repository — or who opens a pull request against one — gets arbitrary command execution on the machine of anyone who runs an ordinary Nx command against it, including CI runners. The `affected` path is the more serious of the two. `nx affected` and `nx show projects --affected` run constantly in CI, so a pull request that changes nothing but `nx.json` is enough to execute code on the runner with whatever credentials that job holds. ##### Severity Exploitable by anyone who controls repository content — a fork's pull request, or a repository the victim clones — that the victim then runs an ordinary `nx affected` or `nx import` against; no access to the victim's machine is required. We have no evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 14.0.0, < 22.7.8`; `>= 23.0.0, < 23.1.1` | `22.7.8`, `23.1.1` | Treat every version below the patched ones as affected. ##### Remediation Upgrade to **22.7.8** (22.x line) or **23.1.1** (23.x line) or later: ``` nx migrate 23.1.1 ``` The fix is a drop-in — no configuration changes are required. If you cannot upgrade, treat `nx.json` from untrusted sources as executable content, do not run `affected` commands against pull requests you have not reviewed, and do not run `nx import` against repositories you do not trust. ##### Details ##### `affected` commands Nx computes the merge base and the changed-file set by building `git merge-base` and `git diff` command lines as strings and running them through a shell. The base and head revisions in those strings come from `nx.json`'s `defaultBase` / `affected.defaultBase` or from the `NX_BASE` / `NX_HEAD` environment variables, and a related code path reads file contents with `git show <revision>:<path>` the same way. Because a shell parses the whole line, a revision value containing shell syntax is executed rather than passed to `git`. The revisions are wrapped in double quotes, which looks protective but is not: POSIX shells still perform command substitution inside double quotes, so a value of `$(…)` runs without needing to break out of the quotes. ##### `nx import` The `GitRepository` helper runs every git operation — `fetch`, `checkout`, `reset`, `config`, and others — by interpolating its arguments into a shell command string. The untrusted argument is a branch name: `nx import` lists the branches a remote advertises, offers them to the user to choose from, and feeds the chosen name back into those commands. A hostile repository controls the names of its own branches, so it controls the command that runs when one is selected. ##### Credits - **Arkadiusz Marta** (RE:SOURCE) — Reporter #### Severity - CVSS Score: 8.5 / 10 (High) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-w2vw-w76x-qr89](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-w2vw-w76x-qr89) - [https://github.com/nrwl/nx/pull/36348](https://redirect.github.com/nrwl/nx/pull/36348) - [https://github.com/nrwl/nx/pull/36379](https://redirect.github.com/nrwl/nx/pull/36379) - [https://github.com/nrwl/nx/commit/11ab38573478172109bb5306cb30ca4af246caf0](https://redirect.github.com/nrwl/nx/commit/11ab38573478172109bb5306cb30ca4af246caf0) - [https://github.com/nrwl/nx/commit/4159295a037fdbd8e7f44a33a19d85ab3792415b](https://redirect.github.com/nrwl/nx/commit/4159295a037fdbd8e7f44a33a19d85ab3792415b) - [https://github.com/nrwl/nx/commit/9ce184a04d2098a4797c8b0d6877ee079b751abf](https://redirect.github.com/nrwl/nx/commit/9ce184a04d2098a4797c8b0d6877ee079b751abf) - [https://github.com/nrwl/nx/commit/c12850ce7b364db08e325c13541641d754db7123](https://redirect.github.com/nrwl/nx/commit/c12850ce7b364db08e325c13541641d754db7123) - [https://github.com/nrwl/nx/commit/cd9b3c068e17adc9c1722b35b9ca962b98542c20](https://redirect.github.com/nrwl/nx/commit/cd9b3c068e17adc9c1722b35b9ca962b98542c20) - [https://github.com/nrwl/nx/commit/cf996496bbad727362d48292b50fafc8c3665847](https://redirect.github.com/nrwl/nx/commit/cf996496bbad727362d48292b50fafc8c3665847) - [https://github.com/nrwl/nx](https://redirect.github.com/nrwl/nx) - [https://github.com/nrwl/nx/releases/tag/22.7.8](https://redirect.github.com/nrwl/nx/releases/tag/22.7.8) - [https://github.com/nrwl/nx/releases/tag/23.1.1](https://redirect.github.com/nrwl/nx/releases/tag/23.1.1) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-w2vw-w76x-qr89) and the [GitHub Advisory Database](https://redirect.github.com/github/advisory-database) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Nx daemon and plugin worker sockets are accessible to other local users [CVE-2026-104854](https://nvd.nist.gov/vuln/detail/CVE-2026-104854) / [GHSA-w3vv-58gj-gw77](https://redirect.github.com/advisories/GHSA-w3vv-58gj-gw77) <details> <summary>More information</summary> #### Details ##### Summary Nx creates the Unix domain sockets for its daemon and its plugin workers in a shared temporary directory with default permissions, so any other user on the same machine can connect to them. The daemon accepts a `PROCESS_IN_BACKGROUND` request that names a module to load and invokes its default export, which turns socket access into code execution inside the daemon process. On a multi-user machine — a shared build server, a shared developer box, or a container running several accounts — one local user can execute code as another user running Nx. ##### Severity Exploitable by any other unprivileged local user on a shared host while a daemon or plugin worker is running, with no user interaction. There is no known evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 14.6.0, < 22.7.9`; `>= 23.0.0, < 23.1.2` | `22.7.9`, `23.1.2` | Every version in the ranges above is affected. The lower bound is 14.6.0, when the daemon request handler that turns socket access into code execution was added. > [!IMPORTANT] > Single-user machines are not exposed. The vulnerability requires another local account on the same host, so an ordinary laptop with one user account is unaffected — the exposure is shared CI runners, shared build and development servers, and containers or images that run more than one uid. > > Disabling the daemon is not sufficient on its own: the plugin worker sockets used by plugin isolation are created in the same directory with the same permissions, and those are used during normal command runs whether or not the daemon is enabled. ##### Remediation Upgrade to **22.7.9** (22.x line) or **23.1.2** (23.x line) or later: ``` nx migrate 23.1.2 ``` On a shared machine, run `nx reset` after upgrading so that any sockets and directories created by an older version are removed rather than reused. If you cannot upgrade, point `NX_SOCKET_DIR` at a directory you own with mode `0700`, which is already honoured by the vulnerable versions, and disable the daemon with `NX_DAEMON=false` to reduce the reachable surface — though, per the callout above, that does not remove the plugin worker sockets. ##### Details The daemon and the plugin workers communicate over Unix domain sockets placed in a subdirectory of the shared OS temporary directory. That directory is created with default permissions, which on a typical system leave it readable and traversable by every user on the machine, and nothing narrows the socket files themselves. The directory name is derived from a hash of the workspace path and the process id, so it is unique but not secret — any local user who lists the temporary directory can find it. The connection carries no authentication: the containment is meant to be the filesystem permissions alone, and those are too broad. Any local process that can reach the socket is treated as a fully trusted client. The impact of that access is set by what the daemon's request handlers allow. One handler takes a module path from the request and loads and invokes it; because an absolute path resolves regardless of the lookup constraints in place, a caller who can write a file anywhere on the machine — their own home directory suffices — and connect to the socket can have the daemon execute it, as the user running the daemon. Other handlers expose workspace file contents, the project graph, and task hashes to the same unauthenticated caller. ##### Credits Reported by researchers at the University of Sydney: - Liyi - Ziyue - Strick - Maurice - Chenchen #### Severity - CVSS Score: 8.5 / 10 (High) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-w3vv-58gj-gw77](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-w3vv-58gj-gw77) - [https://nvd.nist.gov/vuln/detail/CVE-2026-104854](https://nvd.nist.gov/vuln/detail/CVE-2026-104854) - [https://github.com/nrwl/nx/pull/36370](https://redirect.github.com/nrwl/nx/pull/36370) - [https://github.com/nrwl/nx/commit/3298fd8b2dd066167eb3cc0410643994a59b0bba](https://redirect.github.com/nrwl/nx/commit/3298fd8b2dd066167eb3cc0410643994a59b0bba) - [https://github.com/nrwl/nx/commit/63e1abb287a3d69f8ba981828a1de325d0d3dc68](https://redirect.github.com/nrwl/nx/commit/63e1abb287a3d69f8ba981828a1de325d0d3dc68) - [https://github.com/nrwl/nx/commit/71c2253b6aac23b008e192c4e2642c42a5e07545](https://redirect.github.com/nrwl/nx/commit/71c2253b6aac23b008e192c4e2642c42a5e07545) - [https://github.com/nrwl/nx](https://redirect.github.com/nrwl/nx) - [https://github.com/nrwl/nx/releases/tag/22.7.9](https://redirect.github.com/nrwl/nx/releases/tag/22.7.9) - [https://github.com/nrwl/nx/releases/tag/23.1.2](https://redirect.github.com/nrwl/nx/releases/tag/23.1.2) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-w3vv-58gj-gw77) and the [GitHub Advisory Database](https://redirect.github.com/github/advisory-database) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Nx: Path traversal in nx migrate package-migrations extraction [CVE-2026-104853](https://nvd.nist.gov/vuln/detail/CVE-2026-104853) / [GHSA-hrvq-x7jp-36xv](https://redirect.github.com/advisories/GHSA-hrvq-x7jp-36xv) <details> <summary>More information</summary> #### Details ##### Summary `nx migrate` reads each target package's `nx-migrations.migrations` value from its manifest and extracts the referenced file to a path built by joining that value onto a temporary directory. The value is never validated, so a package whose `migrations` field contains `..` segments (or an absolute path) steers the extraction to write outside the temporary directory. A hostile package — or any package pulled in transitively through a trusted package's `packageGroup` — can write attacker-controlled content, or truncate an existing file, anywhere the running user can write. This happens during migration *planning*, before the user reviews the migration list and before `--run-migrations`, so it does not require the user to approve or execute anything. **Most workspaces need no action.** By default `nx migrate` does not run the nx installed in your workspace — it installs `nx@latest` into a temporary directory and performs the upgrade planning, including this extraction, with that copy. Now that a patched nx is the latest release, a default `nx migrate` run is unaffected whatever version the workspace has installed. The installed version only runs, and is only then exposed, when that hand-off is bypassed — see Remediation. ##### Severity Exploitable when the victim runs `nx migrate` against a package the attacker controls, directly or through a trusted package's `packageGroup`. The primary impact is a file write with attacker-controlled content and no path confinement; overwriting an auto-loaded file (a shell rc, a git hook, a CI script) escalates that write to code execution. There is no known evidence of exploitation in the wild. ##### Affected & Patched Versions | Package | Vulnerable | Patched | | --- | --- | --- | | `nx` | `>= 13.10.0, < 22.7.10`; `>= 23.0.0, < 23.2.1` | `22.7.10`, `23.2.1` | Every version in the ranges above is affected. The lower bound is 13.10.0, the first release where `nx migrate` extracted a package's migrations file from its tarball; earlier versions resolved migrations without that extraction. > [!IMPORTANT] > `nx migrate` normally fetches and runs `nx@latest` rather than the nx installed in your workspace. The ranges above therefore say where the vulnerable code ships, not who is exposed — it only runs when that hand-off is bypassed. ##### Remediation **If you run `nx migrate` normally, there is nothing to do.** It resolves and runs the latest nx, which is patched, so your workspace's own nx version does not matter for this flaw. Upgrade only if you bypass that hand-off and run the workspace's nx instead — that is, if you set `NX_USE_LOCAL` or `NX_MIGRATE_USE_LOCAL`, pin `NX_MIGRATE_CLI_VERSION` to an affected version, resume an existing run with `--run-id`, or run where the temporary install fails and `nx migrate` falls back to the local nx. In those cases upgrade to **22.7.10** (22.x line) or **23.2.1** (23.x line) or later: ``` nx migrate 23.2.1 ``` The fix is a drop-in — no configuration changes are required, and no legitimate `migrations` value is affected (real packages reference `./migrations.json` or another path within their own directory, all of which remain valid). Either way, do not run `nx migrate` against packages, or `packageGroup` members, that you do not trust. ##### Details While planning an upgrade, `nx migrate` extracts each target package's migrations file to a destination built by joining the package's own `nx-migrations.migrations` value onto a temporary directory. That value is read from the manifest without validation, and it is handled asymmetrically: the name Nx matches against the archive entries is normalized (so its `..` segments collapse), while the destination path it writes to is a raw join that keeps the `..` segments and resolves outside the temporary directory. Because the attacker controls the tarball, they name their entry to equal the normalized form; the match then succeeds and the bytes are written to the un-normalized, escaping destination. The normalization is not a defence — it only dictates what the attacker must name their entry. The same value also seeds the directory used for prompt-file extraction, which has the same shape, so both writes are steerable from the one field. Two distinct primitives fall out of this: - **Truncation** — the destination write stream is opened, and truncates, before any tar entry is inspected. So a package that points `migrations` at an existing file empties that file even when no tar entry matches — no crafted archive required. - **Controlled write** — when a tar entry's name matches, its bytes are written to the escaping destination. The extractor performs no path containment of its own. ##### Credits - **Arkadiusz Marta** (RE:SOURCE) — Reporter #### Severity - CVSS Score: 5.8 / 10 (Medium) - Vector String: `CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N` #### References - [https://github.com/nrwl/nx/security/advisories/GHSA-hrvq-x7jp-36xv](https://redirect.github.com/nrwl/nx/security/advisories/GHSA-hrvq-x7jp-36xv) - [https://nvd.nist.gov/vuln/detail/CVE-2026-104853](https://nvd.nist.gov/vuln/detail/CVE-2026-104853) - [https://github.com/nrwl/nx/pull/36887](https://redirect.github.com/nrwl/nx/pull/36887) - [https://github.com/nrwl/nx/commit/38cd82a0c05e8212e538bdb87ccb198d6504e58f](https://redirect.github.com/nrwl/nx/commit/38cd82a0c05e8212e538bdb87ccb198d6504e58f) - [https://github.com/nrwl/nx/commit/95474ab457e8e1dbdbefad29040c166105a8fb90](https://redirect.github.com/nrwl/nx/commit/95474ab457e8e1dbdbefad29040c166105a8fb90) - [https://github.com/nrwl/nx/commit/de37c5ebd1852fac700d70726326236ac398af3f](https://redirect.github.com/nrwl/nx/commit/de37c5ebd1852fac700d70726326236ac398af3f) - [https://github.com/nrwl/nx](https://redirect.github.com/nrwl/nx) - [https://github.com/nrwl/nx/releases/tag/22.7.10](https://redirect.github.com/nrwl/nx/releases/tag/22.7.10) - [https://github.com/nrwl/nx/releases/tag/23.2.1](https://redirect.github.com/nrwl/nx/releases/tag/23.2.1) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-hrvq-x7jp-36xv) and the [GitHub Advisory Database](https://redirect.github.com/github/advisory-database) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>nrwl/nx (nx)</summary> ### [`v23.2.1`](https://redirect.github.com/nrwl/nx/releases/tag/23.2.1) [Compare Source](https://redirect.github.com/nrwl/nx/compare/23.2.0...23.2.1) #### 23.2.1 (2026-09-09) ##### 🚀 Features - **core:** report the cache location alongside usage ([#​36959](https://redirect.github.com/nrwl/nx/pull/36959)) - **repo:** add a .NET example for [@​nx/dotnet](https://redirect.github.com/nx/dotnet) ([#​36701](https://redirect.github.com/nrwl/nx/pull/36701)) ##### 🩹 Fixes - **angular:** correct declaration maps and exports of buildable libraries ([#​36373](https://redirect.github.com/nrwl/nx/pull/36373), [#​36357](https://redirect.github.com/nrwl/nx/issues/36357)) - **core:** separate daemon runtime env from graph identity ([#​36565](https://redirect.github.com/nrwl/nx/pull/36565), [#​36564](https://redirect.github.com/nrwl/nx/issues/36564)) - **core:** validate the migrations path before extracting package migrations ([#​36887](https://redirect.github.com/nrwl/nx/pull/36887)) - **core:** release per-run process listeners and task history results ([#​36866](https://redirect.github.com/nrwl/nx/pull/36866)) - **core:** read the pnpm 12 min-release-age policy instead of deferring to an install ([#​36915](https://redirect.github.com/nrwl/nx/pull/36915), [#​36914](https://redirect.github.com/nrwl/nx/issues/36914)) - **core:** carry minimumReleaseAge into pruned pnpm deploy output ([#​36900](https://redirect.github.com/nrwl/nx/pull/36900), [#​36899](https://redirect.github.com/nrwl/nx/issues/36899)) - **core:** report how a plugin worker was lost instead of always calling it an exit ([#​36894](https://redirect.github.com/nrwl/nx/pull/36894)) - **core:** keep the cache in the workspace on CI ([#​36922](https://redirect.github.com/nrwl/nx/pull/36922)) - **core:** restore the wasm walker imports dropped by a stray cfg attribute ([#​36924](https://redirect.github.com/nrwl/nx/pull/36924)) - **core:** avoid mutating target options when resolving configurations ([#​36934](https://redirect.github.com/nrwl/nx/pull/36934)) - **js:** resolve tsconfig to absolute path so ${configDir} paths type-check without baseUrl ([#​36445](https://redirect.github.com/nrwl/nx/pull/36445)) - **misc:** scan package projects for env vars ([#​36847](https://redirect.github.com/nrwl/nx/pull/36847)) - **release:** exclude AI coding agents from the changelog Thank You section ([#​36892](https://redirect.github.com/nrwl/nx/pull/36892)) - **release:** use the release group name when resolving the previous tag for fixed groups ([#​36554](https://redirect.github.com/nrwl/nx/pull/36554)) - **repo:** provision JDK 17 for Gradle builds with mise ([#​36965](https://redirect.github.com/nrwl/nx/pull/36965)) - **repo:** guard JAVA17\_HOME against an uninstalled JDK ([#​36969](https://redirect.github.com/nrwl/nx/pull/36969)) - **rspack:** write the normalized cache option in NxAppRspackPlugin ([#​36905](https://redirect.github.com/nrwl/nx/pull/36905), [#​36878](https://redirect.github.com/nrwl/nx/issues/36878)) ##### ❤️ Thank You - AgentEnder [@​AgentEnder](https://redirect.github.com/AgentEnder) - Caleb Ukle - Claude - Craigory Coppola [@​AgentEnder](https://redirect.github.com/AgentEnder) - Denis Frenademetz [@​skrtheboss](https://redirect.github.com/skrtheboss) - Eduardo Speroni [@​edusperoni](https://redirect.github.com/edusperoni) - Federico Bartoli - FrozenPandaz [@​FrozenPandaz](https://redirect.github.com/FrozenPandaz) - Jack Stevenson - Jason Jean [@​FrozenPandaz](https://redirect.github.com/FrozenPandaz) - Jupiter Jayna [@​sdjayna](https://redirect.github.com/sdjayna) - Juri Strumpflohner [@​juristr](https://redirect.github.com/juristr) - Leosvel Pérez Espinosa [@​leosvelperez](https://redirect.github.com/leosvelperez) - Nicolas Beaussart [@​beaussan](https://redirect.github.com/beaussan) - ShwethaSundar - Stephen Jayna ### [`v23.2.0`](https://redirect.github.com/nrwl/nx/releases/tag/23.2.0) [Compare Source](https://redirect.github.com/nrwl/nx/compare/23.1.3...23.2.0) ##### 23.2.0 (2026-09-02) ##### 🚀 Features - **angular:** add support for Angular v22.1 ([#​36521](https://redirect.github.com/nrwl/nx/pull/36521)) - **core:** confirm before creating migration commits on the default branch ([#​36314](https://redirect.github.com/nrwl/nx/pull/36314)) - **core:** add a full-width TUI status bar and vim-style pane search ([#​36263](https://redirect.github.com/nrwl/nx/pull/36263)) - **core:** forward mouse and resize events to tasks running in the TUI's pty ([#​36322](https://redirect.github.com/nrwl/nx/pull/36322)) - **core:** add bun dependency-catalog support ([#​36434](https://redirect.github.com/nrwl/nx/pull/36434)) - **core:** derive stable repo key from normalized remote and relative path ([#​36439](https://redirect.github.com/nrwl/nx/pull/36439)) - **core:** add nx migrate --run-migration to run a single migration ([#​36407](https://redirect.github.com/nrwl/nx/pull/36407)) - **core:** let migration generators skip their AI step ([#​36532](https://redirect.github.com/nrwl/nx/pull/36532)) - **core:** show Cloud app link for remote cache instead of docs ([#​36460](https://redirect.github.com/nrwl/nx/pull/36460)) - **core:** add durable run state and a dark orchestration loop to nx migrate ([#​36403](https://redirect.github.com/nrwl/nx/pull/36403)) - **core:** add built-in support for oxfmt formatter alongside prettier ([#​35089](https://redirect.github.com/nrwl/nx/pull/35089), [#​30403](https://redirect.github.com/nrwl/nx/issues/30403)) - **core:** filter static task output to failures and restore CI log grouping ([#​36453](https://redirect.github.com/nrwl/nx/pull/36453)) - **core:** let the daemon and plugin workers run inside agent sandboxes ([#​36586](https://redirect.github.com/nrwl/nx/pull/36586)) - **dotnet:** infer OpenApiDocumentsDirectory as a build output ([#​36788](https://redirect.github.com/nrwl/nx/pull/36788)) - **linter:** add the [@​nx/oxlint](https://redirect.github.com/nx/oxlint) plugin ([#​36491](https://redirect.github.com/nrwl/nx/pull/36491)) - **linter:** hash only lintable files for inferred oxlint tasks ([#​36828](https://redirect.github.com/nrwl/nx/pull/36828)) - **misc:** support vitest generation for node, nest, and express generators ([#​36665](https://redirect.github.com/nrwl/nx/pull/36665)) - **nx-cloud:** generate .nx/ci-config.yaml for agent distribution ([#​36504](https://redirect.github.com/nrwl/nx/pull/36504)) - **nx-cloud:** add nx start-nx-agents as an alias for nx-cloud start-nx-agents ([#​36572](https://redirect.github.com/nrwl/nx/pull/36572)) - **nx-plugin:** add vitest support for e2e tests ([#​34041](https://redirect.github.com/nrwl/nx/pull/34041)) - **release:** support tag-based project selection ([#​36537](https://redirect.github.com/nrwl/nx/pull/36537)) - **repo:** add react + vite + vitest + playwright example ([#​35921](https://redirect.github.com/nrwl/nx/pull/35921)) - **storybook:** adopt the storybook vitest addon for story testing ([#​36648](https://redirect.github.com/nrwl/nx/pull/36648), [#​33759](https://redirect.github.com/nrwl/nx/issues/33759)) - **testing:** offer vitest consistently across generators with a unitTestRunner option ([#​36715](https://redirect.github.com/nrwl/nx/pull/36715)) ##### 🩹 Fixes - **angular:** make webpack-related packages optional peer dependencies ([#​36310](https://redirect.github.com/nrwl/nx/pull/36310)) - **angular:** keep buildable libraries private ([#​36545](https://redirect.github.com/nrwl/nx/pull/36545)) - **angular:** import optional `ng-packagr` lazily ([#​36632](https://redirect.github.com/nrwl/nx/pull/36632)) - **angular-rspack:** speed up builds and align behavior with the esbuild application builder ([#​36268](https://redirect.github.com/nrwl/nx/pull/36268), [#​34936](https://redirect.github.com/nrwl/nx/issues/34936)) - **angular-rspack:** stop builds crashing on non-array styleUrls ([#​36550](https://redirect.github.com/nrwl/nx/pull/36550)) - **angular-rspack:** rebuild components when their templates or styles change on Windows ([#​36641](https://redirect.github.com/nrwl/nx/pull/36641), [#​36619](https://redirect.github.com/nrwl/nx/issues/36619)) - **bundling:** support TypeScript esbuildConfig files in the esbuild executor ([#​36352](https://redirect.github.com/nrwl/nx/pull/36352), [#​36349](https://redirect.github.com/nrwl/nx/issues/36349)) - **bundling:** acknowledge [@​swc/core](https://redirect.github.com/swc/core) build scripts when configuring rollup ([#​36412](https://redirect.github.com/nrwl/nx/pull/36412)) - **bundling:** resolve esbuild paths from workspace root instead of cwd ([#​36830](https://redirect.github.com/nrwl/nx/pull/36830), [#​34027](https://redirect.github.com/nrwl/nx/issues/34027)) - **bundling:** allow overriding the css module hash algorithm ([#​36837](https://redirect.github.com/nrwl/nx/pull/36837), [#​36829](https://redirect.github.com/nrwl/nx/issues/36829)) - **core:** speed up npm lockfile parsing ([#​36216](https://redirect.github.com/nrwl/nx/pull/36216)) - **core:** speed up lockfile parsing and catalog resolution ([#​36223](https://redirect.github.com/nrwl/nx/pull/36223)) - **core:** show performance report recommendations only when actionable ([#​36344](https://redirect.github.com/nrwl/nx/pull/36344)) - **core:** close daemon log descriptors after spawn to avoid Node 26 crash ([#​36280](https://redirect.github.com/nrwl/nx/pull/36280)) - **core:** prevent shell injection in nx import ([#​36348](https://redirect.github.com/nrwl/nx/pull/36348)) - **core:** correct the 22.6.0 gitignore and analytics migration wiring ([#​36356](https://redirect.github.com/nrwl/nx/pull/36356)) - **core:** support npm 12 and pnpm in the package provenance check ([#​36354](https://redirect.github.com/nrwl/nx/pull/36354), [#​36338](https://redirect.github.com/nrwl/nx/issues/36338)) - **core:** honor pnpm minimumReleaseAge config on pnpm 11 ([#​36335](https://redirect.github.com/nrwl/nx/pull/36335), [#​36330](https://redirect.github.com/nrwl/nx/issues/36330)) - **core:** support pnpm 11 patched dependency hashes ([#​36360](https://redirect.github.com/nrwl/nx/pull/36360)) - **core:** resolve name refs copied into pattern-matched target arrays ([#​36359](https://redirect.github.com/nrwl/nx/pull/36359)) - **core:** resolve source-loaded plugin transitive workspace imports ([#​36296](https://redirect.github.com/nrwl/nx/pull/36296)) - **core:** unbreak pnpm 11 installs by acknowledging build-script deps from generators ([#​36302](https://redirect.github.com/nrwl/nx/pull/36302)) - **core:** include continuous and default-config dependencies in show target ([#​36374](https://redirect.github.com/nrwl/nx/pull/36374)) - **core:** make unit tests pass locally regardless of invoking package manager ([#​35994](https://redirect.github.com/nrwl/nx/pull/35994)) - **core:** respect --aiAgents none to skip AI agent file generation ([#​34944](https://redirect.github.com/nrwl/nx/pull/34944), [#​34692](https://redirect.github.com/nrwl/nx/issues/34692)) - **core:** use --config.frozen-lockfile=false for pnpm add during migrate ([#​36337](https://redirect.github.com/nrwl/nx/pull/36337)) - **core:** run selected projects with --exclude-task-dependencies ([#​35562](https://redirect.github.com/nrwl/nx/pull/35562)) - **core:** stop passing git revisions through a shell in affected commands ([#​36379](https://redirect.github.com/nrwl/nx/pull/36379)) - **core:** collect trickling watcher bursts fully on daemon force-flush ([#​36391](https://redirect.github.com/nrwl/nx/pull/36391)) - **core:** report tasks running in another Nx process in the inline TUI ([#​36341](https://redirect.github.com/nrwl/nx/pull/36341)) - **core:** stop ratatui cursor queries from racing the TUI event stream ([#​36318](https://redirect.github.com/nrwl/nx/pull/36318)) - **core:** render critical-path tasks as a nested list in the job summary ([#​36394](https://redirect.github.com/nrwl/nx/pull/36394)) - **core:** keep pnpm-workspace.yaml comments and read package.json as jsonc ([#​36411](https://redirect.github.com/nrwl/nx/pull/36411)) - **core:** support multiple brace groups in workspace glob matching ([#​36395](https://redirect.github.com/nrwl/nx/pull/36395)) - **core:** handle CRLF line endings in pnpm multi-document lockfiles ([#​36419](https://redirect.github.com/nrwl/nx/pull/36419), [#​35828](https://redirect.github.com/nrwl/nx/issues/35828), [#​35840](https://redirect.github.com/nrwl/nx/issues/35840)) - **core:** correct glob pattern expansion for ZeroOrOne groups ([#​31857](https://redirect.github.com/nrwl/nx/pull/31857)) - **core:** stop re-querying confirmed cache misses in task orchestrator ([#​36301](https://redirect.github.com/nrwl/nx/pull/36301), [#​35632](https://redirect.github.com/nrwl/nx/issues/35632)) - **core:** sample project graph perf span telemetry per session at 10% ([#​36420](https://redirect.github.com/nrwl/nx/pull/36420)) - **core:** strip terminal query sequences when replaying task output ([#​36432](https://redirect.github.com/nrwl/nx/pull/36432)) - **core:** preserve FORCE\_COLOR=0 intent for forked child tasks ([#​35293](https://redirect.github.com/nrwl/nx/pull/35293)) - **core:** handle colons in target name when resolving inputs to generate graph ([#​36429](https://redirect.github.com/nrwl/nx/pull/36429), [#​33710](https://redirect.github.com/nrwl/nx/issues/33710)) - **core:** merge default plugins through the source-map-aware merge path ([#​36257](https://redirect.github.com/nrwl/nx/pull/36257)) - **core:** keep nx migrate on the requested version when release-age gates interfere ([#​36444](https://redirect.github.com/nrwl/nx/pull/36444)) - **core:** avoid bogus duplicate project name errors when generating nested apps ([#​36458](https://redirect.github.com/nrwl/nx/pull/36458)) - **core:** make tui cloud icon visible on light terminal themes ([#​36495](https://redirect.github.com/nrwl/nx/pull/36495)) - **core:** pin typescript in preset dependencies so npm cannot hoist typescript 7 ([#​36497](https://redirect.github.com/nrwl/nx/pull/36497)) - **core:** bump pinned axios and brace-expansion past vulnerable versions ([#​36507](https://redirect.github.com/nrwl/nx/pull/36507), [#​36474](https://redirect.github.com/nrwl/nx/issues/36474)) - **core:** parse pnpm lockfiles that omit the packages block ([#​36512](https://redirect.github.com/nrwl/nx/pull/36512)) - **core:** keep real dependencies when omitting peers from npm temp installs ([#​36518](https://redirect.github.com/nrwl/nx/pull/36518)) - **core:** normalize resolved module paths ([#​36556](https://redirect.github.com/nrwl/nx/pull/36556), [#​36549](https://redirect.github.com/nrwl/nx/issues/36549)) - **core:** stop pruneProjectGraph from mutating the source project graph ([#​36517](https://redirect.github.com/nrwl/nx/pull/36517), [#​36470](https://redirect.github.com/nrwl/nx/issues/36470)) - **core:** make preset empty work without github.com and improve template download errors ([#​36508](https://redirect.github.com/nrwl/nx/pull/36508)) - **core:** drain to stdout before exiting `nx affected` ([#​36569](https://redirect.github.com/nrwl/nx/pull/36569), [#​36568](https://redirect.github.com/nrwl/nx/issues/36568)) - **core:** update brace-expansion to 5.0.9 for CVE-2026-14257 ([#​36577](https://redirect.github.com/nrwl/nx/pull/36577)) - **core:** restrict daemon and plugin worker socket access to the owning user ([#​36370](https://redirect.github.com/nrwl/nx/pull/36370)) - **core:** drain stdout before exiting nx run-many and nx run ([#​36607](https://redirect.github.com/nrwl/nx/pull/36607), [#​36606](https://redirect.github.com/nrwl/nx/issues/36606)) - **core:** re-spawn nx migrate without a shell to preserve argv exactly ([#​36215](https://redirect.github.com/nrwl/nx/pull/36215)) - **core:** resolve main worktree root without a Windows verbatim prefix ([#​36649](https://redirect.github.com/nrwl/nx/pull/36649), [#​35637](https://redirect.github.com/nrwl/nx/issues/35637)) - **core:** accept bun.lock lockfileVersion 2 and 3 ([#​36666](https://redirect.github.com/nrwl/nx/pull/36666)) - **core:** maintain cacheability when an executor target default applies ([#​36477](https://redirect.github.com/nrwl/nx/pull/36477)) - **core:** don't leave an unkillable nx process when a terminal closes ([#​36683](https://redirect.github.com/nrwl/nx/pull/36683), [#​36682](https://redirect.github.com/nrwl/nx/issues/36682)) - **core:** honor the package manager's registry config in nx migrate ([#​35954](https://redirect.github.com/nrwl/nx/pull/35954), [#​35843](https://redirect.github.com/nrwl/nx/issues/35843)) - **core:** resolve telemetry DNS in-process to avoid a getenv segfault ([#​36673](https://redirect.github.com/nrwl/nx/pull/36673)) - **core:** skip target group members without a target ([#​36711](https://redirect.github.com/nrwl/nx/pull/36711), [#​36712](https://redirect.github.com/nrwl/nx/issues/36712)) - **core:** stop resending accumulated task hash results to the daemon when hashing tasks ([#​36716](https://redirect.github.com/nrwl/nx/pull/36716)) - **core:** apply package.json updates unblocked by later package groups ([#​36636](https://redirect.github.com/nrwl/nx/pull/36636)) - **core:** create external nodes for out-of-workspace link dependencies ([#​36745](https://redirect.github.com/nrwl/nx/pull/36745)) - **core:** point duplicate project names from worktrees at the fix ([#​36734](https://redirect.github.com/nrwl/nx/pull/36734)) - **core:** exclude volatile shell and editor env vars from the daemon ([#​36642](https://redirect.github.com/nrwl/nx/pull/36642), [#​36610](https://redirect.github.com/nrwl/nx/issues/36610)) - **core:** stop the daemon before nx add installs a package ([#​36767](https://redirect.github.com/nrwl/nx/pull/36767)) - **core:** do not allowlist the analytics domain when analytics are off ([#​36663](https://redirect.github.com/nrwl/nx/pull/36663), [#​36486](https://redirect.github.com/nrwl/nx/issues/36486)) - **core:** isolate pnpm version detection from workspace ([#​36728](https://redirect.github.com/nrwl/nx/pull/36728), [#​36727](https://redirect.github.com/nrwl/nx/issues/36727)) - **core:** key the main-worktree-root cache on the workspace root ([#​36768](https://redirect.github.com/nrwl/nx/pull/36768)) - **core:** give pnpm a fresh cache dir per e2e run ([#​36802](https://redirect.github.com/nrwl/nx/pull/36802)) - **core:** apply targetDefaults options to an inferred target that is not redeclared ([#​36717](https://redirect.github.com/nrwl/nx/pull/36717), [#​36700](https://redirect.github.com/nrwl/nx/issues/36700)) - **core:** devkit util - detect esm config with top level await ([#​33644](https://redirect.github.com/nrwl/nx/pull/33644)) - **core:** share worktree cache under \~/.nx so agent sandboxes can reach it ([#​36514](https://redirect.github.com/nrwl/nx/pull/36514)) - **core:** compare daemon workspace roots case-insensitively on Windows ([#​36835](https://redirect.github.com/nrwl/nx/pull/36835), [#​36722](https://redirect.github.com/nrwl/nx/issues/36722)) - **core:** raise the nx package vitest timeout to cover the graph recompute spec ([#​36850](https://redirect.github.com/nrwl/nx/pull/36850)) - **core:** single-inference convert-to-inferred engine with centralized config ([#​36547](https://redirect.github.com/nrwl/nx/pull/36547)) - **core:** fall back to v8 for oversized daemon responses and length-prefix the wire protocol ([#​36838](https://redirect.github.com/nrwl/nx/pull/36838)) - **core:** use scoped config form for pnpm 11+ publish ([#​36867](https://redirect.github.com/nrwl/nx/pull/36867), [#​36860](https://redirect.github.com/nrwl/nx/issues/36860)) - **devkit:** resolve ensurePackage against the workspace ([#​36496](https://redirect.github.com/nrwl/nx/pull/36496)) - **devkit:** honour cascading ignore files in tree walks and generator formatting ([#​36575](https://redirect.github.com/nrwl/nx/pull/36575)) - **devkit:** correct version floor validation for ranges and prereleases ([#​36724](https://redirect.github.com/nrwl/nx/pull/36724)) - **devkit:** reload TS config files fresh instead of serving stale cached modules ([#​36656](https://redirect.github.com > ❗ **Important** > > ✂ PR body was truncated to here. </details> --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/apache/texera). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZWxlYXNlL3YxLjIiLCJzZWN1cml0eSJdfQ==--> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
