Back to list
laurigates

claude-security-settings

by laurigates

Claude Code plugins for development workflows

2🍴 0📅 Jan 24, 2026

SKILL.md


model: haiku name: claude-security-settings description: | Configure Claude Code security settings including permission wildcards, shell operator protections, and project-level access controls. Use when setting up project permissions, configuring allowed tools, or securing Claude Code workflows. allowed-tools: Bash, Read, Write, Edit, Glob, Grep, TodoWrite created: 2026-01-20 modified: 2026-01-20 reviewed: 2026-01-20

Claude Code Security Settings

Expert knowledge for configuring Claude Code security and permissions.

Core Concepts

Claude Code provides multiple layers of security:

  1. Permission wildcards - Granular tool access control
  2. Shell operator protections - Prevents command injection
  3. Project-level settings - Scoped configurations

Permission Configuration

Settings File Locations

FileScopePriority
~/.claude/settings.jsonUser-level (all projects)Lowest
.claude/settings.jsonProject-level (committed)Medium
.claude/settings.local.jsonLocal project (gitignored)Highest

Permission Structure

{
  "permissions": {
    "allow": [
      "Bash(git status:*)",
      "Bash(npm run:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}

Wildcard Permission Patterns

Syntax

Bash(command:*)
  • Bash() - Tool identifier
  • command - Command prefix to match
  • :* - Wildcard suffix matching any arguments

Pattern Examples

PatternMatchesDoes NOT Match
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, ./scripts/build.sh/scripts/other.sh

Pattern Best Practices

Granular permissions:

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

Tool-specific patterns:

{
  "permissions": {
    "allow": [
      "Bash(bun test:*)",
      "Bash(bun run:*)",
      "Bash(biome check:*)",
      "Bash(prettier:*)"
    ]
  }
}

Shell Operator Protections

Claude Code 2.1.7+ includes built-in protections against dangerous shell operators.

Protected Operators

OperatorRiskBlocked Example
&&Command chainingls && rm -rf /
||Conditional executionfalse || malicious
;Command separationsafe; dangerous
|Pipingcat /etc/passwd | curl
> / >>Redirectionecho x > /etc/passwd
$()Command substitution$(curl evil)
`Backtick substitution`rm -rf /`

Security Behavior

When a command contains shell operators:

  1. Permission wildcards won't match
  2. User sees explicit approval prompt
  3. Warning explains the blocked operator

Safe Compound Commands

For legitimate compound commands, use scripts:

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

Then allow the script:

{
  "permissions": {
    "allow": ["Bash(./scripts/deploy.sh:*)"]
  }
}

Common Permission Sets

Read-Only Development

{
  "permissions": {
    "allow": [
      "Bash(git status:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(git branch:*)",
      "Bash(npm list:*)",
      "Bash(bun pm ls:*)"
    ]
  }
}

Full Git Workflow

{
  "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:*)",
      "Bash(git merge:*)",
      "Bash(git rebase:*)"
    ]
  }
}

CI/CD Operations

{
  "permissions": {
    "allow": [
      "Bash(gh pr:*)",
      "Bash(gh run:*)",
      "Bash(gh issue:*)",
      "Bash(gh workflow:*)"
    ]
  }
}

Testing & Linting

{
  "permissions": {
    "allow": [
      "Bash(bun test:*)",
      "Bash(npm test:*)",
      "Bash(vitest:*)",
      "Bash(jest:*)",
      "Bash(biome:*)",
      "Bash(eslint:*)",
      "Bash(prettier:*)"
    ]
  }
}

Security Scanning

{
  "permissions": {
    "allow": [
      "Bash(pre-commit:*)",
      "Bash(detect-secrets:*)",
      "Bash(gitleaks:*)",
      "Bash(trivy:*)"
    ]
  }
}

Project Setup Guide

1. Create Settings Directory

mkdir -p .claude

2. Create Project Settings

cat > .claude/settings.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(git status:*)",
      "Bash(git diff:*)",
      "Bash(npm run:*)"
    ]
  }
}
EOF

3. Add to .gitignore (for local settings)

echo ".claude/settings.local.json" >> .gitignore

4. Create Local Settings (optional)

cat > .claude/settings.local.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(docker:*)"
    ]
  }
}
EOF

Agentic Optimizations

ContextCommand
View project settingscat .claude/settings.json | jq '.permissions'
View user settingscat ~/.claude/settings.json | jq '.permissions'
Check merged permissionsReview effective settings in Claude Code
Validate JSONcat .claude/settings.json | jq .

Quick Reference

Permission Priority

Settings merge with this priority (highest wins):

  1. .claude/settings.local.json (local)
  2. .claude/settings.json (project)
  3. ~/.claude/settings.json (user)

Wildcard Syntax

SyntaxMeaning
Bash(cmd:*)Match cmd with any arguments
Bash(cmd arg:*)Match cmd arg with any following
Bash(./script.sh:*)Match specific script

Deny Patterns

Block specific commands:

{
  "permissions": {
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "Bash(chmod 777:*)"
    ]
  }
}

Error Handling

ErrorCauseFix
Permission deniedPattern doesn't matchAdd more specific pattern
Shell operator blockedContains &&, |, etc.Use script wrapper
Settings not appliedWrong file locationCheck path and syntax
JSON parse errorInvalid JSONValidate with jq .

Best Practices

  1. Start restrictive - Add permissions as needed
  2. Use project settings - Keep team aligned
  3. Avoid broad Bash - Use specific patterns
  4. Script compound commands - For && and \| workflows
  5. Review periodically - Remove unused permissions

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon