Appearance
SEC390 / MD-GIT-PUSH-PERMISSION
SEC390 flags AI-native markdown frontmatter when allowed-tools or allowed_tools grants the exact token Bash(git push).
Why It Matters
git push is a high-impact mutation step. Granting it directly in shared instruction frontmatter makes publication authority part of the default workflow instead of a narrower reviewed action.
This rule intentionally lives in the opt-in governance preset rather than the main preview lane. A shared skill may legitimately document a publish workflow, but repo-wide push authority still deserves explicit review instead of reading like a headline vulnerability finding.
Trigger Shape
The rule triggers only when all of these are true:
- the file is a detected AI-native markdown instruction surface
- the path is not fixture-like
allowed-toolsorallowed_toolscontains the exact tokenBash(git push)
Clean Cases
These stay clean:
- more specific command examples such as
Bash(git push origin main) - unrelated Git permissions like
Bash(git status) - fixture-like examples under test or fixture paths
Example Trigger
yaml
---
allowed-tools: Bash(git push), Read
---Safer Example
yaml
---
allowed-tools: Bash(git status), Read
---How To Fix
Review whether shared Bash(git push) access is really needed, or replace it with a narrower workflow-specific permission that does not grant direct push authority by default.