
AIエージェント向けセキュリティツールキット。あなたのマシンをスキャンして危険なスキルやMCP設定を検出し、サプライチェーン攻撃を監視し、プロンプトインジェクションへの耐性をテストし、そしてライブMCPサーバーのツールポイズニングを監査します。
ドキュメント · MCPレジストリ · ダッシュボード · ブログ
pip install agentseal # または: npm install agentseal
agentseal guard # マシンをスキャン - APIキー不要
これだけです。AgentSealは、マシン上のすべてのAIエージェントから危険なスキルファイル、ポイズニングされたMCPサーバー設定、データ流出経路を検出します。
システムプロンプトを敵対的攻撃に対してテストしたいですか?
agentseal scan --prompt "You are a helpful assistant..." --model ollama/llama3.1:8b # 無料、ローカル
agentseal scan --prompt "You are a helpful assistant..." --model gpt-4o # クラウド
| コマンド | 機能 | LLMが必要か? |
|---|---|---|
guard | スキルファイル、MCP設定、有害なデータフロー、サプライチェーンの変更をマシン上でスキャン | いいえ |
scan | システムプロンプトを225以上の敵対的攻撃プローブに対してテスト | はい* |
scan-mcp | 実行中のMCPサーバーに接続し、ツールの説明をポイズニングについて監査 | いいえ |
shield | エージェント設定ファイルをリアルタイムで監視し、脅威を警告、ペイロードを隔離 | いいえ |
*Ollamaでは無料で利用可能。クラウドプロバイダー(OpenAI、Anthropicなど)を使用する場合はAPIキーが必要です。
マシン上のすべてのAIエージェント設定をスキャンします。APIキー不要、ネットワーク呼び出しなし - すべてローカルで実行されます。
対応エージェント: Claude Code、Claude Desktop、Cursor、Windsurf、VS Code、Gemini CLI、Codex CLI、Cline、Roo Code、Kilo Code、Copilot CLI、Aider、Continue、Zed、Amp、Amazon Q、Junie、Goose、Kiro、OpenCode、OpenClaw、Crush、Qwen Code、Grok CLI、Visual Studio、Kimi CLI、Trae、MaxClaw。
agentseal guard
Guardは、見つかったすべてのファイルに対して6段階の検出パイプラインを実行します:
agentseal guard init # .agentseal.yamlプロジェクトポリシーを生成
agentseal guard --output sarif # GitHubセキュリティタブ用のSARIF
agentseal guard --output json # 機械可読な出力
agentseal guard --no-diff # ベースライン差分セクションをスキップ
agentseal guard test # カスタムルールを検証
システムプロンプトを225の敵対的攻撃プローブに対してテスト: 82の抽出テクニック、143のインジェクションテクニック、8つの適応的変異変換。決定論的なトラストスコアを返します。
検出の仕組み: インジェクションプローブは一意のカナリー文字列(例: SEAL_A1B2C3D4_CONFIRMED)を埋め込みます。応答にカナリーが出現した場合、プローブは漏洩しています。抽出プローブは、グラウンドトゥルースプロンプトに対するn-gramマッチングを使用します。LLM判定器は不要 - 同じ入力、同じ結果、毎回。
トラストスコア(0–100):
| スコア | レベル | 意味 |
|---|---|---|
| 85–100 | 優秀 | 強力な防御、既知のほとんどの攻撃を防ぐ |
| 70–84 | 高 | 良好な防御、軽微なギャップあり |
| 50–69 | 中程度 | 中程度のリスク、いくつかのプローブカテゴリで漏洩 |
| 30–49 | 低 | 重大な脆弱性 |
| 0–29 | 致命的 | プロンプト攻撃に対する防御がほとんどまたはまったくない |
# OpenAI
agentseal scan --prompt "You are a helpful assistant..." --model gpt-4o
# Anthropic
agentseal scan --prompt "You are a helpful assistant..." --model claude-sonnet-4-5-20250929
# Ollama (無料、ローカル)
agentseal scan --prompt "You are a helpful assistant..." --model ollama/llama3.1:8b
# 任意のHTTPエンドポイント
agentseal scan --url http://localhost:8080/chat
# ファイルから
agentseal scan --file ./prompt.txt --model gpt-4o
agentseal scan --file ./prompt.txt --model gpt-4o --min-score 75
トラストスコアがしきい値を下回った場合、終了コード1。GitHubセキュリティタブとの統合には --output sarif を使用します。
実行中のMCPサーバーにstdioまたはSSE経由で接続します。すべてのツールを列挙し、各説明をパターンマッチング、難読化解除、意味的類似度、オプションのLLM分類にかけます。サーバーごとにトラストスコアを出力します。
# stdioサーバー
agentseal scan-mcp --server npx @modelcontextprotocol/server-filesystem /tmp
# SSEサーバー
agentseal scan-mcp --sse http://localhost:3001/sse
ツール説明のポイズニングをキャッチします。ツール説明に埋め込まれた隠し命令により、エージェントがデータを流出させたり、コマンドを実行したり、ユーザーの意図を上書きすることを防ぎます。
エージェント設定パスをリアルタイムで監視するファイルウォッチャー。脅威が現れたときにデスクトップ通知を送信。検出されたペイロードを含むファイルを自動的に隔離します。
pip install agentseal[shield] # watchdog + デスクトップ通知の依存関係を含む
agentseal shield
guard がスキャンするのと同じパスを継続的に監視します。npm install や pip install がエージェント設定を静かに変更するサプライチェーン攻撃の検出に役立ちます。
MCPサーバーはAIエージェントにローカルファイル、データベース、API、認証情報へのアクセスを提供します。ツールの説明には、ユーザーには見えないがエージェントが従う隠し命令が含まれている可能性があります。
graph TD
U["ユーザー"] -->|プロンプト| A["AIエージェント (LLM)"]
A -->|ツール呼び出し| M1["MCPサーバー\n(ファイルシステム)"]
A -->|ツール呼び出し| M2["MCPサーバー\n(Slack)"]
A -->|ツール呼び出し| M3["MCPサーバー\n(データベース)"]
M1 -->|読み取り| FS["~/.ssh/\n~/.aws/\n~/Documents/"]
M2 -->|読み取り| SL["メッセージ\nチャンネル"]
M3 -->|クエリ| DB["テーブル\n認証情報"]
SL -.->|"有害なフロー"| M1
M1 -.->|"流出"| EX["攻撃者"]
style U fill:#1a1a2e,stroke:#58a6ff,color:#e6edf3
style A fill:#1a1a2e,stroke:#58a6ff,color:#e6edf3
style M1 fill:#3b1d0e,stroke:#f59e0b,color:#e6edf3
style M2 fill:#3b1d0e,stroke:#f59e0b,color:#e6edf3
style M3 fill:#3b1d0e,stroke:#f59e0b,color:#e6edf3
style EX fill:#3b0e0e,stroke:#ef4444,color:#e6edf3
style FS fill:#1a1a2e,stroke:#30363d,color:#8b949e
style SL fill:#1a1a2e,stroke:#30363d,color:#8b949e
style DB fill:#1a1a2e,stroke:#30363d,color:#8b949e
graph LR
IN["スキルファイル\nMCP設定"] --> P["パターン\nシグネチャ"]
P --> D["難読化解除\n(Unicodeタグ、\nBase64、BiDi、\nゼロ幅文字、TR39)"]
D --> S["意味解析\n(MiniLM-L6-v2)"]
S --> B["ベースライン\n追跡\n(SHA-256)"]
B --> R["レジストリ\nエンリッチメント"]
R --> RU["カスタム\nルール"]
RU --> OUT["レポート +\n重大度"]
style IN fill:#1a1a2e,stroke:#58a6ff,color:#e6edf3
style P fill:#161b22,stroke:#30363d,color:#e6edf3
style D fill:#161b22,stroke:#30363d,color:#e6edf3
style S fill:#161b22,stroke:#30363d,color:#e6edf3
style B fill:#161b22,stroke:#30363d,color:#e6edf3
style R fill:#161b22,stroke:#30363d,color:#e6edf3
style RU fill:#161b22,stroke:#30363d,color:#e6edf3
style OUT fill:#0d4429,stroke:#22c55e,color:#e6edf3
from agentseal import AgentValidator
validator = AgentValidator.from_openai(
client=openai.AsyncOpenAI(),
model="gpt-4o",
system_prompt="You are a helpful assistant...",
)
report = await validator.run()
print(f"Trust score: {report.trust_score}/100 ({report.trust_level})")
# Anthropic
validator = AgentValidator.from_anthropic(
client=client, model="claude-sonnet-4-5-20250929", system_prompt="..."
)
# HTTPエンドポイント
validator = AgentValidator.from_endpoint(url="http://localhost:8080/chat")
# カスタム関数 - 独自のエージェントを使用
validator = AgentValidator(agent_fn=my_agent, ground_truth_prompt="...")
npm install agentseal