Appearance
SEC476 / CLAUDE-WRITE-UNSAFE-PATH
SEC476 flags shared Claude settings when permissions.allow grants Write(...) over an absolute path, home-relative path, Windows drive path, or parent-traversing path.
Why It Matters
Shared write permissions outside the repository widen the mutation boundary for every user of the committed Claude policy. Absolute or parent-traversing scopes make it easier for a workflow to modify files that are not part of the reviewed project surface.
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 aWrite(...)token whose scope is absolute, home-relative, drive-qualified, or parent-traversing
Clean Cases
These stay clean:
- repository-scoped paths such as
Write(./artifacts/**) - permissions that do not grant
Write(...) - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Write(../shared/**)", "Read(./docs/**)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Write(./artifacts/**)", "Read(./docs/**)"]
}
}How To Fix
Replace broad Write(...) path grants with repository-scoped allowlists, or remove shared access to absolute, home-relative, or parent-traversing paths from the committed Claude settings file.