環境変数

CLAUDE_CODE_SHELL_PREFIX

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 が組み立てた完全なシェル呼び出しである。

使い方・用途

  • Claude Code が実行する Bash ツール呼び出しや hook コマンド、stdio MCP サーバー起動コマンドをログとして記録したいときに、ラッパースクリプト経由でコマンドラインを受け取り監査できる
  • 組織のセキュリティ要件として、Claude Code が代理で実行するシェルコマンドを監査・記録したい場合に、全コマンドを共通のラッパーで包んで検査できる
  • ラッパーはコマンドラインを $1 に shell クォートされた単一引数として受け取るため、exec bash -c '$1' のようにシェルで再評価する実装が必要である
英語原文(公式ドキュメントより)

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

関連ドキュメント

関連する変更履歴

v2.1.128(1件)

Fixed
CLAUDE_CODE_SHELL_PREFIX 設定時に、引数にスペースやシェル特殊文字が含まれると MCP stdio サーバーが破損した引数を受け取ってしまう問題を修正
英語原文を表示
Fixed MCP stdio servers receiving corrupted arguments when CLAUDE_CODE_SHELL_PREFIX is set and an argument contains spaces or shell metacharacters

変更後

監査やデバッグのためにシェルをラップしている環境でも、MCP 連携を安定して利用できます。

関連ドキュメント

v1.0.61(1件)

Added
Added CLAUDE_CODE_SHELL_PREFIX for wrapping Claude and user-provided shell commands run by Claude Code

関連ドキュメント