Claude Desktop: add shell configuration support (env.SHELL or per-server shell override)
Summary
Claude Code supports env.SHELL in ~/.claude/settings.json, which allows Claude-spawned shells to use a specific interpreter without changing the user's interactive shell. Claude Desktop has no equivalent.
Use case
Users on macOS who use a non-default shell for specific reasons (e.g., MacPorts bash 5.x vs. system /bin/bash 3.2, or fish/nushell) want MCP servers and tool invocations to run under a specific shell, independently of their login shell.
Concrete example: A user running MacPorts bash (/opt/local/bin/bash) needs declare -A and other bash 4+ features in their MCP server scripts. Their interactive shell is zsh (unchanged), but Claude Desktop spawns processes via launchd which resolves SHELL from the login environment — not from the user's terminal profile.
Current workaround
Set SHELL in ~/.zshenv (sourced by launchd), which is system-wide and can have unintended side effects on other applications.
Requested
Either of:
- Honor
env.SHELLinclaude_desktop_config.jsonat the top level (global shell override for all Desktop-spawned processes) - Support a
shellkey per MCP server entry alongsidecommand/env
Parity note
This mirrors what Claude Code already supports via settings.json:
{
"env": {
"SHELL": "/opt/local/bin/bash"
}
}
Bringing Desktop to parity would give users consistent shell control across both surfaces without requiring system-level workarounds.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