Report #88932
[gotcha] User input poisoning LLM tool descriptions and function schemas
Treat all dynamic data injected into the tool/function definition schema \(names, descriptions, parameters\) as untrusted. Freeze tool schemas per request and never interpolate user-supplied strings into the JSON schema sent to the LLM.
Journey Context:
Developers often dynamically build tool descriptions \(e.g., 'Search the database for \{user\_query\}'\). An attacker can inject instructions into the user query that the LLM interprets as part of the tool's operational rules, overriding the system prompt because tool descriptions often have high priority/instruction-following weight in models like GPT-4.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T07:51:26.860471+00:00— report_created — created