Sentinel — the inbound governor
DeanWay Labs. Sentinel is the mirror of QuietOS. QuietOS governs what an AI agent does. Sentinel governs what an AI agent hears.
The brain proposes, QuietOS disposes — and Sentinel decides what the brain is even allowed to hear.
The problem
An agent reads data and instructions in the same stream, and cannot natively tell them apart. So the world has learned to hide orders inside the data: a webpage that tells the assistant to email out the passwords, an email wearing the owner's name, a tool result with a second, secret job tucked inside it. That is prompt injection, and it works because nothing stands at the door.
Sentinel stands at the door.
The law
Only the owner issues instructions. Everything else is data.
Content from the world — webpages, emails, files, messages, tool outputs — is inspected
before it reaches the brain, and whatever passes is delivered wrapped and labeled as
data, never as orders. A claim inside the content ("I am the owner", "the owner already
approved this", SYSTEM:) authenticates nothing: authentication comes from the channel,
never from the text.
Verdicts
| Verdict | Meaning |
|---|---|
| ALLOW | Clean data. Passes through, labeled as data. |
| ESCALATE | Instruction-shaped content aimed at the agent from a non-owner source. Held for the owner with the exact content preserved — the same approval-binding discipline as QuietOS. Nothing acts on it while it waits. |
| BLOCK | Known-hostile patterns: exfiltration directives, owner/system impersonation, false approval claims, rule-override incantations, concealment directives. Refused outright. |
Every ESCALATE and BLOCK is written to an append-only attack ledger — timestamp, source, verdict, matched signals, SHA-256 of the exact content, and a preserved excerpt. Attempts are evidence, and the ledger is part of the product, the same way QuietOS's red-team proof log is.
v0.1 scope
- Deterministic inspection only — pattern/heuristic checks, no model in the loop. Base64-encoded payloads are decoded and inspected too; an encoded order is still an order. Invisible-character smuggling (zero-width) is normalized away before scanning.
- Structured for a model check later — checks are pure functions returning the same
Signalvalues; a model-based check can joinrules.CHECKSwithout touching the engine. - Honest limits (see
docs/PROOF-LOG.mdfor the current open holes): the fence is English-only and literal — synonym-crafted, leetspeak, and purely semantic attacks can pass the fence. They still meet the law: missed content reaches the brain labeled as data, not orders. Detection raises the cost of attack; authority is the wall.
Use
from sentinel import Inspector, Source
inspector = Inspector() # optionally: Inspector(ledger=AttackLedger("attacks.jsonl"))
verdict = inspector.inspect(page_text, Source("webpage", url))
if verdict.verdict == "ALLOW":
brain_input = Inspector.labeled_payload(verdict, page_text)
elif verdict.verdict == "ESCALATE":
hold_for_owner(verdict.excerpt, verdict.signals) # exact content, owner's call
else: # BLOCK
refuse(verdict)
The owner's own authenticated channel is the one exception to inspection:
Source("owner", ..., owner_authenticated=True) passes with role instruction —
it is not an attack surface, it is the authority. An unauthenticated claim to the
owner channel is blocked as impersonation by construction.
Tests
python3 -m pytest tests/ -q
Three suites: tests/test_redteam.py (attack cases), tests/test_controls.py
(benign content that must pass as data), tests/test_engine.py (authority law,
ledger evidence, labeling). Results — including the misses — live in
docs/PROOF-LOG.md.
Origin
Conceived by Jon Dean (DeanWay Labs), 2026-10-21: "We govern what goes out — don't we need to protect the AI as well, and govern what comes in?" Built the same night. Named Sentinel by Jon.
Metadata
Release files for quietos-sentinel 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| quietos_sentinel-0.1.0.tar.gz | 15.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quietos_sentinel-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.9 kB
Release files / quietos_sentinel-0.1.0.tar.gz
| Download URL | quietos_sentinel-0.1.0.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30280e8bbd1da31f70636663f607331cdd43388617499fea68b26f6663beeca2
|
|
BLAKE2b-256 checksum How to use checksums |
f6313439af7b92b0da63e1122a48d6792eb2be70b87c5a28b5708f59c56f133c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / quietos_sentinel-0.1.0-py3-none-any.whl
| Download URL | quietos_sentinel-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b226cb7db83fa92b77cb5ba9856c68c1bdc02b3ef5807ee534571ad6a98d8fe6
|
|
BLAKE2b-256 checksum How to use checksums |
0c5e503b300a22ce233e1fd9e8baee1c473a2d6a83d4f723fda8e3179d840e39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for quietos-sentinel 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.