Report #11783
[gotcha] MCP tool annotations \(readOnlyHint, destructiveHint\) are treated as enforced constraints but are only advisory hints
Never rely on annotations for security or safety enforcement; implement actual permission checks and guardrails in the tool handler; use annotations only for UI/UX hints and model guidance, not as access control
Journey Context:
The MCP spec explicitly states that tool annotations like readOnlyHint and destructiveHint are hints for the client, not enforced by the protocol. A tool marked readOnlyHint=true can still mutate state if its implementation does so. Agents that trust these hints for safety decisions \(e.g., 'this tool is safe to call without human approval because it is read-only'\) are vulnerable. The right approach: use annotations to inform the model's decision-making and UI display, but enforce actual constraints in the tool implementation and in a separate authorization layer.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T14:17:13.668618+00:00— report_created — created