Skip to content

原文(日本語に翻訳)

セキュリティ: Bash(find:*) の許可ルールが find -execfind -delete を自動承認しなくなりました。

原文(英語)

Security: Bash(find:*) allow rules no longer auto-approve find -exec/-delete

概要

Bash(find:*) の許可ルールを設定している場合、これまでは find -execfind -delete オプションを使った危険な操作も自動的に承認されていました。今回のセキュリティ改善により、find コマンドに -exec-delete オプションが含まれる場合は別途確認が求められるようになります。find コマンドを単純なファイル検索に使う場合は影響ありません。

基本的な使い方

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(find:*)"  // findコマンドを許可
    ]
  }
}
bash
# これらは自動承認される(安全な検索操作)
find . -name "*.js"
find /tmp -type f
find . -name "*.log" -newer somefile

# これらは確認が求められるようになった(破壊的操作の可能性)
find . -name "*.tmp" -delete              # ファイル削除
find . -name "*.js" -exec cat {} \;      # 外部コマンド実行
find . -type f -exec chmod 644 {} +     # 権限変更

実践例

安全なfind操作(自動承認される)

bash
# ファイルの検索・一覧表示
find . -name "*.py" -type f
find /var/log -name "*.log" -mtime -7
find . -size +10M
find . -not -path "*/node_modules/*" -name "*.ts"
find ~ -name ".DS_Store" -ls  # -ls は表示のみ

要確認のfind操作(確認ダイアログが表示される)

bash
# -delete: ファイルを削除
find . -name "*.tmp" -delete

# -exec: 別コマンドを実行
find . -name "*.log" -exec rm {} \;
find . -type f -exec grep -l "secret" {} \;
find . -name "*.py" -exec python {} \;

# -exec ... +: 複数ファイルを一括処理
find . -name "*.js" -exec cat {} +

明示的な許可設定でfind -execを許可する

json
// 特定のfind -exec操作を明示的に許可したい場合
{
  "permissions": {
    "allow": [
      "Bash(find:*)",
      // find -exec を含む特定のコマンドパターンは
      // 実行時に個別に承認が必要
    ]
  }
}

ワークフローへの影響と対処法

bash
# 変更前: find -exec を使った一括処理(自動承認されていた)
find . -name "*.tmp" -exec rm {} \;

# 変更後の推奨: パイプを使った方法(xargsは別途確認が必要な場合あり)
find . -name "*.tmp" | xargs rm

# または rm コマンドを直接許可する
# settings.json で "Bash(rm:*)" を許可するか
# 実行時に個別承認する

注意点

  • Bash(find:*) の許可設定は引き続き有効ですが、-exec-delete が含まれる場合のみ確認ダイアログが表示されます
  • これはセキュリティ上の意図的な変更です。find -exec は任意のコマンドを実行できるため、自動承認は危険でした
  • -exec を多用するワークフローがある場合は、代替手段(パイプ + xargs など)の利用を検討してください
  • -execdir オプションも同様に確認が求められます
  • 既存のスクリプトやワークフローへの影響を確認し、必要に応じて設定を見直してください

関連情報