Skip to content

原文(日本語に翻訳)

  • 権限ルールマッチングの複数の問題を修正:ワイルドカードルールがヒアドキュメント、埋め込み改行、引数なしのコマンドにマッチしない問題、sandbox.excludedCommands が環境変数プレフィックス付きで失敗する問題、「常に許可」がネストされたCLIツールに対して広すぎるプレフィックスを提案する問題、拒否ルールがすべてのコマンド形式に適用されない問題

原文(英語)

  • Fixed several permission rule matching issues: wildcard rules not matching commands with heredocs, embedded newlines, or no arguments; sandbox.excludedCommands failing with env var prefixes; "always allow" suggesting overly broad prefixes for nested CLI tools; and deny rules not applying to all command forms

概要

権限ルールのマッチング処理における4つの問題が修正されました。ワイルドカードルールが特定のコマンドパターンで機能しない問題、サンドボックスの除外コマンド設定が環境変数付きコマンドで失敗する問題、「常に許可」が不適切に広いルールを提案する問題、拒否ルールがすべてのコマンド形式をカバーしない問題が解消されています。これらの修正により、権限管理がより正確かつ安全に動作します。

基本的な使い方

権限ルールは settings.json で定義します。修正後はより多くのパターンが正しくマッチします:

json
{
  "permissions": {
    "allow": [
      "Bash(npm test*)"
    ],
    "deny": [
      "Bash(rm -rf *)"
    ]
  }
}

実践例

ヒアドキュメントを含むコマンドのマッチング

修正前はワイルドカードルールがヒアドキュメントを含むコマンドにマッチしませんでしたが、修正後は正しくマッチします:

bash
# このようなコマンドがワイルドカードルールに正しくマッチする
cat <<EOF > output.txt
some content
EOF
json
{
  "permissions": {
    "allow": [
      "Bash(cat *)"
    ]
  }
}

環境変数プレフィックス付きコマンドの除外

sandbox.excludedCommands が環境変数プレフィックス付きのコマンドでも正しく動作します:

json
{
  "sandbox": {
    "excludedCommands": ["node"]
  }
}
bash
# 修正前: 除外されなかった
NODE_ENV=production node server.js

# 修正後: 正しく除外される
NODE_ENV=production node server.js

拒否ルールの完全な適用

拒否ルールがコマンドのすべての形式に適用されるようになりました:

json
{
  "permissions": {
    "deny": [
      "Bash(docker *)"
    ]
  }
}
bash
# 以下のすべての形式が正しく拒否される
docker run ...
env DOCKER_HOST=... docker run ...

注意点

  • ワイルドカードルール(*)のマッチング範囲が拡大したため、既存のルールが予期しないコマンドにマッチする可能性があります
  • sandbox.excludedCommands の修正により、以前は除外されなかったコマンドが除外されるようになる場合があります
  • 「常に許可」の提案が修正前よりも狭い(より正確な)範囲になるため、以前より多くのプロンプトが表示される可能性があります
  • 拒否ルールがより厳密に適用されるため、以前許可されていた一部のコマンドパターンがブロックされる可能性があります

関連情報