Agent Supply Chain Guard
Before your agent reads it, scan it.
Your AI agent can be compromised by a file it reads.
An innocent-looking SKILL.md, MCP manifest, plugin, or README can contain instructions that redirect an agent, expose credentials, run commands, or request far more access than it needs.
Agent Supply Chain Guard finds those signals before they reach your agent runtime. It is free, local-first, dependency-free, and takes one command to run.
See it catch a poisoned skill in 10 seconds
git clone https://github.com/ppradyoth/agent-supply-chain-guard.git
cd agent-supply-chain-guard
python -m agent_supply_chain_guard scan examples/poisoned-skill.md
Expected output:
examples/poisoned-skill.md:5: [hidden-instruction] instruction-like text found in supply-chain content
examples/poisoned-skill.md:6: [process-execution] process execution reference
examples/poisoned-skill.md:7: [unrestricted-permission] broad or unrestricted permission
3 finding(s)
Install and scan in 30 seconds
pipx install agent-supply-chain-guard
agent-supply-chain-guard scan .
Or run it without installing:
python -m pip install agent-supply-chain-guard
agent-supply-chain-guard scan path/to/agent-project
A clean scan exits 0. A scan with security signals exits 1, so it works naturally in CI:
agent-supply-chain-guard scan . --quiet
GitHub Action
name: Agent security
on: [push, pull_request]
permissions: {}
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ppradyoth/agent-supply-chain-guard@v0.1.0
with:
path: .
Pin third-party actions to reviewed commits for production use.
What it catches
| Signal | Why it matters |
|---|---|
| Hidden instruction language | Content can attempt to hijack agent behavior |
| Shell and process execution | A prompt can become a code-execution path |
| Credentials and private keys | Secrets can be copied into tools, logs, or outputs |
| Dangerous URL schemes | Files and network handlers can cross trust boundaries |
| Wildcard permissions | One compromised tool can gain excessive reach |
| Invisible Unicode controls | Text can look harmless while behaving differently |
JSON output is available for automation:
agent-supply-chain-guard scan . --format json
Optional GPT or Claude review
Rules are the private, free baseline. If you want a second-pass explanation and prioritization, install one provider extra and export your own key in the shell:
pipx install 'agent-supply-chain-guard[openai]'
export OPENAI_API_KEY='your-key'
agent-supply-chain-guard scan . --ai-provider openai
Claude is the equivalent:
pipx install 'agent-supply-chain-guard[anthropic]'
export ANTHROPIC_API_KEY='your-key'
agent-supply-chain-guard scan . --ai-provider anthropic
Use AGENT_GUARD_OPENAI_MODEL or AGENT_GUARD_ANTHROPIC_MODEL to choose a model, or pass --model. The key is read from the environment and never printed or saved. Only matched finding evidence is sent for review; do not use AI mode on sensitive repositories unless that disclosure is acceptable. Provider fees and retention policies apply. AI output is advisory and does not alter the deterministic exit status.
Important limitation
This is a signal scanner, not a proof of exploitability. Findings need human review, and a clean result does not make an agent or dependency safe. The goal is to make the first security check cheap enough that teams actually run it.
Why now?
Agent security has moved beyond chatbot jailbreaks. MCP servers, agent skills, plugins, OAuth grants, and tool calls are becoming a software supply chain—and every new connection adds another place for untrusted instructions or excessive authority to enter.
Contributing
Add a narrowly scoped rule with a harmless fixture and a test. See CONTRIBUTING.md. Please never commit real credentials or client data.
Licensed under Apache-2.0.
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_supply_chain_guard-0.1.1.tar.gz.
File metadata
- Download URL: agent_supply_chain_guard-0.1.1.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
633e835601990c7ed8c78e1d5da7d180b6614278835dcf38285c0f748c13bb21
|
|
| MD5 |
13b984d80711dd9de7449bd6159d2256
|
|
| BLAKE2b-256 |
6c3587da9c817802f0533a7988a31b0e1d1e42d37858c4a32cb64f523727d518
|
Provenance
The following attestation bundles were made for agent_supply_chain_guard-0.1.1.tar.gz:
Publisher:
publish.yml on ppradyoth/agent-supply-chain-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_supply_chain_guard-0.1.1.tar.gz -
Subject digest:
633e835601990c7ed8c78e1d5da7d180b6614278835dcf38285c0f748c13bb21 - Sigstore transparency entry: 2879973402
- Sigstore integration time:
-
Permalink:
ppradyoth/agent-supply-chain-guard@f2983f4b9c0fed69cae7c78f86566c69d6a490cd -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ppradyoth
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f2983f4b9c0fed69cae7c78f86566c69d6a490cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_supply_chain_guard-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agent_supply_chain_guard-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8c770fe97fc03752ae84dfc5ea26e9ba234ca0213abe9faa6570f2885fe9034
|
|
| MD5 |
9a6779cbd2dadb85586d4bfec6ab0106
|
|
| BLAKE2b-256 |
aec8529cd584a2194099cbefb5abe5b89fe36daf382853672ed0c78efe7226e8
|
Provenance
The following attestation bundles were made for agent_supply_chain_guard-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on ppradyoth/agent-supply-chain-guard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_supply_chain_guard-0.1.1-py3-none-any.whl -
Subject digest:
f8c770fe97fc03752ae84dfc5ea26e9ba234ca0213abe9faa6570f2885fe9034 - Sigstore transparency entry: 2879973425
- Sigstore integration time:
-
Permalink:
ppradyoth/agent-supply-chain-guard@f2983f4b9c0fed69cae7c78f86566c69d6a490cd -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ppradyoth
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f2983f4b9c0fed69cae7c78f86566c69d6a490cd -
Trigger Event:
push
-
Statement type: