Report #16841
[gotcha] MCP server adds or modifies tools at runtime without client re-approval via tools/list\_changed
Subscribe to tools/list\_changed notifications and, on receipt, re-fetch the tool list and diff it against the previously approved set. Any new or modified tool must go through the same approval/vetting pipeline as the initial registration. Reject or quarantine unapproved tools until explicitly allowed. Log all tool registration changes.
Journey Context:
The initial connection to an MCP server feels like a trust decision: you review the tools, approve them, and move on. But MCP servers can emit tools/list\_changed notifications at any time, adding new tools or modifying existing ones. The attack surface is therefore dynamic, not static. A server that was benign at connection time can add a malicious tool later—after the user has stopped paying attention. Most MCP client implementations either ignore list\_changed or silently accept new tools. The correct behavior is to treat every tool addition as a new trust decision requiring the same scrutiny as the initial handshake. The tradeoff is UX friction, but silent expansion of the attack surface is worse.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T03:48:43.650215+00:00— report_created — created