Appearance
Why It Matters
SEC373 flags committed Claude settings files when permissions.allow contains the exact wildcard edit grant Edit(*).
This is useful because:
- shared
claude/settings.jsonor.claude/settings.jsonfiles often become team-wide policy by copy/paste Edit(*)grants broad file-edit capability instead of a reviewed allowlist- broad edit access is hard to justify in code review when a workflow only needs a small scoped set of mutable paths
What Triggers
This rule applies only to committed Claude settings surfaces:
.claude/settings.jsonclaude/settings.json
It triggers when:
permissions.allowcontains the exact stringEdit(*)
It does not trigger on:
- narrower reviewed patterns such as
Edit(./docs/**) - fixture-like test/example paths
Examples
Bad:
json
{
"permissions": {
"allow": ["Edit(*)", "Read(*)"]
}
}Better:
json
{
"permissions": {
"allow": ["Edit(./docs/**)", "Read(*)"]
}
}Remediation
- replace
Edit(*)with specific reviewed edit patterns - scope shared edit permissions to the smallest set of repo paths the workflow actually needs