Appearance
SEC546 / MCP-AUTOAPPROVE-BASH-WILDCARD
SEC546 flags MCP configuration when autoApprove includes the exact tool token Bash(*).
Why It Matters
autoApprove removes the normal review boundary for named MCP tools. Bash(*) is a blanket shell execution grant, so auto-approving it defeats most least-privilege expectations for MCP clients.
Trigger Shape
- the file is a detected MCP configuration surface
autoApproveis a string array- the array contains the exact item
Bash(*)
Clean Cases
- narrower auto-approved tools such as
Read(*) - reviewed specific shell grants instead of blanket
Bash(*) - MCP configs without
autoApprove
Example Trigger
json
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["server.js"],
"autoApprove": ["Bash(*)"]
}
}
}Safer Example
json
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["server.js"],
"autoApprove": ["Read(*)"]
}
}
}How To Fix
Remove blanket shell auto-approval and explicitly list only the narrowly reviewed MCP tools that truly need auto-approval.