Appearance
SEC415 / CLAUDE-GIT-BRANCH-PERMISSION
SEC415 flags shared Claude settings when permissions.allow grants the exact wildcard permission Bash(git branch:*).
Why It Matters
git branch mutates repository branch structure and can redirect collaboration flow. Granting it broadly in shared AI policy makes branch mutation part of the default team execution surface, which is harder to review and easier to over-apply than a narrower, task-specific command.
Trigger Shape
The rule triggers only when all of these are true:
- the file is a detected Claude settings surface
- the path is not fixture-like
permissions.allowcontains the exact stringBash(git branch:*)
Clean Cases
These stay clean:
- more specific permissions such as
Bash(git branch feature/test) - settings files that do not grant
git branchat all - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Bash(git branch:*)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Bash(git branch feature/test)", "Read(*)"]
}
}How To Fix
Remove shared Bash(git branch:*) permissions or replace them with a narrower reviewed command pattern that keeps branch mutation under explicit user control.