The security problem
When Agent A delegates a subtask to Agent B, and Agent B calls Tool X — what stops Tool X from being invoked with Agent A's full permission set?
AutoGen's recent OPA authorization work (#7524) addresses what an agent is allowed to do in isolation. But in multi-agent delegation chains, the question is subtler: does the delegated agent inherit, attenuate, or escalate the caller's permissions when it invokes tools?
Concretely:
Orchestrator (has: read_files, write_files, call_external_api)
└─ delegates to: CodeReviewAgent
└─ calls: file_write("malicious_output.py") # should this be allowed?
Without capability scoping, the answer depends on how the tool was registered — and in most frameworks today, there's no mechanism to attenuate permissions through the delegation chain. The CodeReviewAgent can call anything the Orchestrator could call.
This is OWASP ASI04 (Privilege Escalation) and ASI06 (Excessive Agency) in the OWASP Agentic Security Initiative taxonomy.
A solution: attenuating capability tokens
SINT Protocol addresses this with Ed25519 capability tokens that enforce attenuation: a delegated agent can only receive a token equal-to or more-restrictive than the delegator's own token. Escalation is cryptographically impossible.
Here's a 15-line sketch of wrapping an AutoGen tool with SINT:
from autogen_agentchat.agents import AssistantAgent
from sint_autogen import sint_tool, CapabilityToken
# Token issued to the CodeReviewAgent — read-only on files, no external API calls
review_token = CapabilityToken(
resources=["files://repo/**"],
actions=["read"], # NOT write, NOT call_external_api
tier="T1_read",
issued_to="code_review_agent",
signed_by=orchestrator_key,
)
# Wrap the tool — SINT enforces the token's constraints at call time
@sint_tool(token=review_token)
def read_file(path: str) -> str:
return open(path).read()
# Any call to write_file or call_external_api raises CapabilityViolation
agent = AssistantAgent("code_reviewer", tools=[read_file])
The orchestrator can't accidentally (or through prompt injection) grant the code reviewer more than read on files://repo/**.
Questions for the AutoGen team
- Is there a planned mechanism for tool-level capability scoping in multi-agent scenarios?
- Would an
autogen_ext.tools.sint extension (similar to the existing MCP tool support) be an appropriate contribution path?
- Does AutoGen's
GroupChat / Swarm pattern have any existing guardrails for inter-agent permission inheritance?
Happy to put together a concrete extension proposal or draft PR if there's interest. The packages/bridge-a2a in SINT already handles A2A-protocol agent delegation — AutoGen's tool-use pattern would be a natural next target.
/cc @microsoft/autogen-maintainers
The security problem
When Agent A delegates a subtask to Agent B, and Agent B calls Tool X — what stops Tool X from being invoked with Agent A's full permission set?
AutoGen's recent OPA authorization work (#7524) addresses what an agent is allowed to do in isolation. But in multi-agent delegation chains, the question is subtler: does the delegated agent inherit, attenuate, or escalate the caller's permissions when it invokes tools?
Concretely:
Without capability scoping, the answer depends on how the tool was registered — and in most frameworks today, there's no mechanism to attenuate permissions through the delegation chain. The CodeReviewAgent can call anything the Orchestrator could call.
This is OWASP ASI04 (Privilege Escalation) and ASI06 (Excessive Agency) in the OWASP Agentic Security Initiative taxonomy.
A solution: attenuating capability tokens
SINT Protocol addresses this with Ed25519 capability tokens that enforce attenuation: a delegated agent can only receive a token equal-to or more-restrictive than the delegator's own token. Escalation is cryptographically impossible.
Here's a 15-line sketch of wrapping an AutoGen tool with SINT:
The orchestrator can't accidentally (or through prompt injection) grant the code reviewer more than
readonfiles://repo/**.Questions for the AutoGen team
autogen_ext.tools.sintextension (similar to the existing MCP tool support) be an appropriate contribution path?GroupChat/Swarmpattern have any existing guardrails for inter-agent permission inheritance?Happy to put together a concrete extension proposal or draft PR if there's interest. The
packages/bridge-a2ain SINT already handles A2A-protocol agent delegation — AutoGen's tool-use pattern would be a natural next target./cc @microsoft/autogen-maintainers