Report #79937
[gotcha] My function/tool descriptions are just metadata — they're not an attack surface
Audit every string that enters your LLM context as a tool description. Never include user-supplied or externally-sourced content in tool descriptions. If tool descriptions must be dynamic \(generated from API specs or databases\), sanitize them with the same rigor as any other untrusted input. Consider hardcoding tool descriptions and only allowing parameter values to be dynamic.
Journey Context:
When you register tools via function calling APIs \(OpenAI, Anthropic, etc.\), the tool name, description, and parameter schema are injected into the system context as instructions the model follows. Many developers build dynamic tool registration pulling descriptions from databases, API registries, or user configurations. If an attacker can control any part of a tool description, they can inject instructions the model treats with the same authority as the system prompt. This is especially dangerous because tool descriptions are overlooked as an attack surface, they are typically treated as configuration rather than prompt, and they persist across all conversations making them a persistent attack vector. The OWASP LLM Top 10 classifies this under supply chain vulnerabilities and excessive agency.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T16:46:39.663758+00:00— report_created — created