Skip to main content
Glama
haisamar

AgentGuard MCP

by haisamar

AgentGuard

AIエージェントのためのアイデンティティセキュリティ

AgentGuardは、自律型AIエージェントのためのアイデンティティ認識型認可レイヤーです。

各エージェントに独自のマシンアイデンティティを付与し、OAuthスコープでアクセスを制限し、機密操作の実行前にコンテキストポリシーを評価し、自律的な権限を停止すべき場合には、個別認証された人間の承認境界を導入します。

ライブプロダクト:
https://agentguard-eight.vercel.app

MCP認可バックエンド:
https://github.com/haisamar/agentguard-mcp


問題提起

AIエージェントは、ますます実システムに接続されるようになっています。

  • CRM

  • 財務ツール

  • サポートプラットフォーム

  • 社内API

  • データベース

  • MCPサーバー

しかし、エージェントをツールに接続すると、セキュリティ上の疑問が生じます。

エージェントが認証できるからといって、そのツールがサポートするすべてのことを実行する権限を付与すべきでしょうか?

通常は、いいえです。

営業エージェントは、次のことを行う必要があるかもしれません:

read CRM accounts
update opportunities
inspect support context

しかし、自動的に次のことを実行できるべきではありません:

issue refunds
export customer data
modify security settings

また、正当に返金権限を持つ財務エージェントであっても、高額な返金を実行する前に人間の承認が必要な場合があります。

AgentGuardは、アイデンティティ、認可、コンテキストポリシー、人間による制御を、AIエージェントの実行を中心にレイヤー化する方法を示します。


AgentGuardの機能

AgentGuardは、認可を複数のセキュリティ境界に分離します:

AI Agent
   ↓
Machine Identity
   ↓
OAuth Scope Authorization
   ↓
Contextual Policy
   ↓
Human Approval if Required
   ↓
Controlled Execution
   ↓
Audit Trail

認証は、無制限の権限を意味するものではありません。


ライブデモ

公開デモは、認証なしで試すことができます:

https://agentguard-eight.vercel.app/demo

3つの実際の永続化された認可シナリオが含まれています。


Related MCP server: Oakallow MCP Server

シナリオ1 — 人間による承認

財務エージェントが$750の返金を要求します。

Finance Agent
      ↓
Authenticated machine identity
      ↓
finance:refund scope verified
      ↓
Refund exceeds $500 autonomous threshold
      ↓
APPROVAL_REQUIRED
      ↓
Authenticated human administrator approves
      ↓
Finance Agent executes approved refund
      ↓
ALLOW

最終状態:

EXECUTED

シナリオ2 — 人間による拒否

同じ財務エージェントが、別の$750の返金を要求します。

エージェントは正しいOAuth権限を持っているため、要求はスコープチェックを通過します。

ただし、コンテキストポリシーでは人間の承認が必要です。

Finance Agent
      ↓
finance:refund ✓
      ↓
Refund > $500
      ↓
APPROVAL_REQUIRED
      ↓
Human Administrator
      ↓
DENY
      ↓
Finance Agent attempts execution
      ↓
DENY

最終状態:

DENIED

これは次のことを示しています:

アクションを要求する権限がエージェントにあるからといって、自律的に実行する権限があるとは限りません。


シナリオ3 — スコープによるブロック

営業エージェントが返金を試みます。

そのアイデンティティには次のものが含まれています:

crm:read
crm:write
support:read

しかし、保護されたツールには次のことが必要です:

finance:refund

AgentGuardはリクエストを即座にブロックします。

Sales Agent
      ↓
Authenticated
      ↓
Missing finance:refund
      ↓
DENY

コンテキストポリシーは評価されません。

人間によるレビューに到達することはありません。

リクエストは最小権限の認可境界で失敗します。


アーキテクチャ

AgentGuardは、マシン認証、最小権限の認可、コンテキストリスク判断、人間の承認を分離し、認証されたAIエージェントが自動的に無制限の権限を受け取ることがないようにします。

