Skip to content

feat(sentinel): Agent Sentinel as a clean, signed TRACE Level 0 integration#53

Merged
imran-siddique merged 1 commit into
mainfrom
feat/agent-sentinel-integration
Jul 26, 2026
Merged

feat(sentinel): Agent Sentinel as a clean, signed TRACE Level 0 integration#53
imran-siddique merged 1 commit into
mainfrom
feat/agent-sentinel-integration

Conversation

@imran-siddique

Copy link
Copy Markdown
Contributor

Carries the Agent Sentinel work forward from the now-closed #7 (a1k7), consolidated under integrations/sentinel/ and finished to a mergeable, non-overclaiming state. Credited to the original author via Co-authored-by.

Why a fresh PR

#7 had gone quiet with six open blockers plus two security defects, and main still carries the messy top-level sentinel/ tree (wrong src/ layout, committed bytecode) from the earlier merge. This branch removes that tree and lands a single clean copy.

Review blockers from #7, resolved

  • Manifest: dropped the unschemad maintainer.name, fixed integrates_with to the trace enum, tightened the description, declared trace_conformance_level: 0.
  • Fixed the sentinel package import (main.py now uses sentinel.models); removed the divergent sibling schemas.py and the dead duplicate delegation detector.
  • Dockerfile / README / compose moved off the dead src.* layout; removed the absolute local path; documented the signing key.
  • Dependencies: httpx (not httpx2), added cryptography and PyJWT.
  • Removed the top-level sentinel/ tree and all committed bytecode; added a .gitignore.

Security fixes (both design calls confirmed with the maintainer)

  • Fail closed: a detector exception now forces DENY instead of being swallowed into an ADMIT (risk_engine).
  • Real signing: every enforcement emits an Ed25519-signed TRACE v0.1 JWT, conformant at Level 0 and offline-verifiable against cnf.jwk. Signing is mandatory (TRACE_PRIVATE_KEY_PEM); generation fails closed with no key rather than emitting an unsigned record.

Validation (local)

  • Manifest validates against schema/integration.schema.json (OK sentinel).
  • pytest green: detector, health endpoint, TRACE Level 0 conformance (agentrust-trace-tests TR-ENV/TR-SIG/TR-POL), and signature verification. 7 passed.

Note for the maintainer

Starlette's TestClient now emits a deprecation warning suggesting httpx2, so the earlier "unvetted lookalike" read on httpx2 may be worth revisiting. Tests pass on httpx, which I kept as the trusted package.

Closes #7 in spirit (already closed).

…integration

Carries forward the Agent Sentinel work from the closed #7 and consolidates it
under integrations/sentinel/, removing the stale top-level sentinel/ tree (wrong
src/ layout, committed bytecode) that the earlier merge left on main.

Resolves the review blockers from #7:
- manifest: drop unschemad maintainer.name, fix integrates_with to the trace
  enum, tighten the description, declare trace_conformance_level 0
- fix the sentinel package import (main.py now uses sentinel.models) and remove
  the divergent sibling schemas.py and the dead duplicate delegation detector
- Dockerfile/README/compose off the dead src.* layout; drop the absolute local
  path; document the required signing key
- requirements: httpx (not httpx2), add cryptography and PyJWT

Security fixes:
- fail closed: a detector exception now forces DENY instead of being swallowed
  into an ADMIT (risk_engine)
- real signing: every enforcement emits an Ed25519-signed TRACE v0.1 JWT,
  conformant at Level 0, offline-verifiable against cnf.jwk; signing is
  mandatory (TRACE_PRIVATE_KEY_PEM) and generation fails closed without a key

Tests: manifest validates against the integration schema; pytest covers the
detector, the health endpoint, TRACE Level 0 conformance (agentrust-trace-tests),
and signature verification. All green.

Co-authored-by: akhil <warikakhilesh@gmail.com>
@imran-siddique
imran-siddique merged commit 67a3028 into main Jul 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant