0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の設定と権限ルールのマージと優先順位

Last updated at Posted at 2025-12-13

備忘的なやつです。
ユーザ設定以外で考える必要が出たので色々実験。

「共有プロジェクト設定 (.claude/settings.json) と ユーザー設定 (~/.claude/settings.json) の 権限ルール(permissions)について書きますが、大体公式docに書いてある。

まとめ

  • 設定の優先順位は共有プロジェクト設定 > ユーザー設定
  • 権限ルールの優先順位は Deny > (Ask >) Allow
  • DenyはDenyでマージされる、プロジェクト側でAllowしても、ユーザー設定でDenyなら拒否される(ユーザ設定はベースライン)
  • Claudeはカレントディレクトリの .claude を参照する(親ディレクトリへ遡らない)

基本

このツールはプレフィックスマッチを使用し、正規表現またはglobパターンではありません
ワイルカード:*はパターンの末尾でのみ機能し、任意の継続にマッチします

Bashのみこれ。よく忘れる。

Read & Editルールは両方ともgitignore仕様に従い

他は gitignoreと一緒

/doctor でエラーを潰しておくこと。これがないと権限設定が読み込まれない(全部使える)

優先順位あれこれ

Denyのマージ

  • 前提: ユーザ設定で Bash(ls -a) をdeny, プロジェクト設定で Bash(ls -la) をdeny
  • 操作: プロジェクトで ls -lals -a実行
  • 結果: どっちも拒否

Denyルールは単純にマージ(和集合)

ユーザのdeny と プロジェクトのallow

  • 前提: ユーザ設定で Bash(ls:*) とdeny, プロジェクト設定で Bash(ls -la) をallow
  • 操作: プロジェクトでlsとls -laを実行
  • 結果: どっちも拒否

denyとallowがそれぞれマージ -> deny > allow のルールで 拒否

Claudeはカレントディレクトリの.claudeを参照する

.
├── .claude
└── dirA
.claude/settings.json
{
    "permissions": {
      "allow": [],
      "deny": [ "Bash(ls:*)"]
    }
}

dirA で claudeからls拒否されない


 ln -s ${project_root}/.claude/settings.json 

settings.json@ -> ../../.claude/settings.json
dirAからシンボリックリンクを貼ってやると lsは拒否される

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?