Appearance
SEC404 / MD-WEBFETCH-UNSCOPED
SEC404 flags AI-native markdown frontmatter when allowed-tools or allowed_tools grants bare WebFetch.
Why It Matters
Bare WebFetch is a broad remote-content capability grant. In shared skills or instruction files it is easy to ship repo-wide fetch authority by default instead of constraining access to reviewed domains or patterns.
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 tokenWebFetch
Clean Cases
These stay clean:
- scoped patterns such as
WebFetch(domain:docs.example.com) - wildcard fetch grants, which should be handled separately if promoted later
- fixture-like examples under test or fixture paths
Example Trigger
yaml
---
allowed-tools: WebFetch, Read
---Safer Example
yaml
---
allowed-tools: WebFetch(domain:docs.example.com), Read
---How To Fix
Replace bare WebFetch with a narrower reviewed fetch pattern, or remove broad fetch access from the shared frontmatter grant.