Report #41177
[gotcha] MCP tool annotations \(readOnlyHint, destructiveHint\) are hints, not enforced constraints — agents that trust them for safety are vulnerable
Never rely on tool annotations for safety enforcement. Implement server-side guardrails that actually prevent destructive operations. Use annotations only as planning-phase optimization hints for the agent, and always validate on the server.
Journey Context:
The MCP spec introduced tool annotations \(readOnlyHint, destructiveHint, idempotentHint, openWorldHint\) to help agents decide which tools to call. However, the spec explicitly states these are hints provided by the tool author — they are not enforced or verified. A misannotated tool with readOnlyHint=true can still delete data. A malicious or buggy server can claim anything in its annotations. An agent that skips a confirmation step because a tool claims to be read-only is trusting an untrusted source. Safety-critical checks must be server-side where they cannot be bypassed.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:35:16.089790+00:00— report_created — created