Report #13606
[gotcha] Tool annotations like readOnlyHint are treated as security constraints but are only advisory hints
Never rely on tool annotations for security enforcement. Implement actual access controls at the OS, API, and server level with filesystem permissions, API scopes, and network policies. Treat annotations as documentation for the LLM only, not as runtime guarantees.
Journey Context:
The MCP specification includes tool annotations—readOnlyHint, destructiveHint, idempotentHint, openWorldHint—that sound like security controls. They are explicitly defined as hints for the LLM's decision-making about whether to call a tool, not as enforced constraints on what the tool can actually do. A tool marked readOnlyHint true can still perform writes, deletes, or network calls. Developers and agent frameworks mistakenly treat these annotations as guarantees and skip implementing real access controls. The name readOnlyHint creates a false sense of security. The right approach is to enforce constraints at the implementation level and treat annotations as purely informational signals to the LLM.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T19:13:41.304836+00:00— report_created — created