flowchart LR
    AGENT["AI Agent<br/>Sales / Finance"]
    AUTH0M["Auth0<br/>Machine Identity"]
    TOKEN["OAuth Access Token<br/>Scoped Permissions"]
    MCP["AgentGuard MCP<br/>Protected Tools"]
    SCOPE{"Scope<br/>Authorized?"}
    POLICY{"Contextual<br/>Policy"}
    APPROVAL["Approval Request<br/>Persisted"]
    AUTH0H["Auth0<br/>Human Identity"]
    HUMAN{"Human<br/>Decision"}
    EXEC["Controlled<br/>Execution"]
    BLOCK["Execution<br/>Blocked"]
    DB[("Supabase<br/>Approvals + Audit")]

    AGENT --> AUTH0M
    AUTH0M --> TOKEN
    TOKEN --> MCP
    MCP --> SCOPE

    SCOPE -->|"Missing scope"| BLOCK
    SCOPE -->|"Authorized"| POLICY

    POLICY -->|"Low risk"| EXEC
    POLICY -->|"Forbidden"| BLOCK
    POLICY -->|"Sensitive"| APPROVAL

    APPROVAL --> DB
    APPROVAL --> AUTH0H
    AUTH0H --> HUMAN

    HUMAN -->|"Approve"| EXEC
    HUMAN -->|"Deny"| BLOCK

    EXEC --> DB
    BLOCK --> DB

アイデンティティモデル

AgentGuardは、マシンアイデンティティ人間のアイデンティティを意図的に分離します。

マシンアイデンティティ

各エージェントランタイムは、個別のAuth0 Machine-to-Machineアイデンティティを受け取ります。

デモには3つのランタイムが含まれています。

アイデンティティ

役割

OAuthスコープ

営業エージェント

レベニューオペレーションズ

crm:readcrm:writesupport:read

財務エージェント

ファイナンスオペレーションズ

crm:readfinance:readfinance:refund

管理ランタイム

セキュリティ管理

agent:manage

これにより、複数のエージェントが広範な権限を持つ1つの資格情報を共有することを防ぎます。


人間のアイデンティティ

機密性の高い決定は、個別認証されたAuth0ユーザーを通じてレビューされます。

人間の管理者は、要求元のマシンと同じアイデンティティではありません。

例:

Requested by
Finance Agent
Machine Identity

Reviewed by
Human Administrator
Human Identity

これにより、次の間に明確な分離が生まれます:

machine authority

と:

human approval authority

認可モデル

AgentGuardは、レイヤー化された認可を使用します。

1. 認証

Auth0は、呼び出し元エージェントのアイデンティティを確立します。

MCPサーバーは、マシンアイデンティティを含むOAuthアクセストークンを受け取ります。


2. OAuthスコープ認可

保護された各MCPツールは、呼び出しに必要な権限を宣言します。

例:

issue_refund
requires
finance:refund

エージェントが必要なスコープを持っていない場合:

DENY

ポリシー評価や人間によるエスカレーションは必要ありません。


3. コンテキストポリシー

OAuthスコープチェックに合格しても、実行が自動的に保証されるわけではありません。

AgentGuardは、要求されたアクションのコンテキストを評価します。

現在のデモルールは次のとおりです:

Refund <= $500
→ ALLOW

Refund > $500
→ APPROVAL_REQUIRED

Customer data export
→ APPROVAL_REQUIRED

Customer deletion
→ DENY

これにより、次のことが分離されます:

Can this identity request this type of operation?

から:

Should this exact operation execute autonomously?

4. ヒューマン・イン・ザ・ループ認可

機密性の高い操作は一時停止され、永続化されます。

保護された管理者ダッシュボードに保留中のリクエストが表示されます。

認証された人間は、次のいずれかを選択できます:

Approve

または:

Deny

決定は永続化され、セキュリティ監査証跡に追加されます。


5. 承認バインド実行

