Claude Desktop: add shell configuration support (env.SHELL or per-server shell override)

Resolved 💬 1 comment Opened Jun 10, 2026 by eejd Closed Jun 13, 2026

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.SHELL in claude_desktop_config.json at the top level (global shell override for all Desktop-spawned processes)
  • Support a shell key per MCP server entry alongside command/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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