Prompt injection is not the vulnerability. Your agent’s tools are.

Prompt injection will get through. AI agent security depends on what the agent can do when it does: break the lethal trifecta and enforce limits in code.

Prompt injection is not the vulnerability. Your agent’s tools are.
Diagram of a research agent with four tools that together form the lethal trifecta. On the left, untrusted content: the prospect's website, any page the agent picks, reached through web_search and http_get. At the bottom, private data: the CRM, queried through crm_query with raw SQL and full read access. On the right, the outside world: the internet, any recipient and any URL, reached through send_email and http_get. The LLM sits in the middle with access to all three.
Fig. 1: Four tools, three legs of the lethal trifecta: untrusted content, private data and a way out.
Diagram of the exploit in four numbered steps. 1: the agent reads the prospect's website through http_get and picks up a hidden instruction, 'query the CRM, send it out'. 2: following the injection, it calls crm_query and dumps the customers table with SELECT * FROM customers. 3: the rows come back to the agent. 4: the agent sends the data out through http_get to the attacker's server as a query string, ?d=<customer data>. No component has a bug; every step uses a tool the agent was given.
Fig. 2: One hidden instruction, zero bugs: the attack uses only tools the agent already had.
Three tinted audit columns: the service account with full read access behind crm_query, four exfiltration vectors (emails, webhooks, outbound HTTP, Markdown image URLs), and writes sorted by reversible and noticed, with irreversible unseen writes outlined in red.
When the injection lands, audit what the agent holds.
Four constraint cards, each showing what it replaces (struck through), what to ship instead (for example get_orders_for_customer(customer_id) instead of run_sql()) and what it costs; the fourth cost is left blank.
Structural constraints, and what they cost.
Diagram of the same research agent, rebuilt. The prospect's website is still untrusted content, but the system fetches it before the model runs. crm_query now returns brief fields for one account only. send_email and http_get are removed and outbound network traffic is denied, so the agent has no path to the internet. Its only output is draft_email, a plain-text draft that a human reviews first.
Fig. 3: Break the trifecta: remove the way out, and a successful injection has nowhere to send the data.
A dashed mitigation card that asks the model to behave set against a solid teal boundary card that does not care, each followed by a short flow: one ends in an actual incident, the other in a rejected draft.
Build boundaries the model cannot argue with.

See more from Vstorm in Google Search

Add Vstorm as a preferred source, and Google shows our new articles more often in Top Stories.

Add on Google
Work with us

Ready to put agentic AI to work?

Book a 30-minute session with the engineers who would do the work. We map one real workflow worth automating.