SENTINEL
SENTINEL
ライブデモ → · ハンドブック · ビルド&ライブテストレポート
決済インフラ上で動作するLLMエージェント向けのポリシー適用・監査・評価コントロールプレーン。
プロンプトレベルのガードレールは助言に過ぎません。SENTINELは、適用をツール呼び出し境界(モデルが制御しないプロセス)に移すことでそれを必須にし、さらに決定的な評価ハーネスと敵対的レッドチームスイートで機能することを証明します。
⚠️ テストモードのみ · Razorpayとは無関係
独立したオープンソースプロジェクトです。Razorpayとは無関係であり、Razorpayによる承認・推奨・制作を受けたものではありません。 公開されているオープンソースの
razorpay/razorpay-mcp-server と統合します。
テストモードのキー(rzp_test_*)のみ対応 — rzp_live_ キーは起動時に拒否され、CIによってリポジトリからブロックされます。すべてのデータは合成データであり、チェックサム無効のため、生成された値が実際の識別子と衝突することはありません。レッドチームはローカルのフィクスチャサーバーに対してのみ実行され、ホストされたエンドポイントに対しては決して実行されません。
問題(3文で)
ノーコードビルダーが、非エンジニアに、お金を動かすAPIへLLMエージェントを向けさせようとしています。そして、そのエージェントは設計上、攻撃者が制御するテキスト(サポートチケット、チャージバックの証拠、アップロードされた銀行明細書)を取り込みます。業界標準のガードレールはシステムプロンプト内の一文であり、これはモデルへの要求に過ぎません。単体テストができず、成功しても失敗しても成果物を生成せず、敵対的入力やモデル更新によって劣化します。SENTINELは、すべてのツール呼び出しをプロトコル境界で傍受し、分類し、PIIを編集し、宣言的ポリシーに対して評価し、実行前に許可・拒否・人間へのエスカレーションを行います。
Related MCP server: NORNR MCP Control
主要な3つの数字
make redteam によってオフラインで生成(ペアA/B、ルールベースの採点)。APIキー不要で誰でも再現可能です。
これらの数字の読み方(重要です)。 テスト対象のエージェントは最悪ケースの、完全に侵害されたエージェントです。つまり、すべての注入命令に従うように書かれた決定的な代役です。これは意図的です。防御を平均的な敵ではなく最大の敵に対してテストするのは標準的なセキュリティ手法です。実際のモデルは運で注入に抵抗するかもしれませんが、この代役は決して抵抗しません。したがって、「ガードレールなし」の列は実際のモデルがX%の確率で騙されるという主張ではなく、最悪ケースであり、ポイントはプロキシがそれに対して何をするかです:
すべての注入に従う最悪ケースのエージェントに対して | 結果 |
ガードレールなし(コントロールプレーンなし) | 24件の不正な送金 + 5件の情報流出が実行された |
ガードレールあり | 0件の不正な送金、0件の情報流出(29件中24件の試行は依然として発生 — すべて境界でブロック) |
正当な作業の誤検知率 | 0% (小さな良性セットに基づく — 制限事項を参照) |
適用はモデルの抵抗に依存しません。 その「0」は、モデルに依存しない、真に証明された部分です — プロキシはエージェントが試みるものを拒否します。(隔離ラッパーは緩和策であり、境界での権限の絞り込みが保証です。私たちはプロンプトインジェクションを「解決」したわけではありません — 誰も解決していません。)
ガードレールのオーバーヘッド: ポリシー評価は、呼び出しあたり0.1ミリ秒未満の測定されたオーバーヘッドで、測定可能な精度の低下はありません。
エージェント能力の差別化(まだ実際のマルチモデル検証ではありません)
ランタイムは設計上モデルに依存せず、ハーネスは異なる品質の2つの決定的なスタンドインエージェントに対して実行されます:
「強い」スタンドインは100%のタスク成功率を記録し、「弱い」スタンドインは87%の成功率で13回の不正なツール呼び出しと低いハードケース精度を記録しました — 一方、両方とも0件の不正実行、0件のPII漏洩、0件のポリシーエラーでした。 これは、ハーネスが適用結果を不変に保ちながらエージェントの能力を差別化できることを示しています。これはGroq対Geminiの比較ではありません — それには実際のプロバイダーキーを使用した1回限りの記録パス(
SENTINEL_CASSETTE=record)が必要であり、配線は済んでいますがまだ実行されていません。
実際の razorpay/mcp(テストモード)に対して検証済み
モックだけではありません — SENTINELは実際の公開サーバーに対してチェックされています:
ツールサーフェスのパリティは本物です。 参照マニフェストは、MCP stdio上で
razorpay/mcp:latestを実行し、tools/list(41ツール)を呼び出すことでライブでキャプチャされました。フィクスチャはそのキャプチャをそのまま読み込むため、パリティは本物であり、循環的ではありません。(これにより、ドキュメント由来のいくつかの誤りが修正されました —DECISIONS.mdADR-003aを参照。)適用はライブサーバーに対しても有効です。 テストモードのキーを使用すると、
create_refundはRazorpayに転送される前に拒否され、実際の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は、1つのマルチステージ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/口座/VPAsは使用しません。ツール呼び出し内の未発行トークンは、フラグ付きの情報流出の試みです。PII不変条件は、すべてのコミットですべての出力サーフェスにわたってテストされます。信頼の隔離 — 信頼できないテキストは、実行ごとのナンス区切り文字でラップされます。
provenance_guardは、エージェントが信頼できないコンテンツを取り込むと、その権限を絞り込みます。改ざん検知可能な監査 — 追加専用のSHA-256ハッシュチェーン。検証者は、正確な位置で最初の破損を報告します。
これは何ではないか
Agent Studioのクローンでも、決済製品でも、汎用AIファイアウォールでも、不正検知モデルでもなく、Razorpayとは無関係です。
制限事項(正直なもの — 完全なリストは LIMITATIONS.md にあります)
監査台帳は改ざん検知可能であり、改ざん防止ではありません。データベースに書き込める人は誰でもチェーン全体を再計算できます。真の耐性には外部アンカー(RFC 6962スタイルの透明性ログ)または書き込み専用ストレージが必要です — 実装されていません。
プロンプトインジェクションは解決されていません。 L1(動作の変更)はガードレールを有効にしてもゼロではありません。設計はそれを不可能であると偽るのではなく、無害にします。
オフラインの「モデル」は決定的なスタンドインです — 実際の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