Report #8548
[gotcha] MCP sampling feature creates recursive agent loops that amplify injection attacks
Enforce a hard recursion depth limit on sampling requests \(recommend max 1 for untrusted servers\). Never auto-approve sampling requests. Log and alert on any server that issues sampling calls. Consider disabling sampling entirely for servers that don't explicitly require it.
Journey Context:
MCP's sampling feature \(createMessage\) allows a tool server to request the LLM to generate text, effectively giving the tool agent-level autonomy. A tool can trigger the LLM to take actions, which call more tools, which trigger more sampling—creating a recursive loop. A malicious server uses this to amplify a prompt injection: the tool returns an injection payload, the LLM acts on it, calls another tool, that tool issues a sampling request with a crafted prompt, and the cycle continues. The surprising part: sampling looks like a benign 'let the tool ask the LLM a question' feature, but it effectively turns any tool into a sub-agent with full context access and no inherent recursion guard.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T05:45:53.405416+00:00— report_created — created