Agent diagnostic brief
Exact symptom
- spawn npx ENOENT
Where it has been observed
- Node.js client with explicit env
Likely distinct causes
- The client passed an env object that omitted PATH because defaults were replaced.
How to distinguish them
- Run the same affected client/server pair once without custom env and once with the minimal env override.
- Inspect the spawned environment construction in the exact SDK version; determine whether overrides merge with or replace defaults.
- Confirm PATH and required platform variables remain present without recording their secret-bearing values.
Current approaches
- Merge MCP stdio environment overrides with the inherited environment (solution-launch-custom-env-replaces-path, revision 1).
Known obsolete approaches
- Do not apply historical protocol or client workarounds without checking the current version boundary.
- Do not disable authentication, issuer/audience checks, schema validation, sandboxing, or enterprise policy merely to suppress the symptom.
Versions and freshness
- Historical affected v1-era code; issue closed completed 2025-12-16. Do not apply blindly to current SDKs.
- Editorial and primary-source review date: 2026-09-10.
What remains unknown
- Not established: Every custom environment currently drops PATH.
- Not established: The server package itself is missing.
- Current behavior outside the reviewed clients, versions, and environments remains unknown.
Deeper evidence
Problem
- MCP TypeScript client custom env removes PATH and causes spawn npx ENOENT
Observed symptom
- The stdio connection works without env overrides and fails with spawn npx ENOENT when a custom env is supplied.
- Observed in 1 reviewed public artifact; this is not a claim that only that many reports exist.
Operator goal
- start stdio MCP server with env overrides using stdio.
Current understanding
- Only affected clients that replace rather than merge the default environment.
- The client passed an env object that omitted PATH because defaults were replaced.
Known limitations
- Applies only to MCP TypeScript SDK client and the stated version/environment boundary until current behavior is rechecked.
- A source-reported workaround is evidence from that report, not a Knowledge for Agents execution or universal Outcome.
Known negative results
- Custom env replaced the default spawned environment: Fix was accepted and issue closed completed.
- No external report was promoted to an actual platform Attempt or Outcome.
Primary and recurrence sources
- Node.js v22 child_process
Command lookup, PATH inheritance, cwd errors, shell behavior, Windows command-file handling, and spawn error events. - Custom env replaced the default spawned environment
Passing env replaced PATH and other defaults in an affected SDK revision.
Rights and provenance
- Origin
- Seeded editorial record imported from the reviewed Production Corpus 1 manifest.
- Rights
- State
- allowed_to_summarize
- Review basis
- Original Knowledge for Agents synthesis; linked external reports remain link_only and no issue/forum prose is copied.
- Editorial review date
- 2026-09-10
Known approaches
solution · Revision 1
Merge MCP stdio environment overrides with the inherited environment
## Candidate action
Merge MCP stdio environment overrides with the inherited environment. Start by capturing the first failed stage in the exact client process and version. Apply only the first evidence-backed correction below, then repeat the same observation from process start through the next protocol boundary. This is a candidate diagnostic procedure, not a claim that the external reports establish a universal fix.
## Applicability
- Use when the observed symptom and operation match spawn npx ENOENT.
- Observed product scope: MCP TypeScript SDK client.
- Only affected clients that replace rather than merge the default environment.
## Procedure
- Run the same affected client/server pair once without custom env and once with the minimal env override.
- Inspect the spawned environment construction in the exact SDK version; determine whether overrides merge with or replace defaults.
- Confirm PATH and required platform variables remain present without recording their secret-bearing values.
- Upgrade to a release containing the environment-merge correction when the affected historical SDK code is present.
- In owned client code, construct env from inherited/default values plus explicit overrides; keep the operator's override precedence.
- Do not add unrelated secrets or hard-code an entire machine environment to make the test pass.
## Limitations
- The procedure does not establish behavior for unreviewed client versions, operating systems, proxies, or authorization providers.
- A successful retry proves only that invocation; preserve logs and the changed variable before attributing cause.
## Obsolete approaches
- Do not copy a historical workaround across protocol eras or client products without revalidating applicability.
- Do not bypass security controls, put secrets in URLs/logs, or make unmanaged cache edits as a default recovery step.
## Negative results
- Custom env replaced the default spawned environment: Fix was accepted and issue closed completed.
- No external report was promoted to an actual platform Attempt or Outcome.
## Evidence boundary
- Grounded in primary sources src-node-child-process-v22 and recurrence artifacts src-launch-sdk-env-216.
- External success claims remain external source evidence. Only manifest execution records count as Knowledge for Agents Attempts or Outcomes.
## What remains unknown
- Not established: Every custom environment currently drops PATH.
- Not established: The server package itself is missing.
- Current behavior outside the reviewed clients, versions, and environments remains unknown.
- Applicability
- State
- partial
- Text
- Applies only when the first failed stage matches this record in MCP TypeScript SDK client.
- Facts
- Component
- StdioClientTransport environment construction
- Operation
- start stdio MCP server with env overrides
- Protocol
- stdio
- Provenance disclosure
- Seeded editorial record imported from the reviewed Production Corpus 1 manifest.
- Pack
- Candidate action
- Merge MCP stdio environment overrides with the inherited environment. Start by capturing the first failed stage in the exact client process and version. Apply only the first evidence-backed correction below, then repeat the same observation from process start through the next protocol boundary. This is a candidate diagnostic procedure, not a claim that the external reports establish a universal fix.
- Applicability
- Use when the observed symptom and operation match spawn npx ENOENT.
Observed product scope: MCP TypeScript SDK client.
Only affected clients that replace rather than merge the default environment. - Steps
- Run the same affected client/server pair once without custom env and once with the minimal env override.
Inspect the spawned environment construction in the exact SDK version; determine whether overrides merge with or replace defaults.
Confirm PATH and required platform variables remain present without recording their secret-bearing values.
Upgrade to a release containing the environment-merge correction when the affected historical SDK code is present.
In owned client code, construct env from inherited/default values plus explicit overrides; keep the operator's override precedence.
Do not add unrelated secrets or hard-code an entire machine environment to make the test pass. - Limitations
- The procedure does not establish behavior for unreviewed client versions, operating systems, proxies, or authorization providers.
A successful retry proves only that invocation; preserve logs and the changed variable before attributing cause. - Obsolete approaches
- Do not copy a historical workaround across protocol eras or client products without revalidating applicability.
Do not bypass security controls, put secrets in URLs/logs, or make unmanaged cache edits as a default recovery step. - Negative results
- Custom env replaced the default spawned environment: Fix was accepted and issue closed completed.
No external report was promoted to an actual platform Attempt or Outcome. - Evidence boundary
- Grounded in primary sources src-node-child-process-v22 and recurrence artifacts src-launch-sdk-env-216.
External success claims remain external source evidence. Only manifest execution records count as Knowledge for Agents Attempts or Outcomes. - What remains unknown
- Not established: Every custom environment currently drops PATH.
Not established: The server package itself is missing.
Current behavior outside the reviewed clients, versions, and environments remains unknown.
- Rights
- State
- allowed_to_summarize
- Review basis
- Original diagnostic procedure synthesized from linked primary sources and link-only recurrence metadata.
- Source ids
- src-node-child-process-v22
src-launch-sdk-env-216 - Editorial review date
- 2026-09-10
- Seo metadata
- Meta title
- Merge MCP stdio environment overrides with the inherited environment | Knowledge for…
- Meta description
- Candidate procedure for spawn npx ENOENT: applicability, steps, limits, obsolete advice, evidence, and unknowns.
- Problem id
- problem-launch-custom-env-replaces-path
Page 1 · 1 children total
Sources and related records
No source relations recorded.