A signed audit trail
Every decision is appended to an HMAC-chained ledger with sequence numbers and a signed head, so edits, deletions and truncation are all detected. Secrets are redacted before anything is written.
A deny-by-default gateway for AI agents. Risky calls wait for a human, and untrusted tool output is tracked.
pip install sentinel-agent-gateway
Python 3.10+. Import name sentinel.
Attacks on agents arrive in what tools return, not just in what the agent asks to do. Sentinel covers both, then asks a person.
Arguments are normalised, then scored by pluggable detectors. Shell is parsed into argv, so rm -r -f / is caught under any tool name. URL hosts are parsed as IP addresses, so decimal, hex and IPv6 forms can't slip past the SSRF check.
The policy can only make a decision stricter. Unknown tools wait for approval by default.
Web pages, emails and files are fenced as untrusted data and fingerprinted. If that text reaches a high-risk tool later in the session, a human decides.
An approval is an HMAC token bound to a digest of the exact arguments. It expires, works once, and fails if anything changed while you were deciding.
Every decision is appended to an HMAC-chained ledger with sequence numbers and a signed head, so edits, deletions and truncation are all detected. Secrets are redacted before anything is written.
They summarise a release-notes page with a hidden instruction to email the customer list out. Model turns are scripted here; the gateway is the real code.
Computed just now in this tab from the bundled corpus of attack and benign tool calls, under the default policy.
The corpus is small and hand-written, so treat these as regression numbers. Known misses and method.