[FEATURE] Desktop app: setting to choose the integrated Terminal pane shell (e.g. Git Bash on Windows)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 30, 2026

Feature request

On Windows, the desktop app's integrated Terminal pane (Views -> Terminal / Ctrl+backtick) always spawns bare powershell.exe as a child of claude.exe. There is currently no supported way to choose a different shell for it:

  • settings.json "defaultShell" is documented as applying only to input-box ! commands (and per #72389 the desktop app ignores it even there).
  • CLAUDE_CODE_GIT_BASH_PATH only affects the agent's Bash tool, not the user-facing terminal.
  • The desktop docs (desktop.md, section "Run commands in the terminal") do not document shell selection at all.

Request: a setting to pick the shell (and args) used for new integrated-terminal tabs - e.g. a terminal.shell key, or extending defaultShell semantics to cover the pane - similar to VS Code's terminal.integrated.profiles. On Windows, Git Bash is the natural first option since Claude Code already locates and uses it for the Bash tool, so a bash-preferring user ends up with Claude running Git Bash while their own terminal is stuck on PowerShell 5.1.

This would also resolve #78596, where the hardcoded powershell.exe spawn breaks entirely on machines where PowerShell 5.1 is blocked by policy.

Environment

  • Claude Code desktop app on Windows 11 Pro (build 26200), CLAUDE_CODE_ENTRYPOINT=claude-desktop
  • Git for Windows installed (C:\Program Files\Git\bin\bash.exe)

Additional detail for maintainers

The pane's powershell.exe is spawned bare (no flags) by the app's Node utility process (--utility-sub-type=node.mojom.NodeService). Reading the live pane process's environment block shows it carries CLAUDE_AGENT_SDK_VERSION and TERM=xterm-256color but not CLAUDECODE - so the docs' statement that the terminal "shares the same environment as Claude" is only partially accurate (the agent's own tool shells get CLAUDECODE=1; the pane does not).

Current workaround

Because the pane loads the user's PowerShell profile, this profile snippet swaps it to Git Bash (keyed off CLAUDE_AGENT_SDK_VERSION, since CLAUDECODE is absent in the pane) - but it is clearly a hack:

if (($env:CLAUDE_AGENT_SDK_VERSION -or $env:CLAUDECODE -eq '1') -and
    -not [Console]::IsInputRedirected -and
    -not ([Environment]::GetCommandLineArgs() -like '-NonI*')) {
    $gitBash = 'C:\Program Files\Git\bin\bash.exe'
    if (Test-Path $gitBash) { & $gitBash -i -l; exit $LASTEXITCODE }
}

Related: #78596, #72389

View original on GitHub ↗