Skip to main content

ADK AgentMesh — Governance for Google ADK Agents

[!IMPORTANT] Public Preview — The adk-agentmesh package on PyPI is a Microsoft-signed public preview release. APIs may change before GA.

Policy enforcement, trust verification, and audit trails for Google ADK agents — powered by the Agent Governance Toolkit.

What It Does

adk-agentmesh implements the PolicyEvaluator protocol (google/adk-python#4897) backed by the Agent Governance Toolkit's deterministic policy engine.

  • Tool-level governance — block, allow-list, or require approval for any ADK tool call
  • Rate limiting — cap tool calls per agent per session
  • Delegation scope — monotonic narrowing ensures sub-agents never exceed parent permissions
  • Structured audit — every decision is logged with verdict, rule, and timestamp

Installation

pip install adk-agentmesh

Quick Start

1. Define a governance policy

Create a YAML policy file (see examples/policies/adk-governance.yaml):

adk_governance:
  blocked_tools:
    - execute_shell
    - delete_database
  max_tool_calls: 100
  require_approval_for:
    - send_email
    - deploy_service

2. Wire into your ADK agent

from adk_agentmesh import ADKPolicyEvaluator, GovernanceCallbacks

# Load policy
evaluator = ADKPolicyEvaluator.from_config("policies/adk-governance.yaml")
callbacks = GovernanceCallbacks(evaluator)

# Attach to ADK agent
from google.adk.agents import LlmAgent

agent = LlmAgent(
    model="gemini-2.0-flash",
    name="my-governed-agent",
    before_tool_callback=callbacks.before_tool,
    after_tool_callback=callbacks.after_tool,
    before_agent_callback=callbacks.before_agent,
    after_agent_callback=callbacks.after_agent,
)

3. Or use the evaluator directly

import asyncio
from adk_agentmesh import ADKPolicyEvaluator

evaluator = ADKPolicyEvaluator(
    blocked_tools=["execute_shell"],
    max_tool_calls=50,
    require_approval_for=["send_email"],
)

decision = asyncio.run(
    evaluator.evaluate_tool_call(
        tool_name="search_web",
        tool_args={"query": "latest news"},
        agent_name="research-agent",
    )
)
print(decision.verdict)  # Verdict.ALLOW

ADK Lifecycle Mapping

ADK Hook Governance Check
before_tool_callback Policy evaluation, rate limiting, tool blocking
after_tool_callback Audit logging
before_agent_callback Delegation scope check
after_agent_callback Delegation audit

Delegation Scope Narrowing

Sub-agents automatically receive narrowed permissions:

from adk_agentmesh import DelegationScope

parent_scope = DelegationScope(
    allowed_tools=["search_web", "read_file", "write_file"],
    max_tool_calls=100,
    max_depth=3,
)

# Child gets strictly fewer permissions
child_scope = parent_scope.narrow(
    allowed_tools=["search_web", "read_file"],
    read_only=True,
)
# child_scope.max_depth == 2 (always decrements)
# child_scope.read_only == True (once set, cannot be unset)

Audit Events

Every governance decision is recorded:

evaluator = ADKPolicyEvaluator(blocked_tools=["dangerous_tool"])

# ... after agent runs ...

for entry in evaluator.get_audit_log():
    print(entry["event"], entry["timestamp"])

For structured audit handling:

from adk_agentmesh import AuditEvent, LoggingAuditHandler

handler = LoggingAuditHandler()
event = AuditEvent(
    event_type="tool_call_denied",
    agent_name="my-agent",
    tool_name="execute_shell",
    verdict="deny",
    reason="Tool is blocked by policy",
)
handler.handle(event)

Sample Policy

See the full sample policy at examples/policies/adk-governance.yaml.

Links

License

MIT

Release files for adk-agentmesh 3.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adk-agentmesh 3.7.0
File Size Uploaded
adk_agentmesh-3.7.0.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for adk-agentmesh 3.7.0
File Interpreter ABI Platform
adk_agentmesh-3.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.2 kB

Release files / adk_agentmesh-3.7.0.tar.gz

Download URL adk_agentmesh-3.7.0.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f65a9f472ed2c3e36c74b4900ae2e18556b7ca553e3c22fbb21bc3a46c78abcc
BLAKE2b-256 checksum
How to use checksums
f4baa4a03c7aba523a66fc645644feba3c2287f131b5dd4d0e1dba927ae16dd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via RestSharp/106.13.0.0

Release files / adk_agentmesh-3.7.0-py3-none-any.whl

Download URL adk_agentmesh-3.7.0-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9ff16bb8a846b938f2788cb4823fb95ec903ca7f849ea7e0ef59528fbdbc0bc
BLAKE2b-256 checksum
How to use checksums
a666c5ac701bec7aa4e44ccc9a5298afeff43e145808d5bfa15ec384393b5ee6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via RestSharp/106.13.0.0

Release history Release notifications | RSS feed

This release

3.7.0 This release

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page