v0.5.1 AgentGuard
AgentGuard 0.5.1 — Release Notes
Released: 2026-05-11
Headline: Adapter hotfix + maintenance release. The Python SDK's CrewAI and LangChain adapters now subclass their frameworks' BaseTool directly (the v0.5.0 composition wrappers stopped being accepted by CrewAI 1.x + pydantic 2.12 and langgraph 1.0 + langchain_core 1.x). Python 3.9 leaves the support matrix; 3.10+ required. All binaries bumped from v0.5.0 to v0.5.1 for a unified release.
The self-hosted Apache-2.0 build remains fully featured. The hosted, multi-tenant version (AgentGuard Cloud) lives at https://agentguard.lictorate.com.
Why this release exists
CrewAI 1.x (with pydantic 2.12) and langgraph 1.0 (with langchain_core 1.x) both stopped honouring the BaseTool.register() virtual-subclass registrations that v0.5.0's composition-wrapper adapters relied on. At framework boundaries isinstance(thing, BaseTool) / isinstance(thing, Runnable) checks would now reject our wrappers, producing pydantic_core.ValidationError when passing a GuardedCrewTool to Agent(tools=[...]) or surprising the user when langgraph.prebuilt.create_react_agent(llm, tools=[GuardedTool(...)]) refused to register the tool.
v0.5.1 ships hybrid subclass+override adapters: the wrappers now subclass their framework's BaseTool directly so the isinstance checks pass natively, while every gated dispatch entry point (_run, run, invoke, ainvoke, _arun, arun, __call__, to_structured_tool …) is explicitly overridden so policy enforcement stays load-bearing. The _ALLOWED_PASSTHROUGH __getattr__ allowlist from v0.5.0 is gone — the defense moves from "no parent attributes are exposed" to "every dispatch path is on this class, not inherited", and the canary integration tests (tests/integration/test_at_real_crewai.py, tests/integration/test_at_real_langchain.py) trip when upstream adds a new dispatch path that bypasses our overrides.
ToolCall-shaped inputs ({"name", "args", "id", "type": "tool_call"}) are also unwrapped to the underlying args dict before the gate runs, so the v0.5.0 Tool.from_function(func=lambda x: gt.invoke(x)) workaround is no longer required.
Other changes
CI
python-testjob now installs[dev,langchain,crewai,mcp]. The previous lean[dev]install caused ~50 adapter unit tests to fail at collection time withModuleNotFoundError: No module named 'langchain_core' / 'crewai'.browser-useis intentionally excluded (Playwright + ~200 MB Chromium; covered by the dedicatedintegration-testsmatrix).- Python 3.9 dropped from the CI matrix. Active matrix is
3.10 / 3.11 / 3.12.
New CLI affordances
- Best-effort update notice on startup. The
agentguardbinary asynchronously queries the GitHub Releases API and prints a single stderr line if a newer published version is detected:Bounded to 800 ms — past the deadline the goroutine continues silently and a late print (if any) is harmless. Disabled on dev builds (Notice: agentguard v0.5.1 is deprecated, version v0.5.2 available — https://github.com/Caua-ferraz/AgentGuard/releases/latestcommit=dev) and viaAGENTGUARD_NO_UPDATE_CHECK=1. Does not affect the request path, audit log, or any subcommand semantics. make test-all/scripts/test-all.sh. Single entry point that runs Go + policy YAML + Python SDK + TypeScript SDK suites with aPASS / FAIL / SKIPsummary. Missing toolchains (nopython, nonpm) reportSKIPinstead of failing, so Go-only contributors are not penalised. Does not stop on first failure — every suite runs so you see the full picture in one go.
Documentation
- README,
docs/SETUP.md,docs/QUICKSTART_LLM_PROXY.md, and the fourexamples/*-config.mdfiles now state Python 3.10+ (was 3.9+). docs/CONTRIBUTING.mddocumentsmake test-alland the new test-all script.
Python SDK
- Python ≥ 3.10 required.
pyproject.tomlis nowrequires-python = ">=3.10". Users still on 3.9 should pin to v0.5.0 or upgrade their interpreter — 3.9 reached upstream end-of-life in October 2025, and themcpPyPI extra requires>=3.10regardless.
CLI
- The
agentguard,agentguard-mcp-gateway, andagentguard-llm-proxybinaries all report0.5.1from theirversionsubcommand and--versionflags. - New
AGENTGUARD_NO_UPDATE_CHECKenvironment variable disables the startup update notice. Set to anything except empty/0.
No policy schema, audit-log format, or wire-protocol changes. v0.5.0 audit logs replay cleanly. v0.5.0 policies load unchanged.
Get started
# Install all three binaries at the new tag
go install github.com/Caua-ferraz/AgentGuard/cmd/agentguard@v0.5.1
go install github.com/Caua-ferraz/AgentGuard/cmd/agentguard-mcp-gateway@v0.5.1
go install github.com/Caua-ferraz/AgentGuard/cmd/agentguard-llm-proxy@v0.5.1
# Or upgrade the Python SDK only
pip install --upgrade "agentguardproxy==0.5.1"Bug reports: GitHub Issues. Security: cauaferraz@lictorate.com (do not file public issues for vulnerabilities — see SECURITY.md).