Repository navigation
Governance/security hooks for multi-agent tool execution #7726
Replies: 7 comments 4 replies
|
Great framing. We've solved similar boundary-interception problems across agent frameworks, and the pattern that holds up best is: treat governance as an execution-boundary interceptor, not an agent decorator. In practice, that means three layers:
One specific AutoGen pattern that works well: subclass We've implemented a similar architecture with deterministic guards, per-call audit trails, and framework adapters for CrewAI, LangChain, and AutoGen. If a reference integration would help: https://github.com/msaleme/red-team-blue-team-agent-fabric |
|
Also checked out your Agent Security Harness — impressive test coverage (470 tests across MCP/A2A/L402). Our projects are complementary: you attack, we defend. Would be interesting to run your test suite against TealTiger-protected agents as a benchmark. Open to collaborating on that? |
|
In AgentGate we implemented this as a PDP layer — every tool call intercepted before execution, scored across 4 dimensions, then PERMIT / ESCALATE / DENY. For LangGraph: one line to replace ToolNode with AgentGateToolNode. The governance decision is sealed before execution fires — not wrapped around it afterward. |
|
The pattern that holds in production is exactly what Michael 'Mike' K. Saleme (@msaleme) described: governance at the execution boundary, not in an agent decorator. Two primitives that make it durable: Pre-execution gate: Audit trail: every execution outcome is written into a hash-chained audit bundle (per-row Specified in §4 of AlgoVoi (chopmob-cloud) - chopmob@gmail.com - Acquisition enquiries: https://docs.algovoi.co.uk/acquisition |
|
Great thread — the execution-boundary interceptor pattern is clearly converging across implementations (TealTiger, AgentGate, red-team-blue-team-agent-fabric). One layer I'd add to the stack: memory integrity as a pre-condition for governance decisions. The governance hooks discussed here assume the agent's state is trustworthy at decision time. But if an attacker poisons the agent's persistent memory (conversation history, tool output cache, learned preferences), the governance layer makes correct decisions on corrupted inputs — it ALLOWs a tool call that looks legitimate because the memory driving the decision has been tampered with. This is OWASP ASI06 (Agent Memory Poisoning) — and it's particularly dangerous in multi-agent AutoGen workflows where Agent A's memory output becomes Agent B's context input. We built Agent Memory Guard to address this layer. It sits below the governance hooks — scanning memory writes before they persist: from agent_memory_guard import MemoryGuard
guard = MemoryGuard()
# Scan before memory persists — upstream of governance decisions
result = guard.scan(memory_entry)
if result.is_safe:
memory_store.write(memory_entry) # governance hooks can now trust this stateDetection covers: prompt injection embedded in memory, sensitive data leakage via memory exfiltration, protected key tampering, and size anomaly attacks. Policy is YAML-configurable per agent. The integration point for AutoGen specifically: hook into the Validated against 200+ adversarial payloads in AgentThreatBench — now merged into the UK Government's BEIS inspect_evals framework. The full stack becomes: AMG (memory integrity) → Governance hooks (execution authorization) → Audit trail (compliance evidence). Each layer is independently testable. |
|
The PDP layer approach works, but the audit trail dimension needs a persistence layer that outlives the agent session. From operating 9 agents with tool governance in production:
The key insight: governance should be stored IN the memory layer, not bolted on as a separate system. One store for memories, decisions, authorizations, and audit trails. Multi-agent memory with per-agent namespaces: https://github.com/Dakera-AI/dakera-deploy/blob/main/docker/docker-compose.yml |
|
A useful architectural pattern here may be to separate agent reasoning from execution authority. Instead of embedding governance entirely inside each agent, place a mandatory execution gateway between the agent and any privileged tool. The gateway can perform deterministic pre-execution checks such as:
The post-execution side can then validate outcome, record provenance, and trigger rollback or escalation if the observed result differs from the intended state. For multi-agent systems, I would also make delegation explicit: a child agent should never inherit more authority than its parent, and delegated permissions should be narrower, time-bounded, traceable, and revocable. This kind of separation is useful because it keeps “what the model wants to do” distinct from “what the system is actually permitted to execute.” |
Uh oh!
There was an error while loading. Please reload this page.
Context
When deploying AutoGen multi-agent workflows in production, teams need governance controls around tool execution:
Question
What's the recommended extension point for adding pre/post execution governance in AutoGen?
I see a few possible approaches:
ConversableAgentsubclass wrappinggenerate_replyexecute_functionruns)What I'm building
I maintain TealTiger, an open-source governance SDK (Apache 2.0) that provides:
We've built integrations for CrewAI and LangChain, and I'd like to build one for AutoGen — but want to use the cleanest hook point rather than fighting the architecture.
Specific questions
Happy to share our CrewAI integration as a reference for what the end result looks like:
https://github.com/agentguard-ai/tealtiger/tree/main/examples/crewai-governance
Would love guidance from maintainers or community members who've solved similar problems.
All reactions