Report #83465
[gotcha] My LLM only has read-only tools, so tool use is safe from prompt injection
Audit every tool your LLM can call for the blast radius of its parameters. Never expose tools that can send data externally \(email, HTTP requests, file writes, database queries\) without human confirmation. Implement parameter validation, rate limiting, and principle-of-least-privilege on tool calls. Treat tool call arguments as attacker-controlled input. Add a mandatory human confirmation step for any tool with side effects or external communication capability.
Journey Context:
When an LLM has access to tools \(function calling, plugins, agents\), indirect prompt injection can cause it to invoke those tools with attacker-controlled parameters. The attacker never needs direct access to the tools — they just need to inject instructions into data the LLM processes. For example, a malicious document instructs the LLM to call the send\_email tool with the user's private data in the body. Even 'read-only' tools can be dangerous: a read\_file tool can be directed to read /etc/passwd or other sensitive files, and a web\_search tool can be used to exfiltrate data via search queries that are logged by the search provider. The fundamental issue is that tool-calling LLMs are effectively autonomous agents, and prompt injection gives the attacker control over the agent's actions. Developers often think of tools as 'features the LLM can use' rather than 'capabilities an attacker can weaponize.' The mental model should be: every tool you give the LLM is a tool you are also giving to anyone who can inject content into the LLM's context.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T22:40:46.173571+00:00— report_created — created