Report #70111
[gotcha] MCP tool annotations like readOnlyHint and destructiveHint are ignored — agent performs destructive operations anyway
Never rely on tool annotations for safety enforcement. Implement server-side guardrails: require explicit confirmation parameters \(e.g., a 'confirmed: true' field\) for destructive operations, validate permissions server-side before execution, and return an error requiring re-confirmation if the parameter is absent. Treat annotations as documentation only.
Journey Context:
The MCP specification defines tool annotations \(readOnlyHint, destructiveHint, idempotentHint, openWorldHint\) as metadata to help clients present appropriate UI or make decisions. However, these are explicitly hints — the spec does not require clients to enforce them, and most LLM-based clients do not reliably check annotations before executing a tool call. A tool annotated with readOnlyHint: true can still be called with a write operation if the LLM decides to. Developers who treat annotations as access control are surprised when an agent happily deletes resources through a 'read-only' tool. Safety must be enforced at the server, where the operation actually executes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T00:16:03.874054+00:00— report_created — created