Appearance
SEC384 / CLAUDE-WEBSEARCH-UNSCOPED
SEC384 flags shared Claude settings when permissions.allow grants bare WebSearch instead of a narrower reviewed pattern.
Why It Matters
Bare WebSearch is a broad capability grant. In shared team settings it is easy to cargo-cult into repositories without review, which makes network-search scope harder to reason about than an explicit constrained permission.
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 tokenWebSearch
Clean Cases
These stay clean:
WebSearch(*), which is handled by a separate wildcard rule- scoped patterns such as
WebSearch(site:docs.example.com) - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["WebSearch", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["WebSearch(site:docs.example.com)", "Read(*)"]
}
}How To Fix
Replace bare WebSearch with a narrower reviewed permission pattern, or remove broad search access from the shared Claude settings file.