原文(日本語に翻訳)
disableAllHooks 設定が管理された設定階層を尊重するように修正しました — 非管理設定がポリシーで設定された管理フックを無効化できなくなりました(#26637)。
原文(英語)
Fixed disableAllHooks setting to respect managed settings hierarchy — non-managed settings can no longer disable managed hooks set by policy (#26637)
概要
エンタープライズ環境でのセキュリティに関わる重要な修正です。これまでは、管理者がポリシーとして設定した(マネージド)フックを、ユーザーが disableAllHooks: true を設定することで無効化できてしまっていました。この修正により、マネージド設定として設定されたフックは、非マネージド設定の disableAllHooks では無効化できなくなります。セキュリティポリシーの強制が確実に機能するようになります。
基本的な使い方
この修正は主にエンタープライズ環境に影響します。管理者がポリシーでフックを設定している場合、そのフックは保護されます。
json
// 管理者が設定するポリシー(マネージド設定)
// /etc/claude/settings.json または MDM配布設定
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "/usr/local/bin/security-audit.sh"
}]
}
]
}
}json
// ユーザーが試みる設定(非マネージド)
// ~/.claude/settings.json
{
"disableAllHooks": true // 修正後: マネージドフックには影響しない
}実践例
ユースケース1: エンタープライズセキュリティ監査の保護
セキュリティ監査フックがユーザーによって無効化されないようにする場合。
json
// 管理者ポリシー(マネージド設定として配布)
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "/usr/local/bin/command-security-check.sh",
"timeout": 10000
}]
}
],
"PostToolUse": [
{
"matcher": "Write",
"hooks": [{
"type": "command",
"command": "/usr/local/bin/file-change-audit.sh"
}]
}
]
}
}bash
# ユーザーがdisableAllHooksを試みても...
# ~/.claude/settings.json に "disableAllHooks": true を設定
claude
# → マネージドフック(セキュリティ監査)は引き続き実行される
# → ユーザー定義の非マネージドフックのみが無効化されるユースケース2: コンプライアンスフックの強制
規制要件によるコンプライアンスチェックを確実に実行する場合。
json
// 企業ポリシー(マネージド設定)
{
"hooks": {
"Stop": [
{
"hooks": [{
"type": "command",
"command": "/usr/local/bin/compliance-check.sh"
}]
}
],
"ConfigChange": [
{
"hooks": [{
"type": "command",
"command": "/usr/local/bin/log-config-change.sh"
}]
}
]
}
}ユースケース3: マネージド設定と非マネージド設定の分離
ユーザーが自分のフックを無効化しつつ、組織のフックを維持する場合。
json
// ユーザー設定(非マネージド)
{
"disableAllHooks": true
// → ユーザー自身の非マネージドフックを無効化
// → 組織のマネージドフックは影響を受けない
}bash
# 結果:
# - ユーザーのカスタムフック: 無効(disableAllHooksの効果)
# - 管理者のマネージドフック: 引き続き有効(修正による保護)注意点
- この修正はエンタープライズ・チーム設定を使用している組織に最も影響があります。
- 個人ユーザー(管理者ポリシーなし)の場合、
disableAllHooks: trueはこれまで通りすべてのフックを無効化します。 - マネージド設定とは、MDMや企業ポリシーとして配布されたシステムレベルの設定を指します。
ConfigChangeフック(v2.1.49で追加)もこの保護の対象です。- GitHub Issue #26637 で報告された問題の修正です。