Call-owning hook · PyPI 0.1.0 · Alpha · Apache-2.0

agno-acgs for Agno.

Package Specification · Inspected HEAD b7bbc78

Framework maintainer
Agno · agno.com
Upstream repository
agno-agi/agno
PyPI release
agno-acgs==0.1.0
Python requirement
>=3.10
Framework constraint
agno>=3.1.0,<4
Governance engine pin
acgs-lite>=3.0.1,<4
Integration mechanic
Call-owning middleware (wraps tool call)
Hook entry point
ACGSGuard.tool_hook · ACGSGuardrail.check / async_check

01 · Local Setup & Quickstart

Attach governance to one tool-calling agent.

Install the pinned release from PyPI alongside acgs-lite>=3.0.1,<4. Rule evaluation uses deterministic keyword and regex matching locally in Python—no external model or network call is made by the governance check.

Caveat: Evaluates rendered tool-call arguments against configured acgs-lite rules and fails closed on governance errors.

Shell · PyPI installation

pip install "agno-acgs==0.1.0"

Python · Agno integration

src/agno_acgs/hooks.py#L97
from agno.agent import Agent
from agno_acgs import ACGSGuard

guard = ACGSGuard()
agent = Agent(
    model=model,
    tools=[send_email],
    tool_hooks=[guard.tool_hook],
    pre_hooks=[guard.guardrail],
)
guard.check(agent)

02 · Verdict & Review Mapping

How ACGS-Lite verdicts map to Agno.

When a tool call is proposed, the adapter formats the tool name and arguments via format_tool_call and evaluates them against the configured Constitution. Blocking rules always take precedence over review rules.

Verdict.ALLOW

Calls matching no blocking or review rules proceed through the Agno tool hook wrapper.

Verdict.DENY

Blocks execution and returns the violation reason as the tool result string so the model can continue safely.

Verdict.REVIEW

Denied by default; with on_review='confirmed', runs only if the Agno tool requires confirmation and the user confirmed the call.

03 · Public API Surface

Exported symbols and source entry points.

Each adapter keeps its public surface minimal and re-exports the shared GovernanceDecision, Verdict, and ToolCallFormatter types alongside the framework-specific hook or middleware class.

__all__ exports · agno-acgs

src/agno_acgs/hooks.py#L97 ↗
ACGSGuardACGSGuardrailUngovernedToolsErrorGovernanceDecisionToolCallFormatterVerdictformat_tool_call

Primary hook surface: ACGSGuard.tool_hook · ACGSGuardrail.check / async_check. Custom ToolCallFormatter functions may be supplied if your tool arguments require custom canonical serialization before rule matching.

04 · Scope & Bypass Boundaries

What this adapter does and does not cover.

Verify these framework-specific boundaries when integrating agno-acgs into an evaluation workflow.

  1. 01

    Attach both tool_hooks=[guard.tool_hook] and pre_hooks=[guard.guardrail] so runs fail with UngovernedToolsError if provider-run or ungoverned team member tools are present.

  2. 02

    Keep guard.tool_hook last in tool_hooks so outer hooks cannot mutate arguments after ACGS evaluation.

  3. 03

    In the current 0.1.x adapter series, rule evaluation runs through acgs-lite's ToolCallGovernor path. If your workflow requires SignedReceipt, ExecutionGrant, or SQLite EffectStore reservations, wire those contracts explicitly at the tool executor boundary.

Put one real workflow under your control.

Choose one tool. Define what it may do. Inspect what happens when a request crosses the boundary.