opencode icon indicating copy to clipboard operation
opencode copied to clipboard

Desktop app always uses SHELL (WSL) on Windows

Open mizaibear opened this issue 2 days ago • 2 comments

Description

Desktop app ignores OPENCODE_GIT_BASH_PATH. when execution with BashTool, always uses SHELL (WSL) on Windows

Environment:

  • OS: Windows 10
  • OpenCode: Desktop version
  • Git Bash: Installed at C:\Program Files\Git\bin\bash.exe
  • WSL: Ubuntu installed
  • OPENCODE_GIT_BASH_PATH set to C:\Program Files\Git\bin\bash.exe in Windows environment variables
$ where bash
C:\Program Files\Git\usr\bin\bash.exe
C:\Windows\System32\bash.exe

Description: The desktop app ignores the OPENCODE_GIT_BASH_PATH environment variable when spawning the CLI sidecar. The CLI shell detection logic in shell.ts prioritizes process.env.SHELL over OPENCODE_GIT_BASH_PATH, causing it to use WSL bash instead of Git Bash. This breaks the Bash tool since Windows environment variables (PATH, PYTHONPATH, etc.) are not inherited by the WSL environment.

Reproduction:

  1. Install OpenCode Desktop on Windows
  2. Install Git Bash and WSL
  3. Set OPENCODE_GIT_BASH_PATH=C:\Program Files\Git\bin\bash.exe in Windows environment variables

Expected Behavior: The Bash tool should use Git Bash as configured via OPENCODE_GIT_BASH_PATH, preserving all Windows environment variables.

Actual Behavior: The Bash tool uses WSL bash (from SHELL environment variable), causing:

  • All Windows environment variables to be unavailable
  • Commands requiring Windows tools to fail
  • Configurations in Git Bash (PATH, npm, Python, etc.) to be ignored

Root Cause: In packages/desktop/src-tauri/src/cli.rs, the create_command() function for Windows does not pass the OPENCODE_GIT_BASH_PATH environment variable to the CLI sidecar:

#[cfg(target_os = "windows")]
pub fn create_command(app: &tauri::AppHandle, args: &str) -> Command {
    // ... existing env variables ...
    .env("OPENCODE_CLIENT", "desktop")
    .env("XDG_STATE_HOME", &state_dir);
    // Missing: .env("OPENCODE_GIT_BASH_PATH", ...)
}

The CLI's shell detection in packages/opencode/src/shell/shell.ts prioritizes SHELL:

export const acceptable = lazy(() => {
  const s = process.env.SHELL  // Checked first
  if (s && !BLACKLIST.has(...)) return s
  return fallback()  // OPENCODE_GIT_BASH_PATH is only checked here
})

Plugins

No response

OpenCode version

1.1.19

Steps to reproduce

1.Git-Bash Installed. 2.WSL Installed.

Screenshot and/or share link

No response

Operating System

Win10 22H2

Terminal

OpenCode-Desktop-Win64

mizaibear avatar Jan 14 '26 07:01 mizaibear