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.3.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.3.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pydantic_ai_agentmesh-3.3.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.3.0.tar.gz
Algorithm Hash digest
SHA256 13f2df1b2358e958479c7b5e8a72f31ec84a1c4fc176b4f19ee160b600ac782c
MD5 1152db24b39456a7382a6d090ebe01f2
BLAKE2b-256 461255d7692dbadbfb1209e138895b4ed7a518d0f3e1b7f26c2a82681c3edfd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydantic_ai_agentmesh-3.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fac206c199ac3be16e074cb003dbae638fb83e9e991f358d0c6190d22bd4b5d7
MD5 27d89bd0b56dc33f58ac6b3423c21c2e
BLAKE2b-256 8add331a68778a66138697549465bd248d25ddcd141df9aaebe56b588834d7a2

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