What users will see
In the project Hand-off menu ("open project in "), Warp is listed but always renders as unavailable with the tooltip "Warp - not detected on $PATH", even when the Warp terminal is installed. This happens on Windows and Linux; Warp can only ever be detected on macOS.
Environment (reporter)
- OS: Windows (MINGW64_NT-10.0-26200)
- Warp installed at:
C:\Users\chris\AppData\Local\Programs\Warp\warp.exe (official Windows installer location; WarpPreview also present)
where warp / which warp → not on PATH (the Warp Windows installer does not add a warp shim to $PATH)
Steps to reproduce
- On Windows (or Linux), install Warp via the official installer (lands in
%LOCALAPPDATA%\Programs\Warp\warp.exe, not added to $PATH).
- Open the project Hand-off menu in OpenDesign.
- Warp appears in the "unavailable" rail with "Warp - not detected on $PATH".
Expected: Warp is detected (or, if Warp open-in-app is not supported off-macOS, it is hidden on those platforms rather than shown as broken).
Actual: Warp is shown but is permanently undetectable on Windows/Linux.
Root cause
The host-tool catalogue entry for Warp declares only a macOS bundle fallback and no command, and it carries no platforms / excludedPlatforms guard — so it is shown on every platform but can only resolve on macOS.
apps/daemon/src/routes/host-tools.ts:70
{ id: 'warp', label: 'Warp', icon: 'sliders', macOpenBundle: 'Warp' },
resolveEntry() — apps/daemon/src/routes/host-tools.ts:160-191:
async function resolveEntry(entry: CatalogueEntry): Promise<{ /* … */ }> {
if (entry.command) { // ← skipped: Warp has no `command`
const resolved = await probeCommandOnPath(entry.command);
if (resolved) { return { available: true, /* … */ }; }
}
if (entry.macOpenBundle && process.platform === 'darwin') { // ← gated darwin-only
const bundle = await probeMacBundle(entry.macOpenBundle);
if (bundle) { return { available: true, /* … */ }; }
}
return { available: false }; // ← Windows/Linux always land here
}
So on Windows/Linux:
- The
entry.command branch is skipped (Warp has no command).
- The
macOpenBundle branch is gated process.platform === 'darwin'.
- →
resolveEntry unconditionally returns { available: false }.
Detection never probes the actual Windows install path (%LOCALAPPDATA%\Programs\Warp\warp.exe), Program Files, the Windows registry App Paths, or Start Menu shortcuts.
The user-facing string: apps/web/src/i18n/locales/en.ts:596
'handoff.notDetectedTitle': '{target} - not detected on $PATH',
Contrast: the terminal entry (host-tools.ts:69) is correctly platform-gated with platforms: ['darwin'], so it is hidden off-macOS instead of shown-but-broken. Warp lacks the equivalent guard.
Suggested fixes (pick per product intent)
- Add Windows/Linux detection for Warp — probe well-known install paths when the binary is not on
$PATH:
- Windows:
%LOCALAPPDATA%\Programs\Warp\warp.exe (and WarpPreview), plus %PROGRAMFILES%\Warp\.
- Linux:
warp-terminal on $PATH / standard install dirs.
This needs a new path-probe fallback in resolveEntry (the current logic only knows $PATH + macOS bundles).
- Add
command: 'warp' so a $PATH shim is honored on all platforms (helps users who do have the shim, but does NOT fix the installer-default case since Warp's Windows installer doesn't add a shim).
- Minimal stop-gap: add
platforms: ['darwin'] (or excludedPlatforms: ['win32', 'linux']) to the Warp entry so it is hidden where it cannot be detected, matching the terminal entry — until proper detection lands.
Options 1 + 3 could ship together (hide now, enable on real detection later).
Notes
🤖 Generated by Claude Code on behalf of @cbeaulieu-gt
What users will see
In the project Hand-off menu ("open project in "), Warp is listed but always renders as unavailable with the tooltip "Warp - not detected on $PATH", even when the Warp terminal is installed. This happens on Windows and Linux; Warp can only ever be detected on macOS.
Environment (reporter)
C:\Users\chris\AppData\Local\Programs\Warp\warp.exe(official Windows installer location;WarpPreviewalso present)where warp/which warp→ not on PATH (the Warp Windows installer does not add awarpshim to$PATH)Steps to reproduce
%LOCALAPPDATA%\Programs\Warp\warp.exe, not added to$PATH).Expected: Warp is detected (or, if Warp open-in-app is not supported off-macOS, it is hidden on those platforms rather than shown as broken).
Actual: Warp is shown but is permanently undetectable on Windows/Linux.
Root cause
The host-tool catalogue entry for Warp declares only a macOS bundle fallback and no
command, and it carries noplatforms/excludedPlatformsguard — so it is shown on every platform but can only resolve on macOS.apps/daemon/src/routes/host-tools.ts:70resolveEntry()—apps/daemon/src/routes/host-tools.ts:160-191:So on Windows/Linux:
entry.commandbranch is skipped (Warp has nocommand).macOpenBundlebranch is gatedprocess.platform === 'darwin'.resolveEntryunconditionally returns{ available: false }.Detection never probes the actual Windows install path (
%LOCALAPPDATA%\Programs\Warp\warp.exe), Program Files, the Windows registryApp Paths, or Start Menu shortcuts.The user-facing string:
apps/web/src/i18n/locales/en.ts:596Contrast: the
terminalentry (host-tools.ts:69) is correctly platform-gated withplatforms: ['darwin'], so it is hidden off-macOS instead of shown-but-broken. Warp lacks the equivalent guard.Suggested fixes (pick per product intent)
$PATH:%LOCALAPPDATA%\Programs\Warp\warp.exe(andWarpPreview), plus%PROGRAMFILES%\Warp\.warp-terminalon$PATH/ standard install dirs.This needs a new path-probe fallback in
resolveEntry(the current logic only knows$PATH+ macOS bundles).command: 'warp'so a$PATHshim is honored on all platforms (helps users who do have the shim, but does NOT fix the installer-default case since Warp's Windows installer doesn't add a shim).platforms: ['darwin'](orexcludedPlatforms: ['win32', 'linux']) to the Warp entry so it is hidden where it cannot be detected, matching theterminalentry — until proper detection lands.Options 1 + 3 could ship together (hide now, enable on real detection later).
Notes
Unknown arguments: output-format, outputFormat#978 (Gemini CLI wrong binary on PATH) — both agent-runtime detection, not host-tool detection.🤖 Generated by Claude Code on behalf of @cbeaulieu-gt