Appearance
SEC509 / CLAUDE-GH-VARIABLE-SET-PERMISSION
SEC509 flags shared Claude settings when permissions.allow grants blanket GitHub variable mutation authority through gh variable set.
Why It Matters
gh variable set can write or overwrite repository, environment, or organization variables. In a shared committed settings file that is broader than most teams want to delegate by default.
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 tokenBash(gh variable set:*)
Clean Cases
These stay clean:
- narrower read-only grants such as
Bash(gh variable list:*) - settings files that do not grant blanket variable mutation access
- fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Bash(gh variable set:*)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Bash(gh variable list:*)", "Read(*)"]
}
}How To Fix
Remove shared gh variable set permissions or replace them with narrower reviewed commands that keep variable mutation under explicit user control.