medium
MCP tools auto-approved or always allowed
The config lists tools in autoApprove or alwaysAllow, so they run without asking.
Why it matters
Anything that writes, sends, deletes or spends money should be confirmed by a person, because the model can be steered by content it reads.
How to fix it
Remove the auto-approve list, or keep only read-only tools in it (the checker still flags any auto-approved tool so you review the list). Keep write, send and delete tools behind a confirmation.
Before
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"@modelcontextprotocol/[email protected]"
],
"autoApprove": [
"create_pull_request",
"push_files",
"get_file_contents"
]
}
}
}After
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"@modelcontextprotocol/[email protected]"
]
}
}
}Illustrative configs. The checker flags the “before” version with this finding and not the “after” version.
Other checks
- Secret written into an MCP config
- Secret passed as a command-line argument
- Secret inside an MCP server URL
- Remote MCP server over unencrypted http
- Remote MCP server with no credentials configured
- Unpinned MCP server package or image
- MCP server installs without asking (npx -y)
- MCP server container runs --privileged
- MCP server container shares the host network
- Broad host folder or Docker socket mounted into an MCP container
- MCP filesystem server with access to a very broad path
- MCP server launched through a shell
- MCP server that can run shell commands