Claude CodeAnthropic の機能

FEATURE

PowerShell tool

PowerShell tool は、Claude Code の Claude が PowerShell コマンドをネイティブに実行するためのツールです。

プレビュー・先行提供公式発表と照合済み
初出未調査
ページ更新
提供状態プレビュー・先行提供
公式の記載で確認できた環境ターミナル
提供を確認できたプラン公式に記載なし
目次 CONTENTS
  1. できること
  2. 機能解説
  3. 使い方
  4. 利用シーン
  5. ChatGPT・OpenAI の対応する機能
  6. これまでの変更
  7. 関連する機能
  8. 出典
CAN DO

できること

POINT 01

PowerShell をネイティブ実行

Claude が PowerShell コマンドをネイティブに実行できます。Windows では、コマンドが Git Bash を経由せず PowerShell で実行されます。

POINT 02

主要シェルとして扱う

ツールを有効にすると、Claude は PowerShell を主要なシェルとして扱います。Git Bash がインストールされていれば、POSIX スクリプト向けに Bash ツールも引き続き使えます。

POINT 03

ポリシーを変えずに実行

Claude Code はプロセススコープに限って -ExecutionPolicy Bypass を付けて PowerShell を起動するため、既定の Windows 環境でもマシンのポリシーを変えずに .ps1 スクリプトやモジュールのインポートが動作します。Group Policy の MachinePolicy と UserPolicy は上書きしません。

GUIDE

機能解説

概要

Windows では、コマンドが Git Bash を経由せず PowerShell で実行されます。ツールを有効にすると、Claude は PowerShell を主要なシェルとして扱います。Windows 環境で PowerShell スクリプトやモジュールを使う開発作業に関わる機能です。

PowerShell tool は、Claude が PowerShell コマンドをネイティブに実行するためのツールです。Windows では、Claude Code が PowerShell 7 以降の pwsh.exe を自動で検出し、見つからない場合は PowerShell 5.1 の powershell.exe を使います。

PowerShell コマンドは、作業ディレクトリのリセットについて Bash コマンドと同じ動作をとり、CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR 環境変数も同様に適用されます。また、grep、rg、egrep、fgrep、findstr、git grep、git diff の終了コード 1 を正常な結果として扱う場合があります。

Windows での文字コードと出力の扱いは次のとおりです。

  • PowerShell 5.1 では、> と >> によるリダイレクトで UTF-8 のファイルを書き出します。
  • ネイティブコマンドの標準入力にパイプで渡すテキストは UTF-8 でエンコードします。
  • エラー出力は ANSI エスケープシーケンスを除いて取得します。
  • 子プロセスが標準入力を待つコマンドには、待ち続ける代わりに end-of-file が渡されます。

フック・設定・スキルでのシェル指定

PreToolUse フックは、PowerShell tool のコマンド文字列を tool_input.command で受け取り、フィールドは Bash ツールと同じです。シェルコマンドを検査するフックでは、Bash だけでなく Bash|PowerShell にマッチさせます。

シェルの選択は、次の設定で行えます。

  • settings.json で "defaultShell": "powershell" を設定すると、対話的な ! コマンドが PowerShell を通ります。PowerShell tool の有効化が必要です。
  • 個々のコマンドフックに "shell": "powershell" を設定すると、そのフックが PowerShell で実行されます。フックは PowerShell を直接起動するため、CLAUDE_CODE_USE_POWERSHELL_TOOL の設定に関係なく動作します。
  • スキルの frontmatter に shell: powershell を設定すると、` !command ` ブロックが PowerShell で実行されます。PowerShell tool の有効化が必要です。

提供状況の注意

Windows では PowerShell tool が段階的に展開されており、CLAUDE_CODE_USE_POWERSHELL_TOOL でオプトイン・オプトアウトできます。Windows の Bedrock、Vertex、Foundry のユーザーには既定で有効になっており、CLAUDE_CODE_USE_POWERSHELL_TOOL=0 でオプトアウトできます。Linux と macOS では CLAUDE_CODE_USE_POWERSHELL_TOOL=1 で有効にでき、PATH 上に pwsh が必要です。

対象プランについては、公式のリリースノートには記載がありません。

管理者・導入時に確認したい点

実行ポリシー

Claude Code は PowerShell をプロセススコープに限って -ExecutionPolicy Bypass で起動します。この回避は Group Policy の MachinePolicy や UserPolicy を上書きしないため、組織のポリシーはそのまま適用されます。マシンの実効的な実行ポリシーに従わせたい場合は、CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1 を設定します。

Bash の拒否ルールとの関係

