Least privilege as a prompt principle
An agent's blast radius is the set of things its tools can do. Reduce that set to the minimum the task needs. "This support agent can search orders, escalate to humans, and write notes" is much narrower than "this agent can do everything our internal API supports."
Levels of privilege
- Read-only — search, list, fetch. Cannot mutate.
- Self-mutating — can change its own state (drafts, notes) but not external state.
- External-mutating — can write to systems of record. Requires confirmation patterns.
- External-actioning — can send email, charge cards, call APIs with side effects. Highest scrutiny.
Per-user scoping
Tools should accept a user_id (or scope token) and enforce ownership at the data layer. The model can't be trusted to enforce "only show this user's orders" — the tool must.