Appearance
SEC414 / CLAUDE-GIT-TAG-PERMISSION
SEC414 flags shared Claude settings when permissions.allow grants the exact wildcard permission Bash(git tag:*).
Why It Matters
git tag mutates repository release markers and distribution metadata. Granting it broadly in shared AI policy makes tag 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 tag:*)
Clean Cases
These stay clean:
- more specific permissions such as
Bash(git tag v1.2.3) - settings files that do not grant
git tagat all - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Bash(git tag:*)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Bash(git tag v1.2.3)", "Read(*)"]
}
}How To Fix
Remove shared Bash(git tag:*) permissions or replace them with a narrower reviewed command pattern that keeps repository tag mutation under explicit user control.