原文(日本語に翻訳)
managed-settings.json と並んで managed-settings.d/ ドロップインディレクトリを追加。複数のチームがアルファベット順にマージされる独立したポリシーフラグメントをデプロイできるようになりました。
原文(英語)
Added managed-settings.d/ drop-in directory alongside managed-settings.json, letting separate teams deploy independent policy fragments that merge alphabetically
概要
managed-settings.d/ は、組織内の複数チームが独立したポリシー設定ファイルを管理できるようにするドロップインディレクトリです。各チームが個別の JSON フラグメントを配置すると、ファイル名のアルファベット順にマージされます。これにより、セキュリティチーム・インフラチーム・開発チームがそれぞれ独立して Claude Code のポリシーを管理できます。
基本的な使い方
managed-settings.d/ ディレクトリに個別の JSON ファイルを配置します。
/etc/claude-code/managed-settings.d/
├── 10-security.json # セキュリティチームのポリシー
├── 20-infra.json # インフラチームのポリシー
└── 30-dev-tools.json # 開発チームのポリシー各ファイルは通常の managed-settings.json と同じ形式で記述します:
json
// 10-security.json
{
"permissions": {
"deny": ["Bash(curl:*)", "Bash(wget:*)"]
}
}json
// 20-infra.json
{
"env": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "10000"
}
}実践例
セキュリティポリシーとツール設定の分離管理
大規模な組織では、セキュリティポリシーとツール設定を別々に管理したい場合があります:
managed-settings.d/
├── 01-base-policy.json # 基本ポリシー(全社共通)
├── 05-security-restrictions.json # セキュリティ制限
├── 10-approved-tools.json # 承認済みツール設定
└── 50-team-overrides.json # チーム固有の設定json
// 01-base-policy.json
{
"allowedTools": ["Read", "Write", "Edit", "Grep", "Glob"]
}json
// 05-security-restrictions.json
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(sudo:*)"
]
}
}CI/CD パイプラインによる自動デプロイ
各チームのリポジトリから設定フラグメントを自動デプロイする例:
bash
# CI/CD スクリプト例
POLICY_DIR="/etc/claude-code/managed-settings.d"
cp ./policies/team-settings.json "${POLICY_DIR}/30-team-$(date +%Y%m%d).json"アルファベット順マージの活用
ファイル名のプレフィックスで優先順位を制御できます:
00-defaults.json # デフォルト設定(最初に適用)
50-team.json # チーム設定(中間)
90-overrides.json # 強制上書き(最後に適用)注意点
- ファイルはアルファベット順にマージされるため、命名規則(例:
10-,20-のような数値プレフィックス)を統一することを推奨 - 同じキーが複数のファイルに存在する場合、後からマージされるファイル(アルファベット順で後)の値が優先される
- 既存の
managed-settings.jsonとの関係:両方が存在する場合、managed-settings.d/のフラグメントと統合される - JSON 構文エラーがあるファイルはスキップされる可能性があるため、デプロイ前に検証すること