Skip to content

原文(日本語に翻訳)

PowerShellツールコマンドがパーミッションモードで自動承認できるようになり、Bashの動作と一致するようになった

原文(英語)

PowerShell tool commands can now be auto-approved in permission mode, matching Bash behavior

概要

Windows環境でPowerShellを使用している場合、これまでPowerShellコマンドはBashコマンドと異なり自動承認の対象外だった。今回の更新でBashと同様に自動承認ルールを設定できるようになり、Windows環境でのワークフローが大幅に改善される。

基本的な使い方

設定ファイルにPowerShellコマンドの自動承認ルールを追加する:

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "PowerShell(Get-ChildItem *)",
      "PowerShell(npm *)",
      "PowerShell(dotnet *)"
    ]
  }
}

実践例

よく使うPowerShellコマンドを自動承認する

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "PowerShell(Get-ChildItem *)",
      "PowerShell(Get-Content *)",
      "PowerShell(npm install)",
      "PowerShell(npm run *)",
      "PowerShell(dotnet build)",
      "PowerShell(dotnet test *)"
    ]
  }
}

.NETプロジェクト向けの設定

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "PowerShell(dotnet *)",
      "PowerShell(nuget *)",
      "PowerShell(git *)"
    ]
  }
}

開発環境全体での設定(ユーザーレベル)

json
// ~/.claude/settings.json
{
  "permissions": {
    "allow": [
      "PowerShell(git *)",
      "PowerShell(npm *)",
      "PowerShell(yarn *)",
      "PowerShell(pnpm *)"
    ]
  }
}

特定のコマンドのみを許可する(厳格な設定)

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "PowerShell(npm run build)",
      "PowerShell(npm run test)"
    ],
    "deny": [
      "PowerShell(Remove-Item *)"
    ]
  }
}

注意点

  • PowerShellコマンドの自動承認はBashと同じ形式で設定できる
  • deny ルールは allow ルールよりも優先される
  • ワイルドカード(*)を使って柔軟なパターンマッチングが可能
  • 削除系コマンド(Remove-Itemrm など)の自動承認には十分注意すること
  • この機能はWindows環境のPowerShellに加え、macOSやLinuxでPowerShell Coreを使う場合にも適用される
  • セキュリティの観点から、必要最小限のコマンドのみを自動承認することを推奨する

関連情報