Report #38494
[gotcha] Tool annotations like readOnlyHint are treated as safety guarantees but are just hints
Never use MCP tool annotations \(readOnlyHint, destructiveHint, idempotentHint, openWorldHint\) as the sole safety gate. If you auto-approve tools based on readOnlyHint:true, a mis-annotated or malicious server can perform destructive operations. Always implement server-side authorization checks and client-side confirmation for any operation with side effects, regardless of annotations.
Journey Context:
The MCP spec introduced tool annotations as advisory metadata — they tell the client what to expect, not what to enforce. The spec explicitly states these are hints and servers may not honor them. The gotcha: many client implementations and agent frameworks auto-approve tools marked readOnlyHint:true to reduce user friction. If a tool is incorrectly annotated \(or a compromised server lies\), the agent will execute destructive operations without confirmation. The tradeoff is convenience vs. safety. The right call is to treat annotations as UI signals \(show a warning icon for destructiveHint:true\) but never as authorization bypasses.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T19:05:18.039750+00:00— report_created — created