Skip to main content

AgentGuard

Stop your agents from silently burning API credits.

AgentGuard is a lightweight runtime guard that detects loops, tracks repeated calls, and shows how many tokens your agent is wasting — in real time.

pip install agentguard-kit

⚠️ The Problem

LLM agents don't fail loudly.

They do this instead:

search("python error")
→ read_file("log.txt")
→ search("python error")
→ read_file("log.txt")
→ search("python error")

No crash. No exception. Just silent repetition… and a growing API bill.


✅ The Solution

Wrap your tools. Run your agent. Let AgentGuard track what's actually happening.

from agentguard import Guard
from agentguard.decorators import track

g = Guard()
g.start()

@track
def search(query):
    return f"results for {query}"

for step in ["a", "b", "a", "b"]:
    search(step)

print(g.report())

Example output:

AgentGuard Report

Verdict: BAD (Loop Detected)
Reason: Repeating step pattern detected
Severity: High
Confidence: 0.90

---

Total Calls: 4
Wasted Calls: 2
Waste Ratio: 50%

---

Signals:
- Loop Detected: Yes
- High Waste: No

---

Token Usage:

Total Tokens: 200
Wasted Tokens: 100
Token Waste: 50%

---

Suggestions:
- Possible infinite loop detected — verify stopping conditions
- Check repeated tool inputs
- Add guard conditions.

⚠️ About Repeated Calls

AgentGuard detects repeated and looping behavior based on execution patterns.

However, not all repetition is a bug.

Valid cases include:

  • retries (network/API failures)
  • pagination or iteration
  • multi-step workflows

AgentGuard does NOT assume intent.

It highlights high-level inefficiency signals — you decide whether to act.


🧠 What It Detects

  • Consecutive loops (hard stuck behavior)
  • Frequent loops (error prone exploration)
  • Repeated tool calls (waste ratio)
  • Token waste (explicit or estimated)

⚙️ Token Tracking

AgentGuard works in two modes:

  1. Automatic (no setup):

    search("hello")
    

    Uses a deterministic estimate:

    tokens ≈ len(payload) // 4
    
  2. Explicit (recommended):

    search("hello", tokens=120)
    

    Uses real token usage from your LLM provider.


🧪 Real-World Integrations

Example 1 — Autopilot Loop (no tokens passed):

from agentguard import Guard
from agentguard.decorators import track

g = Guard()
g.start()

@track
def fallback_search(query):
    return f"retrying {query}"

for _ in range(3):
    fallback_search("python error")

print(g.report())

Example 2 — OpenAI Integration (real tokens):

from agentguard import Guard
from agentguard.decorators import track
from openai import OpenAI

client = OpenAI()

g = Guard()
g.start()

@track
def ask_llm(prompt, tokens=None):
    return prompt

def call_llm(prompt):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}]
    )

    total_tokens = response.usage.total_tokens

    return ask_llm(prompt, tokens=total_tokens)

call_llm("Explain python loops")
call_llm("Explain python loops")
call_llm("Explain python loops")

print(g.report())

🎯 Why Use AgentGuard?

Because your agent might be:

  • Looping without you noticing
  • Repeating expensive calls
  • Wasting 50–80% of tokens silently

AgentGuard makes that failure visible.


Installation

pip install agentguard-kit

Minimal Usage

g = Guard()
g.start()

@track
def tool(x):
    return x

tool("a")
tool("a")

print(g.decision())
print(g.suggest())

Metadata

Release files for agentguard-kit 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentguard-kit 0.2.0
File Size Uploaded
agentguard_kit-0.2.0.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agentguard-kit 0.2.0
File Interpreter ABI Platform
agentguard_kit-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.1 kB

Release files / agentguard_kit-0.2.0.tar.gz

Download URL agentguard_kit-0.2.0.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c466410d1edbe02b2e09d530907bb709491139a7091bf2291c72a18b3868cb9d
BLAKE2b-256 checksum
How to use checksums
6af1fbd15db71b851e91a3b20391239093ef02232ad6b99b1a4eef8a22a817f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release files / agentguard_kit-0.2.0-py3-none-any.whl

Download URL agentguard_kit-0.2.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6cfb4b9ecd6af8f50348eee4b57e4bf8aaa0a07785aa255dd83ec9bc0642e8f9
BLAKE2b-256 checksum
How to use checksums
29a915d57bd415f87a56846dd568afb18a798a5651356618f4b3c1b12b9245ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page