Sentinel
Sentinel is an AI agent for security-auditing other agents, skills, prompt bundles, plugins, hooks, and MCP servers. It runs inside Codex or Claude Code, so it uses the invoking user's signed-in account and model. It does not require an API key belonging to the project author.
Hybrid audit engine
Sentinel is not merely a bundle of prompt-only skills. Every audit combines contextual AI reasoning with a substantial deterministic security phase that runs automatically for the Sentinel agent:
- 25 catalogued, reproducible checks for prompt injection, credentials, command execution, permissions, network access, TLS, paths, persistence, supply-chain risks, deserialization, archives, and cross-file attack signals;
- bounded read-only inventory with per-file and whole-package SHA-256 hashes, explicit skipped-file limitations, secret redaction, and stable finding fingerprints;
- multilingual text indicators, including common instruction-override phrases in Hungarian, Polish, German, French, Spanish, Russian, Ukrainian, Chinese, and Japanese;
- Python AST checks for real
eval/exec, shell APIs,shell=True, unsafe YAML, disabled certificate verification, archive extraction, secret sources, and network sinks; - a second deterministic snapshot immediately before the verdict. If the
package changed, stale conclusions are discarded and the review restarts
once; another change produces
INCONCLUSIVE.
These checks produce evidence, not an automatic verdict. The AI independently reviews relevant content in any language, tests whether flagged paths are actually reachable, correlates evidence across files, and dismisses justified false positives. A clean regex result never suppresses contextual review.
The agent includes nine focused skills:
target-recon— inventories the target, entry points, declared capabilities, trust boundaries, external integrations, and files that could not be inspected. It establishes the audit scope before any verdict is made.prompt-injection— finds attempts to override instruction hierarchy, extract hidden prompts, promote untrusted content to instructions, or load remote and encoded instructions. It also evaluates whether the agent keeps data and commands separated.tool-safety— reviews tool definitions, permissions, confirmation gates, parameter validation, filesystem and network reach, destructive actions, and the consequences of hostile tool or MCP output.code-security— traces untrusted inputs to sensitive sinks and reviews command execution, dynamic evaluation, path traversal, unsafe deserialization, archive extraction, secret handling, TLS settings, and related implementation flaws.supply-chain— checks dependencies, version pinning, install and update hooks, downloaded executables, remote code, package integrity, and whether a compromised dependency could gain agent authority.agent-behavior— reasons about multi-step autonomy: scope control, approval boundaries, loops, retries, partial failures, persistence, self-modification, misleading success states, and recovery behavior.deterministic-testing— runs Sentinel's bounded read-only scanner, preserves hashes and redacted evidence, records coverage limitations, and treats machine findings as signals that still require contextual AI review.risk-correlation— connects evidence across prompts, code, manifests, and tools into credible attack paths; verifies controls, removes duplicates and false positives, and assigns a defensible verdict and priority.security-reporting— produces the final user-facing audit in the user's language: a short summary, a table of findings with locations and priorities, concrete remediation proposals, and an offer to provide the full evidence-level report.
A shared local MCP server gives the agent access to bounded deterministic security checks. The scanner never executes, imports, installs, or invokes the audited target.
Installation
Python 3.11 or newer is required.
pipx install sentinel-ai-auditor
Upgrade an existing PyPI installation:
pipx upgrade sentinel-ai-auditor
Install directly from a pushed repository branch on another computer:
pipx install "git+https://github.com/KacperStasieluk/sentinel.git@BRANCH_NAME"
Use pipx install --force when reinstalling the same branch. After the release
tag is published, use its version tag in place of BRANCH_NAME.
Install the agent in Claude Code:
sentinel install claude
claude --agent sentinel
You can also ask Claude in a regular conversation:
Use the Sentinel agent to audit ./path/to/skill
Install the agent in Codex:
sentinel install codex
Then ask Codex:
Use the Sentinel agent to audit ./path/to/agent
Install both host adapters:
sentinel install all
The installer adds the native agent definition, the shared skills, and the
local MCP server registration. It does not store any API key. --dry-run
shows destination paths, --force replaces modified Sentinel-managed files,
and --skip-mcp skips MCP registration.
Local tools
Run only the deterministic scanner, without an AI verdict:
sentinel scan ./target --json
List the bundled skills and deterministic checks:
sentinel skills
sentinel checks
Run the MCP server manually:
sentinel mcp
Deterministic signals are evidence for the agent, not a standalone security
verdict. A PASS result is not a guarantee of safety.
Development and publishing
python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check src tests
python -m ruff format --check src tests
python -m build
python -m twine check --strict dist/*
Publishing to PyPI uses GitHub Trusted Publishing after a version-matching tag is pushed.
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 sentinel_ai_auditor-0.2.1.tar.gz.
File metadata
- Download URL: sentinel_ai_auditor-0.2.1.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71edfabf6bbf82004aa43d2375418132c1b5da9a3deeb4ce2813a32ac6d37a41
|
|
| MD5 |
8ca11f453058af270b952e56d8f628ec
|
|
| BLAKE2b-256 |
b68147759d94356845472b4ec62168dc832b3f823eb6066ec53299a543795912
|
Provenance
The following attestation bundles were made for sentinel_ai_auditor-0.2.1.tar.gz:
Publisher:
publish.yml on KacperStasieluk/sentinel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sentinel_ai_auditor-0.2.1.tar.gz -
Subject digest:
71edfabf6bbf82004aa43d2375418132c1b5da9a3deeb4ce2813a32ac6d37a41 - Sigstore transparency entry: 2280936654
- Sigstore integration time:
-
Permalink:
KacperStasieluk/sentinel@970e107dac7395f8aef0e071c2e4b91f4fba17da -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/KacperStasieluk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@970e107dac7395f8aef0e071c2e4b91f4fba17da -
Trigger Event:
push
-
Statement type:
File details
Details for the file sentinel_ai_auditor-0.2.1-py3-none-any.whl.
File metadata
- Download URL: sentinel_ai_auditor-0.2.1-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e1ad9b19942cc4ca801ba89979c0a1e6ca572f4bd6d7ef4a70db2d04715e5d1
|
|
| MD5 |
6a51caaeae16b388f119be9849a8e88d
|
|
| BLAKE2b-256 |
4f620e03a74a365f7027551d15ab87e71fa42d9a13092cfd3a4965ab0d5b1db0
|
Provenance
The following attestation bundles were made for sentinel_ai_auditor-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on KacperStasieluk/sentinel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sentinel_ai_auditor-0.2.1-py3-none-any.whl -
Subject digest:
7e1ad9b19942cc4ca801ba89979c0a1e6ca572f4bd6d7ef4a70db2d04715e5d1 - Sigstore transparency entry: 2280936667
- Sigstore integration time:
-
Permalink:
KacperStasieluk/sentinel@970e107dac7395f8aef0e071c2e4b91f4fba17da -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/KacperStasieluk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@970e107dac7395f8aef0e071c2e4b91f4fba17da -
Trigger Event:
push
-
Statement type: