Skip to content

原文(日本語に翻訳)

返されたマッチの説明が実際の入力ルールに対応していることを検証するよう bash パーミッションクラシファイアを修正し、ハルシネーションした説明によって誤ってパーミッションが付与されることを防ぎます。

原文(英語)

Fixed the bash permission classifier to validate that returned match descriptions correspond to actual input rules, preventing hallucinated descriptions from incorrectly granting permissions

概要

bashコマンドのパーミッション判定(許可/拒否)を行うクラシファイアが、存在しないルールへの参照(ハルシネーション)に基づいてパーミッションを付与してしまう可能性がありました。この修正により、クラシファイアが返すマッチ説明が実際に設定されたルールと対応しているかを検証するようになり、セキュリティが強化されました。不正なパーミッション付与を防ぐ重要なセキュリティ修正です。

基本的な使い方

bash
# パーミッション設定の確認
# .claude/settings.json でbashコマンドのパーミッションを設定

# 設定例
cat .claude/settings.json
json
{
  "permissions": {
    "allow": [
      "Bash(git:*)",
      "Bash(npm test:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}
bash
# 修正後: クラシファイアは実際のルールに基づいてのみパーミッションを付与
# ハルシネーションしたルール参照は無効とされる

実践例

ユースケース1: セキュアなCI環境でのパーミッション管理

json
// .claude/settings.json - CI環境での制限的なパーミッション設定
{
  "permissions": {
    "allow": [
      "Bash(npm test)",
      "Bash(npm run lint)",
      "Bash(git status)",
      "Bash(git diff)"
    ],
    "deny": [
      "Bash(git push:*)",
      "Bash(npm publish:*)",
      "Bash(rm:*)"
    ]
  }
}
bash
# 修正後: 上記のルールに厳密に従い、
# 許可されていないコマンドは実行されない
# ハルシネーションによる誤許可が防止される

ユースケース2: 本番環境へのアクセス制限

json
// 本番環境での厳格なパーミッション設定
{
  "permissions": {
    "allow": [
      "Bash(kubectl get:*)",
      "Bash(kubectl describe:*)"
    ],
    "deny": [
      "Bash(kubectl delete:*)",
      "Bash(kubectl apply:*)",
      "Bash(kubectl rollout restart:*)"
    ]
  }
}
bash
# 修正後: 読み取り専用のkubectlコマンドのみ許可
# 変更系コマンドへのアクセスが確実に拒否される
# 「このルールで許可されている」という誤った説明が生成されても
# 実際のルールリストで検証されるため拒否される

ユースケース3: パーミッション審査ログの活用

bash
# パーミッション判定の詳細ログ確認
claude --debug

# 修正後: パーミッション判定時に実際のルールとの対応が検証され
# ログにも正確なルール参照が記録される

注意点

  • この修正はセキュリティ上重要な変更です。バージョン2.1.47への更新を強く推奨します
  • ハルシネーションとはAIが存在しない情報を「生成」してしまう現象です
  • パーミッション設定が正しく機能しているか定期的に検証することを推奨します
  • --dangerously-skip-permissionsフラグはこのクラシファイアをバイパスします。本番環境での使用は避けてください
  • パーミッション設定の変更後は、実際の動作をテスト環境で確認してください

関連情報