原文(日本語に翻訳)
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モードにおいて、ユーザーの意図や他のルールによる例外を問わず、特定の操作を無条件にブロックする設定です。既存の allow や soft_deny と異なり、hard_deny に設定されたルールは絶対的な拒否ポリシーとして機能します。エンタープライズ環境でのコンプライアンス要件や、絶対に実行させてはならない操作の制御に活用できます。
基本的な使い方
settings.json の autoMode セクションに 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リストより優先されます- ルールのパターンマッチングは
allowやsoft_denyと同じ構文を使用します - 過度に広いパターン(例:
Bash(*))を設定すると、正常な操作もすべてブロックされるため注意してください - 設定はプロジェクト設定、ユーザー設定、管理者設定のいずれでも使用可能です