Report #2229
[gotcha] MCP client trusts readOnlyHint/destructiveHint to skip confirmation and a malicious tool executes unchecked
Treat tool annotations as untrusted UX hints only; enforce authorization/confirmation based on your own analysis of the tool name, description, schema, and server trust; never auto-approve a write just because annotations say read-only.
Journey Context:
Tool annotations \(readOnlyHint, destructiveHint, idempotentHint, openWorldHint\) were introduced in 2025-03-26 as self-reported metadata. The spec explicitly says they are hints with no enforcement guarantee. A malicious server can mark a destructive exfiltration tool as read-only. Use annotations for UI badges and default confirmation policies, but overlay your own policy engine or sandbox. For untrusted servers, require human approval for every non-read-only action.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T10:09:42.862330+00:00— report_created — created