fix(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik
, '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(desktop): resolve claude executable on windows - #4896

Closed
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path
Closed

fix(desktop): resolve claude executable on windows#4896
shubhu121 wants to merge 3 commits into
pingdotgg:mainfrom
shubhu121:fix-desktop-claude-path

Conversation

@shubhu121

@shubhu121shubhu121 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Fixes#4846

On Windows, T3 Code would report Claude as missing if it was installed in the user's persistent PATH but the process inherited a stale PATH.

This fixes the desktop environment resolver to explicitly read and merge the Machine, User, and Process environment variables for PATH on Windows, and adds %USERPROFILE%\.local\bin to the known CLI directories fallback.


Note

Low Risk
Windows-only desktop startup PATH probing; improves CLI discovery without touching auth, data, or network paths.

Overview
Fixes false “Claude not found” on Windows when Claude lives on the User or Machine PATH but the Electron process inherited a stale Process PATH.

captureWindowsEnvironmentCommand now treats PATH specially: the PowerShell probe reads Machine, User, and Process values via [Environment]::GetEnvironmentVariable, concatenates non-empty segments, and emits that merged string between the existing markers. Other env vars still use the single-scope lookup unchanged.

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

Note

Fix Claude executable resolution on Windows by merging Machine, User, and Process PATH scopes

The captureWindowsEnvironmentCommand util in DesktopShellEnvironment.ts previously captured only the process-scoped PATH, which could miss entries added by installers to the Machine or User scopes. PATH is now resolved by fetching all three scopes separately, filtering out null/empty entries, and joining them with ;. Behavioral Change: the captured PATH value will now be broader than the process-scoped value alone, which may surface executables not previously visible.

Macroscope summarized 0c5a2c9.

@coderabbitai

coderabbitaiBot commented Jul 30, 2026

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: 351b850b-2a78-4b0a-bcfd-db906dc7fe21

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:S 10-29 changed lines (additions + deletions). labels Jul 30, 2026
Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts
@macroscopeapp

macroscopeappBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 0c5a2c9

Straightforward Windows bug fix that merges PATH environment variable sources (Machine, User, Process) to ensure executables are properly resolved. Small, self-contained change using existing patterns.

You can customize Macroscope's approvability policy. Learn more.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 037dc749f02541d080f6b06ee878c56f27b4dfd0. Configure here.

Comment threadapps/desktop/src/shell/DesktopShellEnvironment.ts Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 30, 2026
@juliusmarminge
juliusmarminge enabled auto-merge (squash) July 30, 2026 22:18

@CDVolvikCDVolvik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows check against today's main (6ae9662d8).

Half of this PR is already on main. knownWindowsCliDirs already includes %USERPROFILE%\.local\bin (and this box has that directory). The remaining unique change is the PATH capture: Machine + User + Process, joined.

That join is the better shape for the desktop profile probe. [Environment]::GetEnvironmentVariable('PATH') with no target is Process scope, so after loadProfile: true it still sees fnm/profile prepends. #6356 reads only Machine+User for both probes, so profile.PATH and noProfile.PATH become the same registry string. If these two land independently, keep this merge and drop #6356's PATH rewrite (the Codex dir addition in #6356 can stay).

This PR only edits DesktopShellEnvironment.ts. packages/shared/src/shell.tsbuildWindowsEnvironmentCaptureCommand — the path fixPath() uses on the server — is unchanged, so a refresh after install still misses User-PATH writes on the shared side.

CONFLICTING against current main; needs a rebase before the merge is real. No tests in the diff, so I did not get a revert-fail.

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 15, 2026 10:57

Dismissing prior approval to re-evaluate 0c5a2c9

@juliusmarminge

Copy link
Copy Markdown
Member

Closing as superseded by #5074, which has merged and covers this change on the current architecture. Thanks for the contribution.

auto-merge was automatically disabled August 15, 2026 11:31

Pull request was closed

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

Labels

size:S10-29 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 desktop resolver ignores User PATH, so Claude in %USERPROFILE%\.local\bin is not found

3 participants

@shubhu121@juliusmarminge@CDVolvik