人間の承認によって、アクションが直接実行されるわけではありません。

元のマシンアイデンティティが戻り、実行を要求します。

次に、AgentGuardは次のことを検証します:

Does the approval exist?

Is it APPROVED?

Does the approval belong to this agent?

Does it match this action?

Has it already been executed?

その場合にのみ、実行を続行できます。


6. リプレイ保護

正常に実行された承認は、次の状態に遷移します:

EXECUTED

同じ承認を2回目に実行しようとすると、ブロックされます。

EXECUTED
      ↓
second execution attempt
      ↓
DENY

リプレイ試行はセキュリティイベントとして記録されます。


管理者コンソール

保護されたダッシュボードは、次の場所にあります:

/dashboard

Auth0認証が必要です。

管理者コンソールは、以下を提供します:

  • マシンアイデンティティのインベントリ

  • 付与されたOAuthスコープ

  • 認証済みの人間のオペレーターコンテキスト

  • 保留中の承認

  • 承認/拒否コントロール

  • 認可トレースエクスプローラー

  • セキュリティアクティビティフィード

  • 詳細な監査イベントの検査

  • 承認履歴

  • マシンと人間のアイデンティティの視覚化

生のアイデンティティと監査コンテキストは、認証の背後に残ります。


パブリックデモ

公開デモは、次の場所に個別に存在します:

/demo

意図的に読み取り専用です。

データがブラウザに到達する前に、プライベートなセキュリティ情報が削除されます。

公開デモでは、次のものは公開されません:

Auth0 subject IDs
machine client IDs
administrator email addresses
OAuth access tokens
Supabase credentials
raw audit metadata
private approval identifiers

パブリックインターフェースは、サニタイズされたシナリオデータのみを受け取ります。


認可トレースエクスプローラー

AgentGuardには、永続化されたセキュリティシナリオを再構築するインタラクティブなトレースエクスプローラーが含まれています。

ユーザーは次の間で切り替えることができます:

Human Approved
Human Denied
Scope Blocked

各トレースは、次を視覚化します:

01 Agent Identity

02 Scope Check

03 Contextual Policy

04 Human Review

05 Execution

これにより、MCPインスペクター、Auth0ダッシュボード、データベースにアクセスしなくても、認可ライフサイクルを理解できます。


セキュリティアクティビティ

重要な認可決定はすべて、監査イベントとして記録されます。

決定の例は次のとおりです:

ALLOW
DENY
APPROVAL_REQUIRED
APPROVED

イベントを選択すると、次のような情報を含む詳細なセキュリティドロワーが開きます:

Identity
Identity Type
Decision
Action
Required Scope
Reason
Approval Reference
Timestamp
Event ID
Security Metadata

認可失敗の例:

Sales Agent

Action
issue_refund

Decision
DENY

Required Scope
finance:refund

Granted Scopes
crm:read
crm:write
support:read

Missing Scope
finance:refund

Security Event
authorization_failure

承認ライフサイクル

機密性の高いアクションは、永続化された承認レコードによって表されます。

利用可能な状態:

PENDING
APPROVED
DENIED
EXECUTED

成功フロー:

PENDING
   ↓
APPROVED
   ↓
EXECUTED

拒否フロー:

PENDING
   ↓
DENIED

AgentGuardはまた、次を分離します:

reviewed_by

から:

approved_by

拒否されたリクエストが正しく表現できるように:

status      = DENIED
reviewed_by = Human Administrator
approved_by = null

テクノロジー

AgentGuardは、以下を使用して構築されています:

アイデンティティと認可

Auth0
OAuth 2.0
Machine-to-Machine Applications
Human Authentication
Scoped Access Tokens

エージェントインターフェース

Model Context Protocol
FastMCP

バックエンド

Python
Starlette
Uvicorn

アプリケーション

Next.js 16
React
TypeScript
Tailwind CSS

永続化

Supabase
PostgreSQL
Row Level Security

デプロイ

Vercel
GitHub

