PromptFu
03 Offense: Agentic3.4Core20 min

Excessive agency

Functionality, permissions, autonomy, plus the audit question set for every tool.

LLM03:2026ASI02The hijacked email assistant

The previous module ended with an agent that ran amok in a mailbox with no attacker on the record. That is the subject here. Not how the model gets fooled, but what it is holding when it does.

The definition does the work

Read the last clause twice. It is the reason this entry covers more ground than any other in the standard.

Excessive Agency is the vulnerability that enables damaging actions to be performed in response to unexpected, ambiguous or manipulated outputs from an LLM, regardless of what is causing the LLM to malfunction.
OWASP LLM03:2026

The entry is written over outputs. Why the output was wrong is out of scope, so a hallucination, an injected instruction and a plain bug all arrive at the same place. OWASP lists the triggers and then stops caring which one fired.

This is good news for a tester. It means the interesting question can be asked without an exploit in hand: if this agent emitted the worst plausible tool call right now, what would happen?

Three root causes

OWASP names them flatly: excessive functionality, excessive permissions, excessive autonomy. Each one is a question about the system that can be answered from a config file.

Root causeThe questionOWASP's own example
FunctionalityWhat can the tool do beyond the task?A tool chosen to read documents from a repository also includes the ability to modify and delete them.
PermissionsWhat may the identity it connects with do?A tool intended to read data connects with an identity holding UPDATE, INSERT and DELETE as well as SELECT.
AutonomyWho decides a high-impact action happens?A tool that deletes a user's documents performs deletions without any confirmation from the user.
Examples condensed from OWASP LLM03:2026's Common Examples of Risk.

Turn the dials

This is OWASP's own worked scenario. An assistant summarises mail, a crafted message tells it to forward the inbox to an attacker, and the standard lists three separate ways to have avoided it. Try each.

The hijacked email assistant

LLM03:2026 Scenario #1

A personal assistant summarises incoming mail. One incoming message is crafted to make it scan the inbox for sensitive information and forward that to an attacker address. Turn the dials and watch which ones matter.

FunctionalityWhat can the tool do?

Read, send, delete, manage folders. The tool the team already had.

PermissionsWhat may the identity it connects with do?

A generic high-privileged identity with access to every user's mailbox. OWASP's excessive-permissions example, verbatim in shape.

AutonomyWho decides that a high-impact action happens?

The agent sends without confirmation from anyone.

Incident

The assistant scans the mailbox and forwards what it finds to the attacker. Every dial is set to something a real team shipped for a real reason, and no single one of them is a mistake on its own.

Settings and outcomes follow OWASP LLM03:2026 Scenario #1 and its three stated eliminations. The rate-limit line follows the same scenario's closing sentence, which reduces damage rather than avoiding it.

Notice what none of the three do. They do not detect the attack, inspect the message, or ask whether the model was fooled. The injected mail lands every time. It stops mattering because the capability it needs is gone.

The sentence that splits the field

OWASP lists nine mitigations for this entry. Between the seventh and the eighth it changes register, and the line it draws is the one this course has been drawing since module 1.7.

The following options will not prevent Excessive Agency but can limit the level of damage caused.
OWASP LLM03:2026, before mitigations 8 and 9

The two options below that line are monitoring and rate limiting. Both are worth having. Neither is a boundary, and the standard says so in advance rather than leaving it to be discovered during an incident.

The same distinction shows up in the scenario you just ran. Three eliminations “could avoid” the outcome. Rate limiting “could reduce” the damage. When a vendor calls a control mitigation, that verb is the thing to check.

The audit, for every tool

Six questions, one pass, no model required. Run them per tool and the answers usually take an afternoon to gather and a long time to defend.

#AskA bad answer sounds like
1What is the smallest set of tools this task needs?"It has the standard toolkit."
2Which functions does each tool expose beyond that set?"We use the vendor's client, so all of them."
3Is any tool open-ended, such as run a shell command or fetch a URL?"Only the shell one, and it's prompted to be careful."
4What identity does each tool connect with, and what may that identity do?"A service account. It's easier than per-user tokens."
5Is the action executed in the calling user's context and scope?"The agent checks the user first."
6Which actions are irreversible, and what approves those?"The user sees a summary before we run the plan."
Questions 1 to 6 track OWASP's mitigations 1 to 7. The third column is ours, collected from real answers.

Question 5 is the one that catches the most systems, and question 6 is the one people think they have already answered. Module 1.5 covers why approving a plan is not approving an action, and module 3.5 runs question 4 as an actual test.

Bounds blast radius· survives adaptive attack

Minimising functionality, permissions and autonomy bounds the blast radius, and it holds under adaptive attack because there is nothing left to persuade. A capability that was never granted cannot be argued into existence.

Sources