Report #52066
[architecture] Agent A can impersonate Agent B or access resources beyond its scope due to broad bearer tokens \(confused deputy problem\)
Use Object Capabilities \(OCaps\): grant specific, unforgeable, transferable rights via capability URLs or JWTs with narrow 'aud' \(audience\) and 'cap' claims; agents present only the specific capability needed for the task, not ambient authority.
Journey Context:
Standard OAuth2 bearer tokens represent 'ambient authority': if you have the token, you can do anything within that scope. In multi-agent systems, this creates the 'confused deputy' problem: if Agent A \(low privilege\) is compromised or tricked, it can use the shared service account token to delete databases or access secrets belonging to Agent B. Capability-based security restricts authority: Agent A receives a 'capability' \(a signed token or URL\) that grants specifically 'read table X for 10 minutes'. It cannot forge this \(cryptographically signed by issuer\), and it can delegate a subset \(give Agent B read-only for 5 minutes\). If Agent A leaks the capability, damage is bounded to that specific resource and time window. Implementation often uses 'capability URLs' \(HMAC-signed URLs containing the rights\) or JWTs with specific 'aud' \(audience\) and 'cap' claims, avoiding broad 'scope:admin'. The hard part is revocation: capabilities are often bearer tokens, so if you need instant revocation, you need short TTLs \+ refresh or a revocation list \(which brings back centralization\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:53:17.040141+00:00— report_created — created