HOL Guard について
HOL Guard は、コマンド、ファイルアクセス、インストール、MCP 呼び出しなどを実行前に確認するローカル優先の AI エージェント向けセキュリティレイヤーです。ポリシーに基づく承認、判断記録、スキャンを必要とする利用者やプラグイン開発者を対象とします。
主な機能
- 01実行前のコマンドとファイルアクセスの確認
- 02シークレット漏えいとプロンプトインジェクションの検出
- 03ポリシーに応じた許可・拒否・承認要求
- 04ローカル判断レシートの記録
- 05プラグイン、スキル、MCP 連携のスキャン
活用シーン
- 01エージェント実行前の危険なシェルコマンドの確認
- 02機密ファイルや認証情報に関わる操作の承認
- 03パッケージやプラグインのサプライチェーンリスク確認
- 04公開前のエージェント用プラグインとスキルの検証
MCP 対応
対応するフックと管理プロキシを通じて、MCP サーバー設定とツール呼び出しを検査します。ポリシーに基づき、許可、拒否、承認要求を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい |
詳細
HOL Guard:AI エージェント向けオープンソースのウイルス対策ソフト
![]() | AI の危険な操作がマシンを侵害する前に阻止します。 HOL Guard は、AI エージェント、ツール、プラグイン、スキル、MCP サーバー、パッケージのインストールを保護する、ローカル優先のセキュリティレイヤーです。 HOL Guard をインストール ドキュメントを読む PyPI パッケージ( hol-guard)問題を報告 |
|---|
HOL Guard は、エージェントの操作を実行前に確認します。対象となるのは、シェルコマンド、ファイルアクセス、パッケージのインストール、MCP ツールの呼び出しです。シークレットの漏えい、破壊的な操作、プロンプトインジェクション、サプライチェーンのリスクを検出し、ポリシーに従って許可、ブロック、または承認を要求します。
アカウントなしでローカルに実行できます。CLI とローカルダッシュボードを使って保護を管理し、承認を処理し、判断履歴を確認できます。オプションの Guard Cloud を利用すると、履歴の共有、チームポリシー、フリート管理が追加されます。
はじめに · 対応エージェント · プラグインスキャナー · ドキュメント · 拡張機能への貢献 · アダプターへの貢献 · 開発
HOL Guard のインストール
Python 3.10 以降、pipx、および対応するネイティブランタイムが必要です。インストール前に、プラットフォームのサポートと Windows ARM64 のセットアップに関する注意事項を確認してください。
pipx install hol-guard
hol-guard init
初回起動時のウィザードで、サポート対象のエージェントが検出され、保護のセットアップ手順が案内されます。ダッシュボードを開く、エージェント連携をインストールする、オプションのクラウドサービスに接続するといったセットアップの変更を行う前に、その都度確認されます。
インストールを確認します。
hol-guard --version
hol-guard status
既存のインストールを更新するには、次のコマンドを実行します。
hol-guard update
手動でセットアップする場合は、インストールガイドを参照してください。アップグレードに関する情報を含む注釈付きリリースノートはhol.org/guard/releasesで、リリースおよびプレリリースの一覧はGitHub のリリースページで確認できます。
HOL Guard の保護対象
| 対象 | 保護内容 |
|---|---|
| シェルコマンドとファイルアクセス | 破壊的な操作、機密ファイルへのアクセス、認証情報の漏えい、疑わしい外部送信コマンドを確認します。 |
| パッケージのインストール | インストール前に、サポート対象のパッケージマネージャーの操作をサプライチェーンインテリジェンスと照合して評価します。 |
| プラグイン、スキル、エージェントの設定 | ローカルの成果物を一覧表示し、起動前に新規または変更されたツールを確認します。 |
| MCP サーバーとツール | サーバーの設定を検査し、サポート対象のフックと管理対象プロキシを通じてツール呼び出しを確認します。 |
| プロンプトとツールの結果 | サポート対象のイベントをスクリーニングし、プロンプトインジェクションや機密情報を検出します。 |
| 承認と証跡 | 判断をネイティブのプロンプトまたは承認センターに振り分け、確認用のローカルレシートを記録します。 |
Guard は、ネイティブのエージェントフック、管理対象の MCP プロキシ、起動連携を通じて接続します。保護範囲は、各エージェントが公開するイベントによって異なります。サポートマトリックスでは、連携ごとの適用範囲、承認の通知方法、障害時の動作について説明しています。
サポート対象の AI エージェント
Codex、Claude Code、GitHub Copilot CLI、Cursor、Cline、Gemini CLI、Grok、Hermes、Kimi Code、Pi、oh-my-pi、OpenClaw、OpenCode、Antigravity、ZCode、Devin。Paseoは、ネイティブのプロバイダー連携を通じてサポートされ、対応範囲はプロバイダーごとに異なります。
たとえば、Codex を明示的にセットアップするには、次のコマンドを実行します。
hol-guard install codex
hol-guard run codex --dry-run
hol-guard run codex
ドライランでは、起動前に現在の成果物の状態が記録されます。Codex の場合、Guard はネイティブのツール実行前フックをインストールし、フックが見つからない、または無効になっている場合は、管理対象の起動を拒否します。
エージェントのサポートマトリックス · トラブルシューティング
日常的な使い方
| タスク | コマンド |
|---|---|
| 保護状況を確認する | hol-guard status |
| エージェント連携を診断する | hol-guard doctor codex |
| 起動前に変更内容を確認する | hol-guard diff codex |
| 保留中の承認を確認する | hol-guard approvals |
| リクエストを承認または拒否する | hol-guard approvals approve <request-id> / hol-guard approvals deny <request-id> |
| 判断履歴を確認する | hol-guard receipts |
| 追跡対象の成果物を一覧表示する | hol-guard inventory |
| AI の部品表をエクスポートする | hol-guard abom --format json |
| ワークスペースの依存関係をスキャンする | hol-guard supply-chain scan |
| オプションのクラウド同期に接続する | hol-guard connect |
一時停止中のコマンドを確認する
コマンドの分類と照合ルールを確認します。
hol-guard command test 'rm -rf ./build'
hol-guard command explain 'git clean -ndx'
hol-guard command extensions command.git --json
command test と command explain は、コマンドを実行したり承認を作成したりせずに検査します。保留中のリクエストを解決するには hol-guard approvals を使用し、記録された判断を確認するには hol-guard receipts を使用します。
拡張機能ディレクトリには、Rust でコンパイルされたカタログから生成されたコマンド対応状況が記載されています。外部からの貢献を受け入れるには、明示的なオプトインが必要です。必須のコア保護機能は常に有効です。対応範囲を追加するには、拡張機能への貢献ガイドに従ってください。
パッケージを確認する
hol-guard supply-chain sync
hol-guard supply-chain scan
hol-guard supply-chain explain [email protected] --ecosystem npm
パッケージの判定結果には、利用可能なアドバイザリー情報とエコシステムの対応状況が含まれます。パッケージマネージャーのインターセプトについてはスタートガイドを、誤検知への対処については修正ガイドを参照してください。
プラグインスキャナー
このリポジトリには、エージェントのプラグイン、スキル、MCP 連携を公開する前にセキュリティと品質を確認したいメンテナー向けの CLI、plugin-scanner も含まれています。
pipx install plugin-scanner
plugin-scanner scan .
plugin-scanner lint .
plugin-scanner verify .
| コマンド | 目的 |
|---|---|
scan | 検出されたパッケージの各要素にわたるセキュリティ上の指摘事項と品質レポートを表示します。 |
lint | ルール単位で作成時のフィードバックを提供します。 |
verify | インストール対象とランタイムの準備状況を確認します。 |
submit | 1 つのプラグインパッケージの提出用アーティファクトを作成します。 |
doctor | コンポーネントの診断とトラブルシューティング用バンドルを作成します。 |
スキャナーは、Codex、Claude Code、DeepSeek Harness、Gemini CLI、Kimi Code、OpenCode のパッケージ形式を検出します。plugin-scanner --list-ecosystems で形式を一覧表示するか、--ecosystem で 1 つ選択してください。Codex マーケットプレイスのルートでは、ローカルのプラグインエントリーを自動的に検出します。
マニフェスト、シークレット、MCP のトランスポートとコマンドの設定、承認のデフォルト値、スキル、依存関係のロックファイル、GitHub Actions の権限をチェックします。Cisco のオプション連携により、スキルと MCP の分析を追加できます。レポートはテキスト、JSON、Markdown、SARIF に対応しています。
plugin-scanner scan . --format sarif --output plugin-scanner.sarif
plugin-scanner scan . --fail-on-severity high
品質グレードは、各パッケージに適用されるチェックを使用します。信頼スコアリングでは、これとは別の来歴と重み付けが用いられます。スキル、MCP、プラグインのスコアリング資料を参照してください。
すべてのランタイム向けにプラグインをパッケージ化する
hol-guard plugin は Plugin Kit です。Claude Code プラグイン、Codex プラグイン、Gemini CLI 拡張機能、MCP Registry の server.json、スキルのフォルダーなど、1 つのプラグインソースを指定すると、ソースを検査し、利用可能な各エージェントランタイム向けにすぐに読み込めるコピーを書き出します。ローカルで実行され、指定したフォルダーだけを読み取り、ネットワーク通信は行いません。
hol-guard plugin check # what marketplaces and runtime loaders would reject
hol-guard plugin package # writes dist/hol-plugin/<runtime>/ for each runtime
hol-guard plugin convert --to agent-plugins # Agent Plugins 1.0 package, checked against the spec
hol-guard plugin links # install commands per runtime, plus listing links
hol-guard plugin card # draft .well-known plugin card as JSON
hol-guard plugin init --name my-plugin # scaffold a new plugin in an empty folder
対応ランタイム:claude-code、codex、gemini-cli、cursor、vscode、opencode、mcp-registry、agent-skills、agent-plugins。Plugin Kit ガイドを参照してください。
GitHub Actions
プラグインリポジトリにスキャナーを追加します。
name: Plugin security
on: [push, pull_request]
permissions:
contents: read
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: hashgraph-online/ai-plugin-scanner-action@fdb49f9d85321a2ced2933301b395dd3c1ce9c8f # v1.2.631
with:
plugin_dir: "."
min_score: 80
fail_on_severity: high
SARIF のアップロード、提出ワークフロー、機械可読な出力については、アクションのドキュメントを参照してください。アクションのソースは action/ で管理されています。
Cisco によるオプション分析
基本パッケージは Cisco の依存関係なしで動作します。Cisco のスキルスキャンを追加するには、Python 3.11 から 3.14 を使用し、分離環境に追加パッケージをインストールします。
pipx install 'plugin-scanner[cisco]'
Cisco による MCP 分析には、リポジトリのDocker イメージまたは cisco-mcp 依存関係グループを使用します。
uv sync --extra dev --extra cisco --group cisco-mcp --python 3.13
uv run plugin-scanner scan . --cisco-skill-scan on --cisco-mcp-scan on
公開されている cisco 追加パッケージはスキルスキャンを提供します。別の cisco-mcp グループは MCP スキャナーを提供します。依存関係のバージョンと Python の制約は pyproject.toml で管理されています。
エコシステムのサポート
| エコシステム | 検出対象 |
|---|---|
| Codex | .codex-plugin/plugin.json、marketplace.json、.agents/plugins/marketplace.json |
| Claude Code | .claude-plugin/plugin.json、.claude-plugin/marketplace.json |
| DeepSeek Harness | dsh.bundle を含む package.json、宣言済みパッチ、Cordis の apply(ctx) エクスポート、またはパッチのみのバンドルの場合は "patch" に設定された dsh.bundle.mode |
| Gemini CLI | gemini-extension.json、commands/**/*.toml |
| Kimi Code | kimi.plugin.json、.kimi-plugin/plugin.json、宣言済みのスキル、エージェント、コマンド、プロンプト、MCP サーバー |
| OpenCode | opencode.json、opencode.jsonc、.opencode/commands、.opencode/plugins |
--ecosystem auto を使用するとリポジトリ内のサポート対象パッケージを検出できます。また、エコシステムを明示的に選択することもできます。
plugin-scanner scan ./plugins-repo --ecosystem claude
plugin-scanner scan ./dsh-plugin --ecosystem deepseek-harness
スキャナーのチェック項目
| カテゴリ | 対象範囲 |
|---|---|
| マニフェストの検証 | 必須フィールド、バージョン、宣言済みパス、インターフェースのメタデータ、リンク、アセット。 |
| セキュリティ | ハードコードされたシークレット、安全でない MCP コマンドとトランスポート、リスクの高い承認の既定値。 |
| 運用セキュリティ | GitHub Actions の権限と固定された依存関係、特権付きチェックアウトのパターン、Dependabot、ロックファイル。 |
| プラグインのパッケージ化 | README とライセンスファイル、スキルのフロントマター、無視ルール、誤ってコミットされた環境ファイル。 |
| マーケットプレイス | マニフェストの有効性、ローカルパッケージの検出、安全なソースパス。 |
| スキルと MCP の分析 | オプションの Cisco 統合によるアナライザーの利用可能性、検出結果、分析可能性。 |
| コード品質 | 動的なコード実行とシェルインジェクションのパターン。 |
信頼スコアの仕組み
Plugin Scanner は、信頼の来歴とともに品質グレードを報告します。品質スコアは適用可能なチェック全体で正規化されるため、オプションの対象がパッケージのグレードを不当に引き上げることはありません。
スキルの信頼性では、HCS-28 のベースラインアダプター ID、重み、分母のルールを使用します。MCP と Codex プラグインの信頼性では、ローカル仕様に記載された明示的なアダプター、重み、寄与モードを使用します。
CLI の使用方法
# Structured security report
plugin-scanner scan ./my-plugin --format json --profile public-marketplace
# Inspect authoring rules
plugin-scanner lint ./my-plugin --list-rules
plugin-scanner lint ./my-plugin --explain README_MISSING
# Apply supported mechanical fixes
plugin-scanner lint ./my-plugin --fix --profile strict-security
# Verify package readiness; --online permits live probes
plugin-scanner verify ./my-plugin --format json
plugin-scanner verify ./my-plugin --online --format text
# Generate a submission artifact for one plugin
plugin-scanner submit ./my-plugin --profile public-marketplace --attest dist/plugin-quality.json
# Collect component diagnostics
plugin-scanner doctor ./my-plugin --component mcp --bundle dist/doctor.zip
リポジトリのマーケットプレイスでは、scan、lint、verify、doctor の対象にルートを指定できます。submit の対象は個々のプラグインパッケージです。
Codex 仕様との整合性
スキャナーは、Codex のプラグインマニフェスト、インターフェースのメタデータ、宣言済みアセット、マーケットプレイスパッケージを認識します。
- ローカルマニフェストのパスには
./プレフィックスを使用します。lint --fixはこれを保持または追加します。 .agents/plugins/marketplace.jsonが推奨されるマーケットプレイスの場所です。互換性のため、ルートのmarketplace.jsonもサポートされています。- インターフェースの検証では、文書化されていない
typeフィールドを必須とせず、宣言済みのリンクとアセットをチェックします。 verify --onlineは HTTP リモートの到達可能性をチェックします。Stdio サーバーの実行はスキップされ、手動レビューの対象となります。
上流の形式については、Codex プラグインのドキュメントとModel Context Protocol の仕様をご覧ください。
設定とベースラインの例
スキャナーは .plugin-scanner.toml で設定します。
[scanner]
profile = "public-marketplace"
baseline_file = "baseline.txt"
ignore_paths = ["tests/*", "fixtures/*"]
[rules]
disabled = ["README_MISSING"]
severity_overrides = { CODEXIGNORE_MISSING = "low" }
GitHub Action が判定を変更できるようにするには、リポジトリが所有する設定とベースラインに対して trust_repository_policy: true が必要です。このオプションは、ワークフローで信頼する方針に対してのみ有効にしてください。
レポート形式
| 形式 | 用途 |
|---|---|
text | カテゴリごとの合計と検出結果を含むターミナル向けの概要。 |
json | スクリプトや統合向けの構造化レポート。 |
markdown | プルリクエストやイシューでのレビューに適したレポート。 |
sarif | GitHub のコードスキャンとセキュリティ自動化。 |
GitHub Action
AI Plugin Scanner Action は、セキュリティゲート、SARIF のアップロード、申請の受付、レジストリペイロードに対応しています。ソースは action/ にあり、公開ワークフローでアクションバンドルを配布しています。
従来の HOL Codex Plugin Scanner Action も、既存のワークフロー向けに引き続き利用できます。
プラグイン作成者の申請フロー
プラグインが設定済みのしきい値を満たしたときに申請イシューを新規作成または再利用するには、submission_enabled: true を指定します。submission_token には、対象の申請リポジトリでイシューを作成する権限が必要です。アクションは、申請ステータスとイシューの URL を出力します。
submission_score_threshold、submission_token、および対象リポジトリのオプションについては、アクションの入力リファレンスを参照してください。
プラグインエコシステムの自動化向けレジストリペイロード
レジストリまたはバッジのパイプライン向けに機械可読ペイロードを書き出すには、registry_payload_output を設定します。また、アクションは score、grade、grade_label、max_severity、findings_total の出力を提供し、ジョブサマリーを書き出すこともできます。
HOL Registry Broker plugin は、HOL Plugin Registry にあるエージェントプラグインの一例です。レジストリの掲載情報には、最新の信頼情報が記載されています。
HOL Guard を選ぶ理由
AI エージェントは、1 つのセッション内でコマンドの実行、依存関係のインストール、ファイルの読み取り、外部ツールの呼び出しを行うことができます。HOL Guard は、サポート対象の実行ポイントでそれらのアクションを確認し、ポリシーによる判断、承認リクエスト、証跡をまとめて管理します。
開発者のマシン上での AI エージェントのセキュリティ、接続されたツールを対象とする MCP セキュリティ、パッケージやプラグインのサプライチェーンチェックに使用できます。チームはローカルでの保護を維持しながら、Guard Cloud を追加して承認とポリシー管理を共有できます。
よくある質問
HOL Guard とは何ですか?
HOL Guard は、AI エージェント向けのオープンソースのウイルス対策およびランタイム保護ツールです。サポート対象のツール呼び出し、シェルコマンド、ファイルアクセス、パッケージ操作を確認し、シークレットの漏えい、プロンプトインジェクション、破壊的な操作、悪意のある依存関係などのリスクを検出します。
HOL Guard はクラウドアカウントなしで動作しますか?
はい。ローカル保護、CLI コマンド、承認、証跡は、サインインせずに利用できます。Guard Cloud は任意で利用でき、証跡の同期、チーム管理、フリートの可視性を追加します。機能の違いについては、ローカル Guard と Guard Cloudを参照してください。
HOL Guard がサポートする AI エージェントはどれですか?
Guard には、Codex、Claude Code、GitHub Copilot CLI、Cursor、Cline、Gemini CLI、Grok、Hermes、Kimi Code、Pi、oh-my-pi、OpenClaw、OpenCode、Antigravity、ZCode、Devin 向けのアダプターが含まれています。Paseo は、プロバイダーごとのカバレッジで、これらのネイティブなプロバイダー統合を通じてサポートされています。サポートマトリクスでは、各アダプターがサポートするイベントと適用経路について説明しています。
HOL Guard と Plugin Scanner の違いは何ですか?
マシン上のエージェントのアクティビティを保護するには hol-guard をインストールします。プラグインパッケージを検査し、CI でセキュリティと品質のチェックを適用するには plugin-scanner をインストールします。このリポジトリでは、両方の配布物をビルドして公開しています。
HOL Guard は MCP サーバーをどのように保護しますか?
Guard は MCP サーバーの設定を検査し、エージェントフックと管理対象のプロキシを通じて、サポート対象の MCP ツール呼び出しを確認します。Plugin Scanner は MCP の設定と HTTP によるリモート到達性をチェックします。また、オプションの Cisco MCP 分析により、静的なセキュリティ検出結果を追加できます。
Guard がコマンドを一時停止したのはなぜですか?
アクションには、現在有効なポリシーに基づく承認が必要な場合や、そのツールまたはアーティファクトが変更された場合があります。まず hol-guard approvals を実行し、hol-guard command explain '<command>' でコマンドを調べてから、hol-guard receipts で記録された判断を確認してください。
ドキュメント
登録エラーや古いネイティブ権限に関するエラーについては、拡張機能コントロールの復旧を参照してください。
| ガイド | 内容 |
|---|---|
| はじめに | インストール、手動セットアップ、パッケージ保護、一般的なコマンドについて説明します。 |
| エージェントのサポート | 統合範囲と承認の動作について説明します。 |
| アーキテクチャ | ランタイムコンポーネントと判断のフローについて説明します。 |
| ポリシー仕様 | GuardPolicy ドキュメントの形式について説明します。 |
| ポリシーレシピ | 一般的なワークフローの設定例を紹介します。 |
| 拡張機能 | 組み込みコマンドルールとコントリビューションのガイドラインについて説明します。 |
| ネイティブ拡張機能の作成 | 正規 JSON ソース、Rust コンパイラー、ポータブルなフィクスチャ、レビューキットについて説明します。 |
| 拡張機能のコントリビュート | CLI を使って新しい拡張機能を生成、レビュー、統合、テストします。 |
| ローカルとクラウド | ローカル機能とオプションのクラウドサービスについて説明します。 |
| トラブルシューティング | 診断と復旧について説明します。 |
| セキュリティ | 脆弱性の報告と開示ポリシーについて説明します。 |
新しい拡張機能のコントリビュート
新しい AI コーディングエージェントや IDE を統合するには、別途用意されているハーネスアダプターのコントリビューションガイドを使用してください。ハーネスアダプターは、検出、管理されたセットアップ、イベント統合を提供します。以下のコマンド拡張機能は CLI ツールのポリシー適用範囲を追加するもので、エージェントフックはインストールしません。
コマンド拡張機能は、Rust でコンパイルおよび評価される宣言型 JSON として作成します。contributions/command-sources/command.<name>.json にメタデータ、権限、マッチャーツリー、安全なバリアントを追加し、ポータブルな JSON フィクスチャで動作を検証します。ほとんどの拡張機能は既存のネイティブ操作を組み合わせて作成できます。新しい Rust 操作が必要になるのは、既存のマッチャーコントラクトで動作を表現できない場合に限られます。
| コントリビューション | 作成時の入力 | 検証 |
|---|---|---|
| コマンドの適用範囲 | contributions/command-sources/command.<name>.json | guard-command-source test で評価されるポータブルなフィクスチャ。 |
| MCP サーバーの情報 | contributions/mcp-servers/<id>.json | MCP コントリビューションテストとネイティブカタログの検証。 |
| 新しいマッチャーのセマンティクス | rust/crates/guard-command/ 内のレビュー済み Rust 変更 | ネイティブコントラクト、受け入れ、評価、回帰テスト。 |
Rust コンパイラーは、コマンド記述子、カタログ、ネイティブマッチャープログラムを生成します。Python は引き続き CLI、ビルドのオーケストレーション、テストの一部として使用されます。新しいコマンドの適用範囲を追加する際に、Python の検出器やレジストリー登録は必要ありません。ソースを直接作成する方法については作成ガイド、ランタイムの境界についてはアーキテクチャを参照してください。
Extension Builder CLI では、エクスポートされたコマンドメタデータから、これらのコマンドソースとポータブルなフィクスチャを作成できます。MCP インベントリにも対応しています。オフラインで動作し、エクスポートを読み取る際に対象ツールをインポートしたり実行したりすることはありません。
Builder のプランと適用のフローを使って、正規ソースとフィクスチャを作成してください。スコープのレビューを早めに行うため、まずドラフト PR を作成してください。その PR をレビュー可能な状態にする前に、scripts/prepare_extension_contribution.py --source ... --fixture ... を実行して決定的な投影を同期し、続いて hol-guard extensions handoff --repo . --source ... --fixture ... を実行してください。ハンドオフチェックにより、生成された記述子、カタログエントリー、ソースバインディングの不足を最終レビュー前に検出できます。
1. PR の対象範囲を定義します。 既存の対象範囲や重複する対象範囲がないか、拡張機能ディレクトリと現在のオープンプルリクエストを確認します。新しい機能の場合は、Command extension テンプレートを使ってドラフト PR を作成し、提案する command.<name> ID、対応する操作、破壊的な使用例、安全な代替手段、上流の参照先を記載します。対象範囲のレビューは PR 上で行うため、別途 Issue を作成する必要はありません。既存の拡張機能がすでにその操作を担当している場合は、その拡張機能を拡張します。
開発環境のセットアップに従い、以下の例を HOL Guard のチェックアウトから実行します。uv run --no-sync は、そのチェックアウトにインストールされた開発版を使用します。
2. コントリビューションキットを生成します。 この例では、リポジトリに含まれる合成 samplectl インベントリを使用します。独自のコントリビューションでは、入力とメタデータを、使用するツールのエクスポートデータと公開されている発行元情報に置き換えてください。
uv run --no-sync hol-guard extensions generate --from cli \
--input docs/guard/extension-builder/examples/cli-surface.json \
--slug samplectl --executable samplectl --name 'Sample CLI' \
--publisher community.example --publisher-name 'Example Maintainer' \
--homepage https://example.test/samplectl \
--upstream-version 1.0.0 --output samplectl-kit
uv run --no-sync hol-guard extensions validate samplectl-kit
出力ディレクトリは新規で、親ディレクトリがすでに存在している必要があります。コマンドキットには、discovery.json、review.json、report.json、正規 JSON ソース、ポータブルなネイティブフィクスチャ、生成されたディスクリプター、ファイルマニフェストが含まれます。MCP キットには、コントリビューションメタデータと生成された Python テストが含まれます。
その他の入力形式:--from help は保存済みのコマンドヘルプを読み込み、--from click は Click の Context.to_info_dict() エクスポートを読み込み、--from oclif は oclif.manifest.json を読み込み、--from mcp はエクスポート済みの完全な tools/list 結果を読み込み、--from snapshot は discovery.json を再生します。上記の cli の例では、正規化された guard.cli-surface.v1 JSON を使用します。
MCP コントリビューションでは、ジェネレーターは --executable の代わりに --launcher と --package を使用します。完全なコマンドとページネーションの要件については、MCP キットの例を参照してください。
3. 操作をレビューして再生成します。 report.json を読み、検出された操作を上流の実装と比較します。編集する前に、レビュー用ファイルをコピーします。
cp samplectl-kit/review.json samplectl-review.json
samplectl-review.json を編集し、検出情報との関連付けと操作 ID はそのまま維持します。CLI 操作には review または block を指定し、ルート操作は review のままにします。評価した項目には reviewed: true を設定し、その理由と公開 HTTPS の根拠参照を記載します。safeArgv は、正確性を確認済みの安全な呼び出しに限って追加します。レビュー形式には、完全なエントリーの例が記載されています。
レビュー後に、保存済みスナップショットを再コンパイルします。
uv run --no-sync hol-guard extensions generate --from snapshot \
--input samplectl-kit/discovery.json \
--review samplectl-review.json --output samplectl-reviewed
uv run --no-sync hol-guard extensions validate samplectl-reviewed
uv run --no-sync hol-guard extensions diff samplectl-kit samplectl-reviewed
"$HOL_GUARD_NATIVE_SOURCE_COMPILER" test \
< samplectl-reviewed/artifacts/tests/fixtures/command-source-samplectl.v1.json
同一のキットでは diff は 0 を返し、有効なキット間に差異がある場合は 1 を返します。Rust フィクスチャランナーは、コマンドテキストを実行せずに評価します。上流のエクスポートに変更があった場合は、新しいスナップショットを生成してレビューしてください。
4. 統合をプレビューして適用します。 コントリビューションブランチで、現在のチェックアウトに対する変更をプレビューします。
uv run --no-sync hol-guard extensions apply samplectl-reviewed --repo .
一覧表示されたパスと生成ファイルを確認します。実行する前に、表示された計画ダイジェストを次のコマンドにコピーしてください。
uv run --no-sync hol-guard extensions apply samplectl-reviewed --repo . \
--expected-plan THE_PRINTED_PLAN_DIGEST \
--write
この書き込みにより、正規ソース、フィクスチャ、生成されたコントリビューションディスクリプター、外部信頼マップ、パッケージング、作成者の所有権記録が統合されます。次の手順で、プログラム全体とカタログを再生成します。既存の ID や競合するファイルがある場合、レビューのため統合は停止します。
5. テストを実行してプルリクエストを送信します。 ネイティブ検証手順に従い、カタログ全体を再生成し、そのプログラムに対してコンパイラーとランタイムを再ビルドして、統合済みソースに対してコントリビューションのフィクスチャを実行します。既存の拡張機能を更新する場合も対象となります。この場合、パッケージ化されたベースラインへの追加が既存の ID と競合します。その後、コントリビューションのチェックを実行し、公開ディレクトリを再生成します。
uv run --no-sync python scripts/release/stage_guard_cloud_review_artifacts.py
uv run --no-sync pytest -q \
tests/test_guard_extension_contribution.py \
tests/test_guard_extension_trust.py \
tests/test_native_source_program.py \
tests/test_guard_command_extension_registry.py
uv run --no-sync python scripts/export_extension_directory.py
uv run --no-sync python scripts/export_extension_directory.py --check
uv run --no-sync python scripts/render_command_extension_directory.py
uv run --no-sync python scripts/render_command_extension_directory.py --check
git diff --check
破壊的な操作、安全なプレビュー、エイリアス、フラグの順序変更、引用符、不正な入力、複合コマンドのフィクスチャケースを追加してください。ネイティブのセマンティクスを変更する場合は Rust のチェックを実行し、ツールを変更する場合は関連する Python のチェックを実行してください。最終的な差分を確認し、正規の入力、生成されたプロジェクション、フィクスチャ、作成記録をコミットして、テスト結果とともに既存のドラフト PR を main に対して更新してください。引き継ぎチェックに合格したら、レビュー可能な状態にしてください。スクラッチ用のキットディレクトリと未加工の上流エクスポートは PR に含めないでください。
コミュニティによるコントリビューションは「External」のままで、デフォルトでは無効です。 テストでは、ローカル管理者が有効化するまで機能しないことを証明する必要があります。コントリビューションを生成、適用、またはマージしても有効にはならず、そのルールによって Guard が必須とする保護を弱めることはできません。
ビルダーの完全なリファレンス · コントリビューションのレビュー要件 · External 拡張機能の仕様 · ビルダーの検証
開発
開発ツールチェーンには、Python 3.10 以降、uv、および rust/rust-toolchain.toml で固定された Rust 1.88.0 が含まれます。Rust はネイティブランタイムと拡張機能コンパイラーをビルドし、Python は CLI と開発ツールを提供します。以下のコマンドは、リポジトリのルートから POSIX シェルで実行します。Windows のセットアップと変更の種類ごとのチェックについては、CONTRIBUTING.md を参照してください。
git clone https://github.com/hashgraph-online/hol-guard.git
cd hol-guard
uv sync --frozen --extra dev
rustup toolchain install 1.88.0 --profile minimal --component rustfmt --component clippy
cargo +1.88.0 build --locked --release --manifest-path rust/Cargo.toml \
-p guard-command --bin guard-command-source
cargo +1.88.0 build --locked --release --manifest-path rust/Cargo.toml \
-p hol-guard-runtime
export HOL_GUARD_NATIVE_SOURCE_COMPILER="$PWD/rust/target/release/guard-command-source"
export HOL_GUARD_NATIVE_TEST_SOURCE_COMPILER="$HOL_GUARD_NATIVE_SOURCE_COMPILER"
export HOL_GUARD_NATIVE_BINARY="$PWD/rust/target/release/hol-guard-runtime"
uv run --no-sync python scripts/build_native_command_program.py \
--compiler "$HOL_GUARD_NATIVE_SOURCE_COMPILER" --check
uv run --no-sync pytest tests/test_guard_extension_builder_public_docs.py \
tests/test_native_source_program.py --tb=short
これらのコンパイラーオーバーライドは、編集可能なチェックアウト用です。インストール済みのネイティブホイールは、同梱のコンパイラーを使用し、そのマニフェストを検証します。正規ソースまたは Rust のセマンティクスを変更した後は、検証ガイドの説明に従ってプロジェクションを再生成し、再ビルドしてください。
Python のツールおよびパッケージを変更する場合:
uv run --no-sync ruff check src tests
uv run --no-sync ruff format --check src tests
uv build
Cisco のカバレッジを任意で追加する場合は、上記の依存関係グループ用コマンドを使用してください。コントリビューションの要件についてはCONTRIBUTING.mdを、統合テストについてはテストマトリックスを参照してください。
リソース
- HOL プラグインレジストリ
- Hugging Face の HOL プラグインセキュリティデータセット
- HOL 標準ドキュメント
- OpenAI Codex プラグインドキュメント
- Model Context Protocol ドキュメント
- Cisco AI Skill Scanner
- Cisco AI MCP Scanner
- HOL GitHub 組織
コミュニティ
HOL がメンテナンスしています。
ライセンス
Apache-2.0 の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
