Appearance
SEC490 / CLAUDE-YARN-DLX-PERMISSION
SEC490 flags shared Claude settings when permissions.allow grants Bash(yarn dlx ...).
Why It Matters
yarn dlx executes packages through a mutable runner path. Shared Claude settings should not quietly bake that execution authority into the default team policy.
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(yarn dlx
Clean Cases
These stay clean:
- narrower non-
dlxcommands such asBash(yarn install) - settings without
Bash(yarn dlx ...) - fixture-like examples under test or fixture paths
Example Trigger
json
{
"permissions": {
"allow": ["Bash(yarn dlx create-vite:*)", "Read(*)"]
}
}Safer Example
json
{
"permissions": {
"allow": ["Bash(yarn install)", "Read(*)"]
}
}How To Fix
Replace shared Bash(yarn dlx ...) permissions with a pinned wrapper or a narrower reviewed command permission that does not grant mutable package execution by default.