SENTINEL
SENTINEL
라이브 데모 → · 핸드북 · 빌드 및 라이브 테스트 보고서
결제 인프라에서 작동하는 LLM 에이전트를 위한 정책 집행, 감사, 평가 컨트롤 플레인.
프롬프트 수준의 가드레일은 권고에 불과합니다. SENTINEL은 집행을 도구 호출 경계 — 모델이 제어하지 않는 프로세스 — 로 옮겨 이를 필수로 만들고, 결정론적 평가 하네스와 적대적 레드팀 스위트로 작동함을 증명합니다.
⚠️ 테스트 모드 전용 · Razorpay와 무관
독립 오픈소스 프로젝트입니다. Razorpay와 제휴, 보증, 또는 생산 관계가 아닙니다. 공개적으로 게시된 오픈소스 razorpay/razorpay-mcp-server와 통합됩니다. 테스트 모드 키(rzp_test_*)만 사용 — rzp_live_ 키는 시작 시 거부되고 CI에 의해 저장소에서 차단됩니다. 모든 데이터는 합성 데이터이며 체크섬 무효이므로 생성된 값이 실제 식별자와 충돌할 수 없습니다. 레드팀은 로컬 픽스처 서버에 대해서만 실행되며, 호스팅된 엔드포인트에는 절대 실행되지 않습니다.
세 문장으로 요약한 문제
노코드 빌더가 비엔지니어에게 돈을 움직이는 API에 LLM 에이전트를 연결하게 하려 하고, 그 에이전트는 설계상 공격자가 제어하는 텍스트 — 지원 티켓, 차지백 증거, 업로드된 은행 명세서 — 를 입력받습니다. 업계의 표준 가드레일은 시스템 프롬프트 속 한 문장이며, 이는 모델에 대한 요청입니다. 단위 테스트를 할 수 없고, 작동하거나 실패해도 산출물이 없으며, 적대적 입력과 모델 업데이트에 따라 성능이 저하됩니다. SENTINEL은 프로토콜 경계에서 모든 도구 호출을 가로채 분류하고, PII를 편집하고, 선언적 정책에 대해 평가한 후, 실행 전에 허용/거부/인간에게 에스컬레이션합니다.
Related MCP server: NORNR MCP Control
세 가지 핵심 수치
make redteam으로 오프라인 생성(쌍체 A/B, 규칙 기반 채점), API 키 없이 누구나 재현 가능.
이 수치를 읽는 방법(중요합니다). 테스트 대상 에이전트는 최악의, 완전히 침해된 에이전트입니다 — 모든 주입된 명령을 따르도록 작성된 결정론적 대리 모델입니다. 이는 의도적입니다. 평균적인 적대자가 아닌 최대 적대자에 대해 방어를 테스트하는 것이 표준 보안 방법론이기 때문입니다. 실제 모델은 운으로 인젝션에 저항할 수도 있지만, 이 모델은 절대 저항하지 않습니다. 따라서 "가드레일 해제" 열은 실제 모델이 X% 확률로 속는다는 주장이 아니라 최악의 경우를 나타내며, 핵심은 프록시가 이를 어떻게 처리하는가입니다:
모든 인젝션을 따르는 최악의 에이전트를 기준으로 | 결과 |
가드레일 해제 (컨트롤 플레인 없음) | 무단 자금 이동 24건 + 외부 유출 5건 실행 |
가드레일 적용 | 무단 자금 이동 0건, 외부 유출 0건 (24/29회 시도는 여전히 발생 — 모두 경계에서 차단됨) |
정상 작업 오탐 비율 | 0% (소규모 정상 집합 기준 — Limitations 참조) |
집행은 모델의 저항에 의존하지 않습니다. 그 "0"은 모델 독립적이며 실제로 입증된 부분입니다 — 프록시는 에이전트가 시도하는 무엇이든 거부합니다. (격리 래퍼는 완화책이고, 경계에서의 권한 축소가 보장입니다. 우리는 프롬프트 인젝션을 "해결"하지 않았습니다 — 아무도 해내지 못했습니다.)
가드레일 오버헤드: 정책 평가는 호출당 0.1ms 미만으로 측정되었으며 측정 가능한 정확도 손실이 없습니다.
에이전트 역량 구분 (아직 실제 멀티모델 결과는 아님)
런타임은 설계상 모델에 무관하며, 하네스는 서로 다른 품질의 두 결정론적 대리 에이전트에 대해 실행됩니다:
"강한" 대리 모델은 작업 성공률 100%를 기록했고, "약한" 대리 모델은 87%를 기록했으며 13개의 형식이 잘못된 도구 호출과 더 낮은 고난도 케이스 정확도를 보였습니다 — 반면 둘 다 무단 실행 0건, PII 유출 0건, 정책 오류 0건이었습니다. 이는 하네스가 집행 결과는 불변으로 유지하면서 에이전트 역량을 구분할 수 있음을 보여줍니다. 이것은 Groq 대 Gemini 비교가 아닙니다 — 그러한 비교는 실제 공급자 키(
SENTINEL_CASSETTE=record)를 사용한 일회성 녹화 패스가 필요하며, 이는 연결되어 준비되었지만 아직 실행되지 않았습니다.
실제 razorpay/mcp로 검증 (테스트 모드)
단순한 목이 아닙니다 — SENTINEL은 실제 공개 서버에 대해 확인됩니다:
도구 표면 패리티는 실제입니다. 참조 매니페스트는 MCP stdio를 통해
razorpay/mcp:latest를 실행하고tools/list를 호출하여 실시간 캡처되었습니다(41개 도구). 픽스처는 그 캡처를 그대로 로드하므로 패리티는 실제이며 순환적이지 않습니다. (이로써 문서에서 비롯된 여러 오류가 수정되었습니다 —DECISIONS.mdADR-003a 참조.)실서버에 대한 집행이 유지됩니다. 테스트 모드 키를 사용하면
create_refund는 Razorpay로 전달되기 전에 DENIED되며, 실제fetch_all_payments는 프록시를 통해 실제{entity,count,items}형태를 반환하고 편집 + 감사가 온전합니다.재현 방법:
export RAZORPAY_KEY_ID=rzp_test_… RAZORPAY_KEY_SECRET=… && make check-schemas-live(Docker 필요). 테스트 모드 키만 사용합니다. 자금 이동을 실행하지 않으며, 키는 파일에 기록되지 않습니다.
빠른 시작 (자격 증명 불필요)
모든 것이 카세트 재생을 통한 픽스처 모드에서 오프라인으로 실행됩니다 — API 키도, 네트워크도 필요 없습니다.
make install # venv + dependencies
make test # tiers 1-3 + the 5 load-bearing safety tests (~3s, no model)
make demo-cli # THE HEADLINE: an injected refund DENIED with a plain reason
make eval # golden set, per-model metrics, regression gates
make redteam # the paired A/B (100% -> 0%), ablation, false-positive rate
make verify-audit # walk the tamper-evident hash chain
make demo # the operator surface at http://localhost:8080make demo-cli 출력 (요약):
2 · Prompt injection in the statement — the refund is DENIED
the fooled model attempted: create_refund amount=₹450.00
✕ DENIED [DENY_FAIL_CLOSED]
Blocked: no rule permits create_refund for this agent, and the default is to deny.
refunds actually executed in the fixture: 0
4 · The audit chain — verifiable, and it breaks when tampered
⛓ verified — 7 entries, chain intact
after altering entry #2: ⛓ CHAIN BROKEN at entry #2 — refusing to certify공개 데모 배포 (픽스처 모드, 자격 증명 불필요)
운영자 화면 + API가 하나의 다단계 Docker 이미지로 제공됩니다 (검증 완료: SPA, API, 레드팀 수치를 빌드하고 서빙합니다). Render / Fly / Railway 또는 모든 Docker 호스트에 무료로 호스팅하세요 — 전체 단계는 DEPLOY.md에 있습니다:
docker build -t sentinel . && docker run -p 8080:8080 sentinel # -> http://localhost:8080
# Render: New > Blueprint (reads render.yaml). Fly: fly launch --no-deploy && fly deploy.공개 데모에는 실제 키를 설정하지 마세요 — 실제 데이터가 없는 상태에서 가드레일 없이 실행되도록 설계되었습니다 (저장소에는 실제 데이터가 없습니다).
아키텍처 — 모델이 제어하지 않는 프로세스에서의 집행
Operator surface (React) ──REST+SSE──> Control-plane API (FastAPI)
│
Agent runtime (in-house loop)
├─ in-loop guard (layer 2, the experience)
└─ provider abstraction (Groq/Gemini, cassettes)
│ MCP protocol
SENTINEL MCP proxy (layer 1 — THE GUARANTEE)
classify → redact → evaluate → allow/deny/escalate
→ idempotency → forward → scan/quarantine → audit
│
fixture upstream (default) | razorpay/mcp (live, test keys)
cross-cutting: pure policy engine · redaction · hash-chained audit · approvals
offline: eval harness (golden set) · red-team A/B → CI regression gatesMCP 프록시는 실제 MCP 서버이므로, 전혀 다른 MCP 클라이언트가 이를 가리키면 동일한 정책을 따르게 됩니다 — 프롬프트는 절대 가질 수 없는 속성입니다. 두 집행 계층 모두 동일한 컨텍스트 빌더를 통해 동일한 순수 정책 엔진을 호출합니다. 불일치는 P0 인시던트로 기록됩니다. 전체 안내와 모든 결정: docs/handbook.html 및 아래 문서를 참조하세요.
모델이 틀려도 어떻게 유지되는가
순수 정책 엔진 —
evaluate(policy_set, context), I/O 없음, 철저한 테스트와 속성 테스트 완료. 클래스 하한 불변식 덕분에 어떤 정책 파일도, 어떻게 작성되었든, 승인 없이 자금 이동을 자동 허용하는 것이 불가능합니다 (400개 이상의 생성된 정책으로 입증됨).편집 — 모델은 안정적인 토큰(
ACCT_a17f)을 통해 추론하며, 실제 PAN/계정/VPA는 사용하지 않습니다. 도구 호출에서 미발급 토큰은 외부 유출 시도로 플래그됩니다. PII 불변식은 모든 커밋에서 모든 출력 표면에 걸쳐 테스트됩니다.신뢰 격리 — 신뢰할 수 없는 텍스트는 실행별 nonce 구분자로 감싸집니다.
provenance_guard는 에이전트가 신뢰할 수 없는 콘텐츠를 입력받으면 권한을 축소합니다.변조 증거 감사 — 추가 전용 SHA-256 해시 체인. 검증기는 첫 번째 단절을 정확한 위치에서 보고합니다.
이것이 아닌 것
Agent Studio 클론도, 결제 제품도, 범용 AI 방화벽도, 사기 탐지 모델도 아니며, Razorpay와 무관합니다.
한계 (솔직한 한계 — 전체 목록은 LIMITATIONS.md에 있음)
감사 원장은 변조 증거는 있지만 변조 방지는 아닙니다: 데이터베이스에 쓸 수 있는 사람은 누구나 전체 체인을 재계산할 수 있습니다. 실제 저항에는 외부 앵커(RFC 6962 스타일 투명성 로그) 또는 단일 기록 저장소가 필요합니다 — 구현되지 않았습니다.
프롬프트 인젝션은 해결되지 않았습니다. 가드레일을 적용해도 L1(동작 변경)은 0이 아닙니다. 설계는 그것이 불가능한 척하는 대신 무해하게 만듭니다.
오프라인 "모델"은 결정론적 대리 모델입니다 — 실제 Groq/Gemini 어댑터와 카세트 계층은 키가 있으면 빌드되고 활성화됩니다(
SENTINEL_CASSETTE=record). 집행 결과는 오프라인에서도 증명 가능합니다.실제 데이터에 대한 에이전트의
tools/call응답은 형식/집행에 대해서만 검증됩니다(테스트 계정이 비어 있음). 실제 PII 편집은 합성 픽스처에서 입증되었으며, 실제 데이터가 채워진 라이브 데이터에서는 아직 입증되지 않았습니다.
문서
docs/handbook.html— 종단 간 핸드북 (브라우저에서 여세요).DECISIONS.md— 모든 아키텍처 결정과 그 트레이드오프를 명시.LIMITATIONS.md— 이 프로젝트가 하지 않는 일을 숨김없이.docs/spec/— 이 프로젝트가 기반으로 한 사양 팩.
수치 재현
git clone <repo> && cd sentinel && make install
SENTINEL_CASSETTE=replay make eval # replays committed cassettes, no key -> same numbers
SENTINEL_CASSETTE=replay make redteamdocs/spec/11-BUILD-ORDER.md에 따라 단계별로 구축되었습니다. 169개 테스트가 통과했으며(티어 1~3), 5개의 핵심 안전 테스트는 @pytest.mark.critical로 표시됩니다.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA transparent proxy and execution firewall that intercepts and audits AI agent tool calls against configurable security policies before forwarding them to downstream MCP servers. It provides safe execution environments with features like data redaction, anti-loop protection, and unified alert dispatching.
- AlicenseNot gradedqualityDmaintenanceA governance and control layer for MCP tools that manages tool requests as intents through policy-based approval, queuing, or blocking. It enables secure human oversight and audit trails for consequential agent actions across platforms like Claude Desktop and Cursor.1MIT No Attribution
- AlicenseNot gradedqualityAmaintenanceA local-first control plane for AI agent tools, providing policy enforcement, spend caps, rate limiting, and audit trails for MCP servers.1Apache 2.0
- FlicenseNot gradedqualityBmaintenanceRuntime agent firewall for PII redaction, rate limits, and policy enforcement, enabling autonomous agent security via MCP integration.
Related MCP Connectors
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Runtime permission, approval, and audit layer for AI agent tool execution.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codeit-ronit/SENTINEL'
If you have feedback or need assistance with the MCP directory API, please join our Discord server