リポジトリ構造

agentguard/
│
├── src/
│   ├── app/
│   │   ├── dashboard/
│   │   │   ├── ApprovalButtons.tsx
│   │   │   ├── SecurityActivity.tsx
│   │   │   ├── TraceExplorer.tsx
│   │   │   ├── actions.ts
│   │   │   ├── layout.tsx
│   │   │   └── page.tsx
│   │   │
│   │   ├── demo/
│   │   │   ├── PublicTraceExplorer.tsx
│   │   │   └── page.tsx
│   │   │
│   │   └── page.tsx
│   │
│   ├── lib/
│   │   ├── agentguard-data.ts
│   │   ├── auth0.ts
│   │   └── public-demo-data.ts
│   │
│   └── proxy.ts
│
├── package.json
└── README.md

Python MCP認可サーバーは、個別に保守されています:

https://github.com/haisamar/agentguard-mcp


バックエンドMCPサーバー

コンパニオンバックエンドは、以下を実装しています:

  • Auth0アクセストークンの検証

  • 保護されたリソースのOAuthメタデータ

  • MCPツールの認可

  • 必須スコープの適用

  • コンテキストポリシー評価

  • 承認の作成

  • 人間の承認の適用

  • 承認バインド実行

  • リプレイ保護

  • Supabaseの永続化

  • セキュリティ監査ログ

バックエンドリポジトリ:

https://github.com/haisamar/agentguard-mcp


MCPツール

現在のセキュリティプロトタイプには、以下が含まれます:

search_accounts
issue_refund
list_pending_approvals
approve_action
execute_approved_refund

例:

Finance Agent
finance:refund
      ↓
issue_refund($100)
      ↓
ALLOW

対比:

Finance Agent
finance:refund
      ↓
issue_refund($750)
      ↓
APPROVAL_REQUIRED

対比:

Sales Agent
no finance:refund
      ↓
issue_refund($750)
      ↓
DENY

データベースセキュリティ

承認レコードと監査レコードは、Supabase/PostgreSQLに保存されます。

基になるテーブルでは行レベルセキュリティが有効になっています。

機密性の高いAgentGuardレコードに対して、意図的に公開ブラウザポリシーは定義されていません。

サーバーサイドコンポーネントは、保護された環境資格情報を使用します。

SupabaseシークレットキーがクライアントサイドのJavaScriptに送信されることはありません。

公開デモ情報は、インタラクティブなクライアントコンポーネントに渡される前に、サーバーサイドでサニタイズされます。


ローカル開発

要件

Node.js
Auth0 tenant
Supabase project
AgentGuard MCP backend

クローン:

git clone https://github.com/haisamar/agentguard.git
cd agentguard

インストール:

npm install

作成:

.env.local

独自の環境設定を使用します。

変数の例:

SUPABASE_URL=
SUPABASE_SECRET_KEY=

AUTH0_DOMAIN=
AUTH0_CLIENT_ID=
AUTH0_CLIENT_SECRET=
AUTH0_SECRET=

APP_BASE_URL=http://localhost:3000

AGENTGUARD_ADMIN_EMAIL=

.env.localをコミットしないでください。

実行:

npm run dev

次に開きます:

http://localhost:3000

ルートモデル

/
Public product page

/demo
Public sanitized security demo

/dashboard
Auth0-protected administrator console

この分離により、特権管理者機能を公開せずに、プロジェクトをポートフォリオプロジェクトとして簡単にレビューできるようになります。


本番

フロントエンドはVercelにデプロイされています:

https://agentguard-eight.vercel.app

本番認証では、明示的な本番コールバック、ログアウト、オリジンURLを持つAuth0 Regular Web Applicationを使用します。

シークレットはVercel環境変数として保存され、Gitにコミットされません。


実証されたセキュリティ境界

AgentGuardは、1つのシステムでいくつかのアイデンティティセキュリティの概念を示しています:

認証≠認可

