From 4c237b3f2387c6a569c9503a4ae31219a2a69ac2 Mon Sep 17 00:00:00 2001
From: Toni Bergholm
Date: Thu, 9 Jul 2026 17:40:56 +0300
Subject: [PATCH] website: bring Sentinel status up to date with pkg-registry
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Sentinel page and homepage pillar still said 'auditing proxy live,
policy & permissions next' — the pkg-registry repo has since shipped the
whole layer (phases through 25): signed policy with lint + dry-run
preview, control-plane role tokens, a deny-by-default sandbox (writes
and $HOME reads), sentinel explain remediation, identity and
release-anomaly signals, durable SQLite observability, and a hardened
network trust boundary. Current work there is OSS launch prep. Sourced
from pkg-registry's CLAUDE.md phase log and README as of 2026-07-09.
---
website/src/pages/index.astro | 7 +++--
website/src/pages/sentinel.astro | 47 +++++++++++++++++++++++---------
2 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro
index 1518b0a..6f4394b 100644
--- a/website/src/pages/index.astro
+++ b/website/src/pages/index.astro
@@ -75,8 +75,9 @@ $ bash demo/run_demo.sh
Agents run npm install and execute code nobody read.
Sentinel is a transparent auditing proxy in front of
registry.npmjs.org: every tarball is scored by a deterministic engine
- and carries a verdict before install-time code runs. The
- agent can request; only a human grants.
+ and carries a verdict before install-time code runs, and a
+ deny-by-default sandbox contains what does run. The agent can
+ request; only a human grants.
color-stream@1.4.1
────────────────────────────────────────
@@ -87,7 +88,7 @@ $ bash demo/run_demo.sh
critical [secret-exfil] reads ~/.npmrc, AWS credentials…
HTTP 403 x-sentinel-verdict: block
- TypeScript · auditing proxy live · policy & permissions next
+ TypeScript · full security layer built · open-source launch prep
Full page → GitHub →
diff --git a/website/src/pages/sentinel.astro b/website/src/pages/sentinel.astro
index adb25ae..a77c042 100644
--- a/website/src/pages/sentinel.astro
+++ b/website/src/pages/sentinel.astro
@@ -11,7 +11,7 @@ const repo = 'https://github.com/git-agentic/pkg-registry';
- Auditing proxy live · policy & permissions next
+ Full security layer built · open-source launch prep
Apache 2.0
TypeScript
@@ -71,29 +71,50 @@ $ sentinel audit is-odd 3.0.1
Deterministic scoring — start at 100, weighted penalties per
finding, any critical forces block — fully reproducible in CI; an
LLM adapter only adds context, never the score
- Policy and approval gate: signed per-enterprise policy, capability
- manifests, and a hard privilege boundary — the agent can request an
- approval, only a human can grant it
- Sandbox enforcement (macOS Seatbelt, Linux bubblewrap): lifecycle
- scripts run with denied-by-default access to secrets and network;
- detected violations quarantine that exact tarball fleet-wide
+ Policy and approval gate: signed per-enterprise policy — with a
+ lint and a dry-run impact preview against real audit history before
+ signing — capability manifests, and a hard privilege boundary: the
+ agent can request an approval, only a human can grant it, enforced
+ by signed Ed25519 role tokens on the control plane
+ Deny-by-default sandbox (macOS Seatbelt, Linux bubblewrap):
+ lifecycle scripts get no network, no credential env vars, no writes
+ outside a fixed floor, and no $HOME reads unless a
+ capability is approved; detected violations quarantine that exact
+ tarball fleet-wide
Agent-native surfaces: a stdio MCP server for agent hosts and a
- CLI whose exit codes make sentinel audit a CI gate
+ CLI whose exit codes make sentinel audit a CI gate;
+ sentinel explain turns a verdict into per-finding
+ remediation and a suggested last-known-good version — advisory
+ only, it never rewrites a lockfile
Whole-tree gates: audit every package in an npm/yarn/pnpm lockfile,
write a CycloneDX SBOM, post the verdict to the PR via a GitHub
Action
Signed audit attestations (DSSE/in-toto, Ed25519) verified offline
as a deploy-time gate, plus known-malicious advisory and CVE-range
(SCA) detection
+ Identity and history signals: typosquat and dependency-confusion
+ detection, and release-anomaly findings — maintainer takeover,
+ dormancy resurrection, new capabilities in a patch release
+ Durable history and observability (opt-in, zero-dependency
+ SQLite): verdict trends, top-flagged packages, and a violation
+ timeline on the dashboard, the CLI, and /-/metrics
+ Hardened trust boundary: tarball fetches pinned to allowlisted
+ origins (no SSRF), Host-header spoofing refused, byte caps and
+ opt-in rate limits on expensive routes
Status
- The auditing proxy is the live wedge: deterministic engine, whole-tree
- lockfile gate, sandbox enforcement with runtime quarantine, MCP server,
- GitHub Action, signed policies and attestations, advisory + CVE
- detection. The long arc is policy and install-time permissions for the
- whole ecosystem.
+ What started as the audit-proxy wedge has grown into the full layer
+ (July 2026): signed per-enterprise policy and install-time permission
+ manifests, a deny-by-default capability sandbox, offline signature and
+ Sigstore-provenance verification, known-malicious (GHSA) and CVE-range
+ detection, supply-chain identity and release-anomaly heuristics,
+ whole-tree lockfile auditing with SBOMs and signed attestations, a
+ CI-native GitHub Action, an agent-native MCP server, durable
+ observability, and a hardened network trust boundary. Current work is
+ open-source launch prep; the long arc is policy and install-time
+ permissions for the whole ecosystem.