CLAUDE_CODE_SHELL_PREFIX 設定時に、引数にスペースやシェル特殊文字が含まれると MCP stdio サーバーが破損した引数を受け取ってしまう問題を修正英語原文を表示
CLAUDE_CODE_SHELL_PREFIX is set and an argument contains spaces or shell metacharacters変更後
監査やデバッグのためにシェルをラップしている環境でも、MCP 連携を安定して利用できます。
Claude Code が起動するシェルコマンドを包むコマンドプレフィックス。対象は Bash ツール呼び出し、フックコマンド、ステータスラインコマンド、stdio MCP サーバーの起動コマンド。PowerShell フックと exec フォームのフックはプレフィックスなしで実行される。ロギングや監査に有用。/path/to/logger.sh のような実行ファイルのパスを直接設定すると、各コマンドは /path/to/logger.sh '<command>' として実行される。ラッパーはコマンドラインを 1 つのシェルクォートされた引数として $1 で受け取るため、ラッパーは $1 を exec bash -c '$1' のようにシェルで再評価しなければならない。$1 を素の実行ファイルパスとして扱うと、npx -y <package> のように引数を渡す stdio MCP サーバーが壊れる。Bash ツール呼び出しでは、$1 に含まれるのは Claude が実行したコマンドだけでなく、環境セットアップを含む Claude Code が組み立てた完全なシェル呼び出しである。
Command prefix that wraps shell commands Claude Code spawns: Bash tool calls, hook commands, status line commands, and stdio MCP server startup commands. PowerShell hooks and exec-form hooks run without the prefix. Useful for logging or auditing. Setting a bare executable path such as /path/to/logger.sh runs each command as /path/to/logger.sh '<command>'. The wrapper receives the command line as a single shell-quoted argument in $1, so the wrapper must re-evaluate $1 with a shell, for example exec bash -c "$1". Treating $1 as a bare executable path breaks stdio MCP servers that pass arguments such as npx -y <package>. For Bash tool calls, $1 contains the full shell invocation Claude Code assembles, including environment setup, not only the command Claude ran
CLAUDE_CODE_SHELL_PREFIX 設定時に、引数にスペースやシェル特殊文字が含まれると MCP stdio サーバーが破損した引数を受け取ってしまう問題を修正CLAUDE_CODE_SHELL_PREFIX is set and an argument contains spaces or shell metacharacters変更後
監査やデバッグのためにシェルをラップしている環境でも、MCP 連携を安定して利用できます。