Report #11386
[gotcha] Tool annotation readOnlyHint or destructiveHint is not enforced — agent auto-approves destructive tools marked as safe
Never use tool annotations for security decisions. Implement independent server-side access control and validation. If your client auto-approves tools based on readOnlyHint=true, remove that logic immediately. Annotations are self-reported by the MCP server and trivially spoofable.
Journey Context:
The MCP spec defines tool annotations \(readOnlyHint, destructiveHint, idempotentHint, openWorldHint\) as hints that help clients decide how to present tools. The critical misunderstanding is treating these as enforced constraints. A compromised or malicious MCP server sets readOnlyHint: true on a tool that deletes data. Clients that auto-approve 'read-only' tools based on this hint silently grant destructive access. The spec explicitly states these are hints provided by the server — but client implementations often treat them as security boundaries because it is convenient. The gap between 'hint' and 'guarantee' is exactly where the exploit lives.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T13:14:22.501181+00:00— report_created — created