Skip to content

原文(日本語に翻訳)

settings.autoMode.hard_deny を追加:ユーザーの意図や許可例外に関わらず無条件にブロックするautoモード分類ルール

原文(英語)

Added settings.autoMode.hard_deny for auto mode classifier rules that block unconditionally regardless of user intent or allow exceptions

概要

settings.autoMode.hard_deny は、Claude Code のautoモードにおいて、ユーザーの意図や他のルールによる例外を問わず、特定の操作を無条件にブロックする設定です。既存の allowsoft_deny と異なり、hard_deny に設定されたルールは絶対的な拒否ポリシーとして機能します。エンタープライズ環境でのコンプライアンス要件や、絶対に実行させてはならない操作の制御に活用できます。

基本的な使い方

settings.jsonautoMode セクションに hard_deny 配列を追加します。

json
{
  "autoMode": {
    "hard_deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force)"
    ]
  }
}

この設定により、rm -rf *git push --force はautoモードで絶対に実行されなくなります。

実践例

本番環境への直接変更を禁止する

json
{
  "autoMode": {
    "hard_deny": [
      "Bash(kubectl * --namespace=production *)",
      "Bash(aws * --profile prod *)",
      "Bash(terraform apply *production*)"
    ]
  }
}

本番環境を操作するコマンドパターンを登録することで、誤って本番に変更を適用するリスクを排除できます。

機密ファイルの読み書きを禁止する

json
{
  "autoMode": {
    "hard_deny": [
      "Read(/etc/passwd)",
      "Read(/etc/shadow)",
      "Write(/etc/*)",
      "Bash(cat /etc/shadow)"
    ]
  }
}

soft_deny との使い分け

json
{
  "autoMode": {
    "allow": [
      "Bash(npm install)"
    ],
    "soft_deny": [
      "Bash(npm publish *)"
    ],
    "hard_deny": [
      "Bash(npm publish * --registry https://registry.npmjs.org)"
    ]
  }
}
  • allow: 無条件に許可
  • soft_deny: ユーザーの意図によって許可される場合がある(柔軟な拒否)
  • hard_deny: いかなる理由でも絶対に許可しない(厳格な拒否)

エンタープライズポリシーとしての活用

管理者設定(managed settings)に組み込むことで、組織全体に適用できます。

json
{
  "autoMode": {
    "hard_deny": [
      "Bash(curl * http://*)",
      "Bash(wget * http://*)",
      "Bash(*ssh* production*)"
    ]
  }
}

注意点

  • hard_deny はユーザーが明示的に操作を許可しようとしても機能します。allow リストより優先されます
  • ルールのパターンマッチングは allowsoft_deny と同じ構文を使用します
  • 過度に広いパターン(例: Bash(*))を設定すると、正常な操作もすべてブロックされるため注意してください
  • 設定はプロジェクト設定、ユーザー設定、管理者設定のいずれでも使用可能です

関連情報