Git Bash がインストールされた Windows では、Bash を拒否すると、そのセッションでは PowerShell tool もオフになります。これは単独の Bash だけでなく Bash(git push *) のようなスコープ付きのルールにも、設定ファイルや --disallowedTools からのルールにも当てはまります。Bash の拒否ルールと併用して PowerShell tool を残すには、次のいずれかを行います。

  • 環境変数、または設定ファイルの env ブロックで CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を設定する。
  • 設定ファイルに、PowerShell(git push *) の拒否ルールのようなスコープ付きの PowerShell 権限ルールを追加する。

どちらも無い場合、スコープ付きの Bash 拒否ルールでは Bash ツールは使えたまま、Claude Code は警告無しに PowerShell をオフにします。なお、Bash ツールの拒否によって PowerShell tool もオフになり、シェルツールが無くなる場合には、起動時に警告が表示されます。

権限ルールの適用範囲

PowerShell tool のコマンドは、Bash と同様に権限モードで自動承認できます。Windows では、許可ルールと読み取り専用の判定が 32 KB までのコマンドに適用されます。

HOW TO USE

使い方

Windows では PowerShell tool が段階的に展開されており、CLAUDE_CODE_USE_POWERSHELL_TOOL でオプトイン・オプトアウトできます。

  1. 環境変数、または settings.json で CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を設定し、PowerShell tool を有効にします。
  2. Linux、macOS、WSL では PowerShell 7 以降が必要です。pwsh をインストールし、PATH に含まれていることを確認します。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

Windows の開発環境で、Git Bash を介さず PowerShell のまま Claude Code にコマンドを実行させたい場面に向いています。

CASE 02

既定の Windows 環境で、.ps1 スクリプトやモジュールを使う作業を Claude Code に任せる場面に使えます。

CASE 03

Group Policy で実行ポリシーを管理している組織で、ポリシーを維持したまま導入を検討する場面に向いています。

CASE 04

PreToolUse フックでシェルコマンドを検査し、Bash と PowerShell の両方に同じ確認を適用する運用に使えます。

COMPARISON

ChatGPT・OpenAI の対応する機能

比較の単位となる業務: Windows 環境での PowerShell コマンド実行と権限管理

TIMELINE

これまでの変更

  1. Windows で、現在のディレクトリを対象とし追加の引数を伴う一部の Set-Location や cd コマンドが自動承認されていた問題が修正され、承認を求めるようになりました。

  2. Windows で約 1 KB を超えるコマンドが常に許可を求める問題が修正され、許可ルールと読み取り専用の判定が 32 KB まで適用されるようになりました。

  3. Windows で、Bash ツールの拒否によって PowerShell tool もオフになりシェルツールが無くなる場合に、起動時の警告が表示されるようになりました。

  4. Windows で、cmd /c rd、rmdir、del、erase によってドライブルートやホームフォルダなど、Remove-Item が拒否するフォルダを削除できてしまう問題が修正されました。

  5. Windows で、バックグラウンドに送られたコマンドが Claude Code の終了時に停止する問題が修正されました。

  6. git と gh のコマンド引数の検証が改善されました。

  7. コマンドがタイムアウトして自動でバックグラウンド化された際の Bash/PowerShell tool のメッセージが改善されました。

  8. -ExecutionPolicy Bypass を渡すようになり、CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1 でオプトアウトできます。Windows の Bedrock、Vertex、Foundry のユーザーには既定で有効になりました。

  9. Windows でツールが有効な場合、Claude は Bash ではなく PowerShell を主要なシェルとして扱うようになりました。Microsoft Store、PATH なしの MSI、.NET グローバルツールでインストールされた PowerShell 7 が検出されるようになりました。単独の -- が --% 停止解析トークンと誤判定されなくなりました。

  10. Bash と同様に、権限モードで自動承認できるようになりました。

  11. Windows での段階的な展開が始まり、CLAUDE_CODE_USE_POWERSHELL_TOOL でオプトイン・オプトアウトできるようになりました。Linux と macOS では CLAUDE_CODE_USE_POWERSHELL_TOOL=1 で有効にできます (PATH 上に pwsh が必要)。

  12. プロンプトにバージョンに応じた構文ガイダンス (5.1 と 7 以降) が加わりました。Windows では、ダブルクォートと空白の両方を含む外部コマンド引数が自動許可されず、確認を求めるようになりました。/env が PowerShell tool のコマンドにも適用されるようになりました (以前は Bash のみ)。権限チェックが強化され、末尾の & によるバックグラウンドジョブでの回避などが修正されました。

SOURCES

出典

出典 13 件を表示