[FEATURE] Feature request: named permission groups for reusable rule bundles

Resolved 💬 2 comments Opened Mar 9, 2026 by byliu-labs Closed Apr 7, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Real-world .claude/settings.json files accumulate long, repetitive rule lists. For example, a "git-workflow" set of permissions might include Bash(git status), Bash(git diff ), Bash(git add ), Bash(git commit ), Bash(git log ), etc. Today these must each be listed individually, and keeping them consistent across settings.json, settings.local.json, and managed settings is error-prone.

Proposed Solution

Real-world .claude/settings.json files accumulate long, repetitive rule lists. For example, a "git-workflow" set of permissions might include Bash(git status), Bash(git diff ), Bash(git add ), Bash(git commit ), Bash(git log ), etc. Today these must each be listed individually, and keeping them consistent across settings.json, settings.local.json, and managed settings is error-prone.

Alternative Solutions

Proposed Behavior

{
  "permissionGroups": {
    "git-readonly": [
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch)"
    ],
    "node-dev": [
      "Bash(npm test *)",
      "Bash(npm run *)",
      "Bash(npx *)"
    ]
  },
  "allow": [
    "group:git-readonly",
    "group:node-dev",
    "Read"
  ]
}

Groups would be expanded at evaluation time, before the deny > ask > allow precedence logic runs. Groups defined in managed settings could be referenced but not overridden by project-level settings.

Current Workaround

A PreToolUse hook script can approximate this by maintaining rule bundles in an external config and returning approve/deny decisions. This works but is fragile, undiscoverable, and doesn't integrate with the settings UI or "always allow" flow.

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