Skip to main content

Governance middleware for PydanticAI — semantic policy enforcement, trust scoring, and audit trails for agent tool execution

Project description

pydantic-ai-governance

Governance middleware for PydanticAI — semantic policy enforcement, trust scoring, and audit trails for agent tool execution.

Part of the AgentMesh ecosystem.

What This Does

Unlike input/output guardrails that validate LLM I/O, this package enforces what tools are allowed to do based on semantic policy — blocking dangerous operations before they execute.

Layer Scope Example
Guardrails (#1197) LLM input/output "Don't discuss competitor products"
Hooks/Traits (#2885/#4303) Agent lifecycle Transform PII in messages
Governance (this) Tool execution "Block rm -rf, limit to 10 tool calls, require trust score > 0.7"

Features

  • GovernancePolicy — Pydantic model defining execution limits, blocked patterns, allowed tools
  • govern() decorator — Wrap any PydanticAI tool with policy enforcement
  • GovernanceToolset — Apply governance to all tools via PydanticAI's WrapperToolset
  • TrustScorer — Multi-dimensional trust tracking (reliability, capability, security, compliance)
  • Semantic intent classification — Categorize tool calls by threat type, not just keyword matching
  • YAML policy files — Version-controlled policies alongside code
  • Audit trail — Every policy decision logged with context

Quick Start

from pydantic_ai import Agent
from pydantic_ai_governance import GovernancePolicy, govern, PatternType

policy = GovernancePolicy(
    max_tokens_per_request=4096,
    max_tool_calls_per_request=10,
    blocked_patterns=[
        ("rm -rf", PatternType.SUBSTRING),
        (r".*password.*=.*", PatternType.REGEX),
    ],
    allowed_tools=["search", "read_file"],
)

agent = Agent("openai:gpt-4o")

@agent.tool
@govern(policy)
async def search(ctx, query: str) -> str:
    """Search the web."""
    return f"Results for {query}"

GovernanceToolset (apply to all tools)

from pydantic_ai_governance import GovernanceToolset

toolset = GovernanceToolset(policy=policy, tools=[search, read_file])
agent = Agent("openai:gpt-4o", toolsets=[toolset])

Trust Scoring

from pydantic_ai_governance import TrustScorer

scorer = TrustScorer()
scorer.record_success("agent-1", dimensions=["reliability", "security"])
scorer.record_failure("agent-1", dimensions=["compliance"])

score = scorer.get_score("agent-1")
print(f"Trust: {score.overall:.2f}")  # 0.0-1.0

YAML Policies

# governance-policy.yaml
max_tokens_per_request: 4096
max_tool_calls_per_request: 10
blocked_patterns:
  - pattern: "rm -rf"
    type: substring
  - pattern: ".*password.*=.*"
    type: regex
allowed_tools:
  - search
  - read_file
confidence_threshold: 0.8
policy = GovernancePolicy.from_yaml("governance-policy.yaml")

How It Differs from Guardrails

See pydantic/pydantic-ai#4335 for the full discussion. Key differences:

  1. Semantic intent classification — Weighted signal classifier with 9 threat categories
  2. Policy composition — Hierarchical "most-restrictive-wins" merging
  3. Multi-agent awareness — Swarm-level anomaly detection
  4. Deterministic — Zero LLM dependency, sub-millisecond enforcement

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_ai_agentmesh-3.4.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_ai_agentmesh-3.4.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_ai_agentmesh-3.4.0.tar.gz.

File metadata

  • Download URL: pydantic_ai_agentmesh-3.4.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for pydantic_ai_agentmesh-3.4.0.tar.gz
Algorithm Hash digest
SHA256 004671e7c50361aed0926ec9bd6f15a47376ebcd7cecfc918fb0d8c56d3244cc
MD5 dca2608eabce7f189043d65fd1e5cabe
BLAKE2b-256 eadf1bb19c6b831c46244a7a7097bea767ef5f9f5f34722d2717032a8ca3cec7

See more details on using hashes here.

File details

Details for the file pydantic_ai_agentmesh-3.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_ai_agentmesh-3.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a6a99c6cfe4eaad52ca6760d8e0cf3420578ea4c2886d21795a1243ceddfc03
MD5 f3033242ae60d3694511f4dbe743d201
BLAKE2b-256 146c030e09c07d48680201a6cf6f1f8bf278da7cc16b0bc3c99b7af7a1beb9db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page