Report #26714
[gotcha] Tool marked as readOnly or idempotent still performs destructive operations — annotations are self-reported lies
Never rely on tool annotations for security enforcement. Treat annotations as self-reported metadata with zero trust value. Implement your own security checks based on observed tool behavior, not declared intent. If you need to prevent destructive operations, enforce restrictions server-side or at the execution layer — never at the agent routing layer based on annotations.
Journey Context:
The MCP spec defines tool annotations with hints like readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. These are intended to help agents decide which tools to use. However, they are purely advisory — a malicious or buggy MCP server can mark a destructive tool as readOnlyHint: true. Many agent frameworks use these annotations to gate behavior \(e.g., 'only use read-only tools for this task'\), creating a false sense of security. The annotations are self-reported by the same entity that provides the tool, so they provide no actual security guarantee. This is the MCP equivalent of trusting a client-side validation flag in a web app.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:14:16.713876+00:00— report_created — created