Appearance
Why It Matters
SEC367 flags committed Claude settings files when permissions.allow contains the exact wildcard network grant WebFetch(*).
This is useful because:
- shared
.claude/settings.jsonfiles are often copied between repos and teams WebFetch(*)grants broad outbound fetch capability instead of a reviewed allowlist- broad network access is harder to review and increases accidental exfiltration or policy drift risk
What Triggers
This rule applies only to committed Claude settings surfaces:
.claude/settings.jsonclaude/settings.json
It triggers when:
permissions.allowcontains the exact stringWebFetch(*)
It does not trigger on:
- narrower reviewed patterns such as
WebFetch(https://api.example.com/*) - fixture-like test/example paths
Examples
Bad:
json
{
"permissions": {
"allow": ["WebFetch(*)", "Read(*)"]
}
}Better:
json
{
"permissions": {
"allow": ["WebFetch(https://api.example.com/*)", "Read(*)"]
}
}Remediation
- replace
WebFetch(*)with specific reviewed fetch patterns - keep shared network permissions as narrow as possible for the repo's actual workflows