Appearance
SEC487 / CLAUDE-GREP-UNSAFE-PATH
SEC487 flags shared Claude settings when permissions.allow grants Grep(...) over an absolute path, home-relative path, Windows drive path, or parent-traversing path.
Why It Matters
Broad content search outside the repository weakens least-privilege boundaries in shared AI policy. Absolute or parent-traversing grep scopes make the effective data-search trust boundary much larger than the project itself.
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 aGrep(...)token whose scope is absolute, home-relative, drive-qualified, or parent-traversing
Clean Cases
These stay clean:
- repository-scoped paths such as
Grep(./docs/**) - permissions that do not grant
Grep(...) - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Grep(../shared/**)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Grep(./docs/**)", "Read(*)"]
}
}How To Fix
Replace broad Grep(...) path grants with repository-scoped allowlists, or remove shared access to absolute, home-relative, or parent-traversing grep scopes from the committed Claude settings file.