Safety checks an AI agent runs before it acts: is this package malware/typosquat, is this shell command destructive, does this text leak a secret. CLI + MCP server.
Project description
agent-guard
The safety check an AI agent runs before it acts.
Every agent that installs packages, runs shell commands, or commits/outputs text can do real
damage: install malware, wipe a disk, or leak a credential. agent-guard is three cheap,
dependency-free checks — the "look before you leap" gate an agent (or you) calls before the
irreversible step.
pip install agent-tripwire # the checks (zero deps)
pip install "agent-tripwire[mcp]" # + the MCP server for agents
Use it as an MCP tool (for agents)
An agent can call these itself before acting. Add to your MCP client (Claude/Cursor/Claude Code):
{ "mcpServers": { "agent-guard": { "command": "agent-guard-mcp" } } }
MCP registry identity — mcp-name: io.github.ipezygj/agent-guard
| tool | the agent calls it before… |
|---|---|
check_package |
pip/npm install — is it real, malware, a typosquat, or does it run code on install? |
check_command |
running a shell command — is it a destructive / remote-code-exec vector (rm -rf, curl|bash, dd, force-push)? |
scan_secrets |
committing / pasting / logging — does the text leak an API key, token, or private key? |
scan_project |
deploying / shipping a web backend — fail-open auth, unsigned payment webhooks, SQL injection, SSRF, hardcoded secrets? |
The checks
check_package — existence on the registry (a hallucinated name is a red flag), typosquat distance to popular packages, npm install/postinstall scripts (the classic supply-chain malware vector), and OSV malware/vulnerability advisories. Mainstream packages pass; look-alikes and install-time-code flag.
check_command — matches destructive / RCE shell patterns with a severity and a plain reason.
rm -rf /, curl … | bash, dd of=/dev/sda, fork bombs → critical; force-push, hard-reset,
sudo, DROP TABLE → high.
scan_secrets — AWS/OpenAI/Anthropic/Google/Stripe/GitHub/Slack keys, private-key blocks, JWTs,
and generic api_key=/password= assignments. Returns each finding (type, line, redacted).
scan_project — reads a web/API backend (directory or single .py) for the money-losing logic
bugs a secret- or command-scanner can't see: auth that fails open when a secret is unset,
payment webhooks with no signature check (a forged checkout mints free credits), SQL built by
string interpolation, SSRF-able f-string URLs, and secrets hardcoded as defaults. Each finding
gives the file, line, why, and the fix. FP-disciplined: parameterized SQL, signed webhooks, and
fail-closed guards stay silent.
from agent_guard import analyze_command, scan_secrets, check_package
from agent_guard.webscan import scan_project
analyze_command("rm -rf /")["danger"] # "critical"
scan_secrets("token = 'ghp_...'")["leaked"] # True
check_package("reqwests", "pypi")["risk"] # "high" (typosquat of requests)
scan_project("./my_api")["risk"] # "critical" if a webhook skips signature checks
The point: an agent about to install/run/commit should check first — and now it can, in one call, with a plain verdict and a recommendation. If a check comes back high/critical, stop and get a human.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_tripwire-0.2.1.tar.gz.
File metadata
- Download URL: agent_tripwire-0.2.1.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da7e058645b9e472d142ad7053cfe2138f39b573eff9bff185f5ff8438c06f8a
|
|
| MD5 |
8e52f2bce1cc57b9ed9df375947658a3
|
|
| BLAKE2b-256 |
17cf8daa492de754a4bdb437b2b5f8e42fde63006dd0ac32e9ab56c8b1d58e52
|
Provenance
The following attestation bundles were made for agent_tripwire-0.2.1.tar.gz:
Publisher:
publish.yml on ipezygj/agent-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_tripwire-0.2.1.tar.gz -
Subject digest:
da7e058645b9e472d142ad7053cfe2138f39b573eff9bff185f5ff8438c06f8a - Sigstore transparency entry: 2226953747
- Sigstore integration time:
-
Permalink:
ipezygj/agent-guard@de462ca08a9f4755a041b8749aeef3462cf0a5f7 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ipezygj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de462ca08a9f4755a041b8749aeef3462cf0a5f7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file agent_tripwire-0.2.1-py3-none-any.whl.
File metadata
- Download URL: agent_tripwire-0.2.1-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d12102d862c55c7637950946152a5af1b9e15aea6231419ce45af5e855fb56a6
|
|
| MD5 |
466933535b3b7588396cb8169c283910
|
|
| BLAKE2b-256 |
dadfbc540a611fdcdc05beed79ca1302dbb8b8f10edf83d788e7af5a07b6c780
|
Provenance
The following attestation bundles were made for agent_tripwire-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on ipezygj/agent-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_tripwire-0.2.1-py3-none-any.whl -
Subject digest:
d12102d862c55c7637950946152a5af1b9e15aea6231419ce45af5e855fb56a6 - Sigstore transparency entry: 2226953767
- Sigstore integration time:
-
Permalink:
ipezygj/agent-guard@de462ca08a9f4755a041b8749aeef3462cf0a5f7 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ipezygj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de462ca08a9f4755a041b8749aeef3462cf0a5f7 -
Trigger Event:
release
-
Statement type: