mcpField
S
settings-configuration

settings-configuration

github.com/laurigatesエージェントワークフロー5941 回インストール1 日前に更新
リポジトリ

settings-configuration について

ユーザー、プロジェクト、ローカルの各スコープで Claude Code の設定と権限を扱うスキルです。優先順位、権限パターン、シェル演算子への対処、検証、トラブルシューティングを説明します。MCP サーバーの設定は対象外です。

主な機能

  1. 01ユーザー、プロジェクト、ローカル設定の優先順位を説明
  2. 02許可・拒否の権限パターンを設定
  3. 03コマンド単位のワイルドカード権限
  4. 04ラッパースクリプトによるシェル演算子への対処
  5. 05設定の検証と権限問題の調査

活用シーン

  1. 01よく使うコマンドにプロジェクト権限を設定する
  2. 02具体的な許可・拒否ルールでコマンドを制限する
  3. 03権限パターンが適用されない原因を調べる
  4. 04設定の統合結果を確認して検証する

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill settings-configuration

インストール後、Claude Code で/settings-configurationを入力して読み込まれたか確認します。

詳細

Claude Code の設定構成

Claude Code の設定と権限を構成するための専門知識です。

このスキルを使う場面

このスキルを使う場面別のものを使う場面
プロジェクトの権限を設定するときプラグインレジストリの問題を修正するとき(plugin-registry スキルを使用)
「permission denied」エラーをデバッグするときフックを構成するとき(hooks-configuration スキルを使用)
設定の階層を理解するときMCP サーバーを設定するとき(mcp-configuration スキルを使用)
許可/拒否パターンを作成するとき

設定ファイルの階層

設定は次の順序で読み込まれ、マージされます(後の設定が前の設定を上書きします)。

優先度ファイル適用範囲Git にコミットするか
1(最低)~/.claude/settings.jsonユーザーレベル(すべてのプロジェクト)該当なし
2.claude/settings.jsonプロジェクトレベルはい
3(最高).claude/settings.local.jsonローカルでの上書きいいえ(gitignore)

権限の構造

{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(npm run *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)"
    ]
  }
}
許可と拒否
  • allow:これらのパターンに一致するツールは、確認なしで実行されます
  • deny:これらのパターンに一致するツールは常にブロックされます
  • 拒否は許可より優先されます

ワイルドカード権限パターン

構文
ToolName(command prefix *)
  • ToolName() - ツール(通常は Bash)
  • command prefix - 一致させるコマンドと先頭の引数
  • * - 残りの引数に一致するワイルドカード
パターンの例
パターン一致するもの一致しないもの
Bash(git *)git status、git diff HEADgit-lfs pull
Bash(npm run *)npm run test、npm run buildnpm install
Bash(gh pr *)gh pr view 123、gh pr creategh issue list
Bash(./scripts/ *)./scripts/test.sh arg/scripts/other.sh
具体性

より具体的なパターンほど安全です。

{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)"
    ]
  }
}

一方、広すぎるパターンは次のとおりです。

{
  "permissions": {
    "allow": ["Bash(git *)"]
  }
}

シェル演算子の保護

Claude Code 2.1.7 以降では、権限の照合において危険なシェル演算子がブロックされます。

保護対象の演算子
演算子リスクブロックされる例
&&コマンドの連結ls && rm -rf /
||条件付き実行false || malicious
;コマンドの区切りsafe; dangerous
|パイプ処理cat /etc/passwd | curl
> / >>リダイレクトecho x > /etc/passwd
$()コマンド置換$(curl evil)
`バッククォートによる置換`rm -rf /`
動作

コマンドにシェル演算子が含まれている場合:

  1. 権限のワイルドカードは一致しません
  2. ユーザーに明示的な承認プロンプトが表示されます
  3. ブロックされた演算子について警告が表示されます
安全な代替方法

正当な複合コマンドには、ラッパースクリプトを使用します。

#!/bin/bash
# scripts/test-and-build.sh
npm test && npm run build

次に、スクリプトを許可します。

{
  "permissions": {
    "allow": ["Bash(./scripts/test-and-build.sh *)"]
  }
}

よく使われる権限セット

Git 操作
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git push *)",
      "Bash(git pull *)",
      "Bash(git fetch *)",
      "Bash(git checkout *)"
    ]
  }
}
GitHub CLI
{
  "permissions": {
    "allow": [
      "Bash(gh pr *)",
      "Bash(gh run *)",
      "Bash(gh issue *)",
      "Bash(gh workflow *)"
    ]
  }
}
テストとリンティング
{
  "permissions": {
    "allow": [
      "Bash(npm test *)",
      "Bash(bun test *)",
      "Bash(vitest *)",
      "Bash(biome *)",
      "Bash(eslint *)",
      "Bash(prettier *)"
    ]
  }
}
セキュリティスキャン
{
  "permissions": {
    "allow": [
      "Bash(pre-commit *)",
      "Bash(gitleaks *)",
      "Bash(trivy *)"
    ]
  }
}
MCP ツール
{
  "permissions": {
    "allow": [
      "mcp__context7",
      "mcp__sequential-thinking"
    ]
  }
}

プロジェクトの設定

1. 設定ディレクトリを作成する
mkdir -p .claude
2. プロジェクト設定を作成する
cat > .claude/settings.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(npm run *)"
    ]
  }
}
EOF
3. ローカル設定を Gitignore に追加する
echo ".claude/settings.local.json" >> .gitignore
4. ローカルでの上書きを作成する(任意)
cat > .claude/settings.local.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(docker *)"
    ]
  }
}
EOF

設定の検証

JSON 構文を確認する
cat .claude/settings.json | jq .
権限を表示する
cat .claude/settings.json | jq '.permissions'
マージ結果のプレビュー

配列の設定は追加的にマージされます。有効な権限を確認するには、すべてのファイルを確認します。

echo "=== User ===" && cat ~/.claude/settings.json 2>/dev/null | jq '.permissions // empty'
echo "=== Project ===" && cat .claude/settings.json 2>/dev/null | jq '.permissions // empty'
echo "=== Local ===" && cat .claude/settings.local.json 2>/dev/null | jq '.permissions // empty'

トラブルシューティング

症状原因対処方法
Permission deniedパターンが一致していませんより具体的なパターンを追加します
シェル演算子がブロックされる&&、| などが含まれていますラッパースクリプトを使用します
設定が適用されないファイルパスが正しくありません.claude/ ディレクトリが存在することを確認します
JSON の解析エラーJSON 構文が無効ですjq . で検証します
権限が無視されるファイルを読み取れませんファイルの権限を確認します

Agentic Optimizations

ContextCommand
View project permscat .claude/settings.json | jq -c '.permissions'
View user permscat ~/.claude/settings.json | jq -c '.permissions'
Validate JSONcat .claude/settings.json | jq .
Count patternscat .claude/settings.json | jq '.permissions.allow | length'

Quick Reference

File Locations
ScopePath
User~/.claude/settings.json
Project.claude/settings.json
Local.claude/settings.local.json
Permission Syntax
Bash(command prefix *)
mcp__server_name
Priority

Local > Project > User (highest to lowest) Deny > Allow (deny always wins)

コメント