認証されたエージェントでも、拒否される可能性があります。

最小権限

エージェントは、その役割に必要なスコープのみを受け取ります。

コンテキスト認識型認可

認可は、呼び出し元だけでなく、アクションの詳細に依存する場合があります。

職務分離

マシンがアクションを要求し、人間が独立して承認できます。

ヒューマン・イン・ザ・ループ制御

自律実行は、定義されたリスク境界で停止できます。

承認バインド実行

承認は、要求元のアイデンティティとアクションに関連付けられています。

リプレイ保護

以前に実行された承認を再利用することはできません。

監査可能性

認可の決定は、アイデンティティと決定コンテキストとともに永続化されます。

公開/非公開の分離

ポートフォリオ閲覧者は、管理データにアクセスすることなく、サニタイズされたシナリオを調べることができます。


探求したかったこと

AgentGuardは、次の質問を調査するために構築されました:

ユーザーが常に人間であるとは限らない場合、アイデンティティセキュリティはどのようになるのでしょうか?

従来のアプリケーションセキュリティは、人間が認証してシステムと直接対話することを前提としていることがよくあります。

AIエージェントはそのモデルを変えます。

自律ランタイムは、次のことができます:

call APIs
use tools
modify records
trigger workflows
take financial actions

そのため、エージェントレイヤーではアイデンティティと認可がますます重要になっています。

AgentGuardは、次のような使い慣れたIAMの概念がどのように:

machine identity
OAuth scopes
least privilege
separation of duties
human approval
auditability

AIエージェントの実行に適用できるかを探求します。


現在の範囲

AgentGuardは、セキュリティポートフォリオのプロトタイプであり、本番のIAM製品ではありません。

意図的な制限には、次のものがあります:

  • コンテキストポリシーは現在コードで定義されています

  • マシンアイデンティティはデモンストレーションの役割にマッピングされています

  • 人間の管理者認可は現在、アプリケーションレベルの許可リストを使用しています

  • ポリシー管理にはまだ独自のコントロールプレーンがありません

  • データベース監査レコードは暗号化によって不変ではありません

  • 本番の分散ロックはプロトタイプの範囲外です

  • MCPバックエンドのデプロイは、管理されたテスト用に設計されています

  • 承認の有効期限は現在実装されていません

これらの制限は、隠すのではなく、意図的に文書化されています。


可能な拡張

将来のバージョンでは、次のことを検討できます:

Auth0 role-based administration
policy-as-code
policy versioning
agent identity registry
workload identity federation
delegated authorization
resource-level authorization
organization isolation
approval expiration
time-bound privileges
step-up authentication
signed audit events
SIEM integration
policy simulation
risk scoring
dynamic authorization
production MCP deployment

関連リポジトリ

AgentGuard MCP

Python認可サーバー、ポリシーエンジン、承認の適用、監査の永続化:

https://github.com/haisamar/agentguard-mcp


ライブプロジェクト

AgentGuard

https://agentguard-eight.vercel.app

インタラクティブデモ

https://agentguard-eight.vercel.app/demo

管理者コンソール

https://agentguard-eight.vercel.app/dashboard

認証が必要です。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    1
    MIT No Attribution
  • A
    license
    Not graded
    quality
    B
    maintenance
    Runtime permission, approval, and audit governance for AI agent tool execution, enabling human oversight of risky actions via an MCP server.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that provides a security gateway for AI agents, enforcing allow/confirm/deny policies on tool calls and requiring human approval for risky operations, with full audit logging.
  • F
    license
    Not graded
    quality
    C
    maintenance
    A protected Model Context Protocol server that gives AI agents distinct machine identities, enforces least-privilege OAuth permissions, applies contextual authorization policies, and pauses sensitive actions for human approval.

View all related MCP servers

Related MCP Connectors

  • Runtime permission, approval, and audit layer for AI agent tool execution.

  • Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.

  • See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.

View all MCP Connectors

Latest Blog Posts

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/haisamar/agentguard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server