Appearance
SEC493 / CLAUDE-BUNX-PERMISSION
SEC493 flags shared Claude settings when permissions.allow grants Bash(bunx ...).
Why It Matters
bunx resolves and executes packages through a mutable runner path. Shared Claude settings should not quietly make that a default team capability.
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 a string that starts withBash(bunx
Clean Cases
These stay clean:
- non-
bunxcommands such asBash(bun run lint) - settings without
Bash(bunx ...) - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Bash(bunx prettier:*)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Bash(bun run lint)", "Read(*)"]
}
}How To Fix
Replace shared Bash(bunx ...) permissions with a pinned wrapper or a narrower reviewed command permission that does not grant mutable package execution by default.