Skip to content

[FEATURE]:Governance middleware hook for tool call authorization #5888

Description

@nagasatish007

Feature Area

Agent capabilities

Is your feature request related to a an existing bug? Please link it here.

N/A

Describe the solution you'd like

Problem

CrewAI agents execute tools autonomously during crew runs. In production deployments, teams need governance controls:

  • Which tools each agent is authorized to use (beyond just assigning tools)
  • Cost tracking per agent across a crew run
  • Audit trail for compliance (who called what, when, why)
  • Ability to block specific tool calls based on runtime context (e.g., data sensitivity, time of day, budget remaining)

Currently, the only way to enforce this is by wrapping each tool's _run method individually, which doesn't compose well across crews.

Proposal

Add an optional governance hook that runs before each tool execution:

from crewai import Crew

def on_tool_call(agent, tool_name, tool_input, context):
    """Called before every tool execution. Raise to block."""
    if tool_name == "customer_export" and agent.role != "Admin":
        raise ToolBlockedError("customer_export requires Admin role")
    return True  # allow

crew = Crew(
    agents=[researcher, writer],
    on_tool_call=on_tool_call  # optional hook
)



This keeps governance decoupled from tool implementationadd/remove governance by changing the crew config, not every tool.

Working Example
I've built a working CrewAI + governance integration that demonstrates this pattern:

https://github.com/agentguard-ai/tealtiger/tree/main/examples/crewai-governance

It shows:

Policy-based tool authorization (allow/deny per tool per agent)
Per-agent cost tracking with CostTracker
A blocked customer_export tool call with clear error message
Works offline with deterministic demo mode (no API keys needed)
Uses TealTiger (open-source, Apache 2.0) for the governance engine, but the hook pattern would work with any policy engine.

Why this matters
OWASP's Agentic Top 10 identifies tool misuse (ASI-02) and access control failures (ASI-03) as top risks. A standard governance hook would let the CrewAI community build reusable authorization patterns without modifying individual tools.

Happy to submit a PR if a governance hook pattern is welcome.

### Describe alternatives you've considered

1. Wrapping each tool's _run method with governance logic — works but requires modifying every tool individually and doesn't compose across crews.

2. Subclassing Agent to override tool executiontightly couples governance to a specific agent, breaks when switching agent types.

3. Post-hoc log analysisonly detects violations after they happen, doesn't prevent unauthorized actions.

A crew-level hook is preferred because it's non-invasive, composable, and works across all agents/tools without modification.


### Additional context

Working example with full source code: https://github.com/agentguard-ai/tealtiger/tree/main/examples/crewai-governance

This demonstrates:
- PolicyBuilder with allow/deny rules per tool
- governed_tool_call() wrapper pattern
- Per-agent cost tracking
- Blocked customer_export tool with clear error

OWASP Agentic Top 10 identifies tool misuse (ASI-02) and access control failures (ASI-03) as top risks for agentic applications.

Happy to submit a PR implementing this if the pattern is welcome.


### Willingness to Contribute

Yes, I'd be happy to submit a pull request

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions