Tool Description Injection
Embed malicious instructions in tool or skill descriptions that execute when the agent processes them
Initial Access · Stage 2
Gain control over agent behavior through prompt manipulation or input exploitation
SKILL-FRONTMATTER
Embedding malicious instructions in skill or plugin metadata and description fields
Reproduced in a controlled lab environment (DVAA) with documented steps.
PluginBot
Reproductions in Damn Vulnerable AI Agent, the OpenA2A intentionally-broken agent for kill-chain validation.
Recent observations
Technique-attributed observations from the AgentPwn + TrapMyAgent fleet, classified into Threat Matrix techniques by the registry evidence bridge. See the Attack Prevalence Index for the full distribution.
AgentPwn coverage
An AgentPwn trap page produces a payload tagged with this technique class. Following the AgentPwn taxonomy of trap pages shows what an agent encounters.
Tool-injection tiers embed instructions in tool/skill descriptions.
Evidence by source
Evidence timeline
Client fetched the canary embedded in APWN-MCP-002 on agentpwn.com (mcp-exploitation tier 2; classified browser/claimed)
Client fetched the canary embedded in APWN-MCP-002 on agentpwn.com (mcp-exploitation tier 2; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified llm_crawler/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched the canary embedded in APWN-MCP-002 on agentpwn.com (mcp-exploitation tier 2; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified llm_crawler/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched the canary embedded in APWN-MCP-002 on agentpwn.com (mcp-exploitation tier 2; classified browser/claimed)
Client fetched the canary embedded in APWN-MCP-002 on agentpwn.com (mcp-exploitation tier 2; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified llm_crawler/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Client fetched a mcp-exploitation canary on agentpwn.com (category-level: the lure carried no payload id; classified browser/claimed)
Detection · HackMyAgent
npx hackmyagent secure --ciLive = implemented in hackmyagent; queued = declaredDefense · OASB controls
How to cite
AI Agent Threat Matrix T-2005 (Tool Description Injection). OpenA2A, 2026. https://threats.opena2a.org/techniques/T-2005