fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(shared): strip stray quotes from the repaired Windows PATH - #7544

Closed
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote
Closed

fix(shared): strip stray quotes from the repaired Windows PATH#7544
TriptoAfsin wants to merge 1 commit into
pingdotgg:mainfrom
TriptoAfsin:fix/windows-path-stray-quote

Conversation

@TriptoAfsin

@TriptoAfsinTriptoAfsin commented Aug 19, 2026

Copy link
Copy Markdown

Closes#7543.

Problem

cmd.exe reads a " in PATH as opening a quoted region, so a single unbalanced quote swallows every ; after it and no directory past that entry is ever searched. PowerShell, bash and where.exe split on ; literally, so the damage is invisible until a child cmd.exe runs — which is exactly what makes the report so confusing: the same PATH works in VS Code's terminal and Windows Terminal.

In T3 Code's integrated terminal the failure lands here:

  • the terminal shell is PowerShell, so npm resolves and npm.cmd reaches Node through %~dp0\node.exe without touching PATH;
  • npm then spawns the lifecycle script through %ComSpec%, i.e. cmd.exe;
  • node_modules\.bin\next.cmd has no sibling node.exe, so it falls back to SET "_prog=node";
  • cmd.exe cannot see C:\Program Files\nodejs because it sits behind the stray quote.
> web@0.1.0 dev
> next dev --port 3002
'"node"' is not recognized as an internal or external command,
operable program or batch file.

Both Windows PATH merges — mergePathValues in packages/shared/src/shell.ts (used by fixPath) and mergePaths in apps/desktop/src/shell/DesktopShellEnvironment.ts — already strip quotes to build the dedupe key, then push the raw entry into the merged result. So the malformed entry survives the repair pass into process.env.PATH, and from there into every integrated terminal (createTerminalSpawnEnv inherits the server environment by design) and every agent-spawned process.

Blast radius is wider than the terminal — the same broken PATH also killed pnpm install and the oxlint/prettier shims in this repo while I was investigating, all through cmd.exe.

Fix

Sanitize the entry itself rather than only the comparison key. " is not a legal character in a Windows path, so removing it is always safe, and stripping rather than dropping the entry keeps a correctly quoted "C:\Program Files\nodejs" resolving. POSIX is untouched, where a quote is a legal filename character.

The new sanitizePathEntry helper lives in packages/shared/src/shell.ts and is shared by both merges, so the server (npx t3, WSL host) and the desktop Electron main get the same behavior.

Verification

A/B on one real PATH, changing nothing but the quote:

PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:";C:\Program Files\nodejs'
PS> cmd /c "node -v"
'node' is not recognized as an internal or external command,
operable program or batch file.
PS> $env:Path = 'C:\Windows\System32;C:\cloudflared.exe;C:;C:\Program Files\nodejs'
PS> cmd /c "node -v"
v22.22.0
  • vp test run packages/shared/src/shell.test.ts apps/desktop/src/shell/DesktopShellEnvironment.test.ts — 49 passed.
  • Confirmed the four new assertions fail on main and pass with the patch.
  • vp lint clean and tsgo --noEmit clean for @t3tools/shared and @t3tools/desktop.

No UI surface changes, so no before/after images apply.

Not included

resolveWindowsEnvironment's loadProfile: false probe spawns a PowerShell child that inherits T3 Code's own environment, so it can never surface a PATH the process does not already have — it cannot repair a stale environment, only a registry read could. That is a separate concern from this one and I left it alone; happy to open it as its own issue if it is wanted.


Model: Claude Opus 5 (1M context)
Harness: Claude Code


Note

Low Risk
Targeted Windows-only PATH sanitization with tests; no auth or data-path changes.

Overview
Fixes #7543 by sanitizing Windows PATH segments when they are merged, so stray " characters cannot break cmd.exe lookup for later entries (e.g. node missing in npm lifecycle scripts).

Adds sanitizePathEntry in @t3tools/shared/shell: on win32 it removes all double quotes from each segment (illegal in Windows paths); POSIX paths are unchanged. mergePathValues and desktop mergePaths now push the sanitized segment into the merged PATH, not only use quotes for dedupe keys—so repaired env propagates to integrated terminals and spawned processes.

Tests cover the malformed C:" case, quote-only segments, wrapped "C:\Program Files\nodejs", and desktop shell install on Windows.

Reviewed by Cursor Bugbot for commit 4a75785. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Strip stray quotes from Windows PATH entries in mergePaths and mergePathValues

  • Adds sanitizePathEntry to packages/shared/src/shell.ts that removes all double-quote characters from PATH entries on Windows while leaving POSIX entries unchanged.
  • Updates mergePaths in DesktopShellEnvironment.ts and mergePathValues in the shared shell module to apply sanitizePathEntry before deduplication and merging.
  • Behavioral Change: on Windows, merged PATH values will have quotes stripped, and entries that consist entirely of quotes are dropped from the result.

Macroscope summarized 4a75785.

cmd.exe reads a `"` in PATH as opening a quoted region, so an unbalanced
quote swallows every `;` after it and no directory past that entry is ever
searched. PowerShell, bash and where.exe split on `;` literally, so the
damage stays invisible until a child cmd.exe runs. In the integrated
terminal that means `npm run dev` starts npm fine - npm.cmd reaches node
through `%~dp0\node.exe` - and then dies in the lifecycle script with
`'"node"' is not recognized`, because npm spawns it via %ComSpec% and
`node_modules\.bin\*.cmd` needs node on PATH.
Both Windows PATH merges already stripped quotes to build the dedupe key,
then pushed the raw entry into the result, so the malformed entry reached
process.env and from there every terminal and agent. Sanitize the entry
itself instead: `"` is not legal in a Windows path, and stripping rather
than dropping keeps a correctly quoted "C:\Program Files\nodejs" working.
POSIX is untouched, where a quote is a legal filename character.
Fixespingdotgg#7543
Model: Claude Opus 5 (1M context)
Harness: Claude Code
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8506ca64-bc55-4fbd-80a0-54f92d82a560

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4a75785

Macroscope's review found this PR approvable — Straightforward bug fix that strips illegal quote characters from Windows PATH entries to resolve cmd.exe path resolution issues. The change is simple, well-documented, and comprehensively tested, with POSIX paths explicitly left untouched.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Closing because #8746 already merged this fix for both the server and desktop PATH repair. Windows entries now have stray quotes removed, while POSIX paths are unchanged. Thanks for the investigation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Windows PATH repair passes stray quotes through, so cmd.exe cannot find node in the integrated terminal

2 participants

@TriptoAfsin@juliusmarminge