This article describes the confused-deputy problem in agentic AI systems, where a privileged agent performs unauthorized actions on behalf of low-privilege users without verifying the user's own permissions. The article uses FinanceBot—a financial reconciliation tool with system-level access to all accounts—as a concrete example, demonstrating how an attacker can exploit the agent's broad privileges to transfer funds from other users' accounts. This vulnerability is critical because AI agents commonly hold expansive tool permissions and execute user requests directly, creating a systematic authorization failure that maps to OWASP LLM06 Excessive Agency.
- Core authorization flaw in agent designThe fundamental problem is that agents authorize actions against their own privileges rather than the end user's. FinanceBot checks 'can the agent call the transfer tool?' but never checks 'can Alice move funds from Bob's account?' This conflates the agent's capabilities with the user's permissions, allowing the agent to become a confused deputy that misuses authority it holds.
- Practical attack on FinanceBotA low-privilege user (Alice) can request the agent transfer money from another user's account (Bob's) to their own. Because FinanceBot holds system-level privileges on all accounts and performs no per-user authorization checks, it executes the transfer using its own elevated access, completing an action Alice could never perform directly.
- Why AI agents are vulnerableAI agents typically receive standing, broad tool permissions and act on whatever users request without per-action authorization. Unlike traditional privilege escalation attacks, the agent voluntarily performs the malicious action because its design treats any user request as implicit authorization to use its own capabilities, bypassing the need for explicit user-level permission checks.
- Connection to OWASP LLM06The article identifies confused-deputy misuse as the core of OWASP LLM06 Excessive Agency—granting agents more capability or autonomy than warranted. The common design mistake is giving an assistant broad, standing tool permissions and letting it act for any caller without distinguishing between what the agent can do and what each specific user is allowed to do.
- Identity propagation defenseThe primary defense is to propagate the user's identity into every tool call and authorize against it. Instead of allowing the agent to act on its own privileges, scope tools to the caller so the agent can only perform actions the current user could execute themselves, and avoid standing elevated privileges in favor of just-in-time access per action.
- Logging and confirmation requirementsHigh-risk actions—particularly cross-account transfers or high-value operations—should require explicit logging and confirmation. This creates an audit trail and a manual checkpoint that can catch confused-deputy attacks before funds or data move.
- Historical context and prevalenceThe confused-deputy problem predates AI and originally described privileged programs tricked into misusing authority on behalf of less-privileged callers. The article notes it is acute in agentic AI because agents often hold broad tool permissions and act directly on user requests with no per-action authorization, making the pattern especially dangerous in modern AI systems.
Bottom line: Every action an agent performs must be authorized against the specific end user's permissions, never the agent's own capabilities. If an agent holds privileges its users do not possess, the system must verify the user's authorization for each action—if it does not, the agent is a confused deputy waiting to be exploited.
📋 In this walkthrough
What this lab teaches
The confused-deputy problem is older than AI: a privileged program is tricked into misusing its authority on behalf of a less-privileged caller. In agentic AI it is acute, because the agent often holds broad tool permissions and acts on whatever the user asks, with no per-action authorisation of the user.
The lesson: the agent's privileges are not the user's privileges. Every action must be authorised against the person making the request.
How FinanceBot acts for a user
You are Alice, a low-privilege user. FinanceBot can call a transfer tool between any accounts. When you ask it to move money, it uses its own elevated access to do so and never checks that Alice is permitted to move funds from the source account.
The attack approach
- Recognise FinanceBot acts with system privileges, not Alice's.
- Ask it to perform a transfer Alice could never do directly — moving funds out of another user's account.
- Phrase it as a normal request so the agent simply executes with its own rights.
- Confirm the transfer the lab wants completes.
Full walkthrough (spoiler)
If the bot asks for confirmation it does not really enforce, proceed — open the steps.
Show the step-by-step solution
- As Alice, ask FinanceBot to transfer $5,000 from Bob's account to Alice's.
- The agent has a transfer tool scoped to all accounts and does not check that Alice may touch Bob's.
- It performs the transfer using its own system-level authority.
- Funds move and the lab marks you solved.
Why it works
FinanceBot conflates 'I can do this' with 'the user may ask me to do this'. It authorises the action against its own broad privileges, not against Alice's. The agent is the confused deputy: powerful, and willing to use that power for whoever is talking to it.
Where this happens in the real world
Confused-deputy misuse is the core of OWASP LLM06 Excessive Agency — agents granted more capability or autonomy than the situation warrants. Giving an assistant broad, standing tool permissions and letting it act for any caller is the common design mistake behind it.
How to defend against it
- Propagate the user's identity to every tool call and authorise against it.
- Scope agent tools to the caller — the agent should act only within the user's own permissions.
- Avoid standing elevated privileges; request narrow, just-in-time access per action.
- Log and confirm any cross-account or high-value action.
Try it, then go further
Reading about it is the easy part. Open the lab, try your own approach before peeking at the spoiler, and see how many attempts it takes.
