{
  "markdown": "# HOL Guard: Open-Source Antivirus for AI Agents\n\n<!-- mcp-name: io.github.hashgraph-online/hol-guard -->\n\n[![HOL Guard Version](https://img.shields.io/pypi/v/hol-guard.svg?logo=pypi&logoColor=white&cacheSeconds=300)](https://pypi.org/project/hol-guard/)\n[![Plugin Scanner Version](https://img.shields.io/pypi/v/plugin-scanner.svg?logo=pypi&logoColor=white&cacheSeconds=300)](https://pypi.org/project/plugin-scanner/)\n[![HOL Guard Downloads](https://img.shields.io/pypi/dm/hol-guard?logo=pypi&logoColor=white)](https://pypi.org/project/hol-guard/)\n[![Plugin Scanner Downloads](https://img.shields.io/pypi/dm/plugin-scanner?logo=pypi&logoColor=white)](https://pypi.org/project/plugin-scanner/)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776AB?logo=python&logoColor=white)](#install-hol-guard)\n[![CI](https://img.shields.io/github/actions/workflow/status/hashgraph-online/hol-guard/ci.yml?branch=main&label=CI&logo=githubactions&logoColor=white)](https://github.com/hashgraph-online/hol-guard/actions/workflows/ci.yml)\n[![Publish](https://img.shields.io/github/actions/workflow/status/hashgraph-online/hol-guard/publish.yml?branch=main&label=Publish&logo=githubactions&logoColor=white)](https://github.com/hashgraph-online/hol-guard/actions/workflows/publish.yml)\n[![Container Image](https://img.shields.io/badge/ghcr-hol--guard-2496ED?logo=docker&logoColor=white)](https://github.com/hashgraph-online/hol-guard/pkgs/container/hol-guard)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/hashgraph-online/hol-guard/badge)](https://scorecard.dev/viewer/?uri=github.com/hashgraph-online/hol-guard)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)\n[![GitHub Stars](https://img.shields.io/github/stars/hashgraph-online/hol-guard?style=social)](https://github.com/hashgraph-online/hol-guard/stargazers)\n[![Lint: ruff](https://img.shields.io/badge/lint-ruff-D7FF64.svg)](https://github.com/astral-sh/ruff)\n\n| ![HOL whole dark logo](https://hol.org/brand/Logo_Whole_Dark.png) | **Stop risky AI actions before they compromise your machine.** HOL Guard is a local-first security layer for AI agents, tools, plugins, skills, MCP servers, and package installs.<br><br>[Install HOL Guard](https://hol.org/guard/activate)<br>[Read the documentation](https://github.com/hashgraph-online/hol-guard/blob/main/docs/guard/get-started.md)<br>[PyPI Package (`hol-guard`)](https://pypi.org/project/hol-guard/)<br>[Report an Issue](https://github.com/hashgraph-online/hol-guard/issues) |\n| :--- | :--- |\n\nHOL Guard reviews agent actions before they run: shell commands, file access, package installs, and MCP tool calls. It detects secret exposure, destructive operations, prompt injection, and supply-chain risks, then allows, blocks, or requests approval according to your policy.\n\nRun it locally without an account. Use the CLI and local dashboard to manage protection, resolve approvals, and inspect decision history. Optional [Guard Cloud](docs/guard/local-vs-cloud.md) adds shared history, team policy, and fleet management.\n\n[Get started](#install-hol-guard) · [Supported agents](#supported-ai-agents) · [Plugin scanner](#plugin-scanner) · [Documentation](#documentation) · [Contributing](#development)\n\n## Install HOL Guard\n\nRequires Python 3.10 or newer and [pipx](https://pipx.pypa.io/stable/installation/).\n\n```bash\npipx install hol-guard\nhol-guard init\n```\n\nThe first-run wizard discovers supported agents and walks you through protection setup. It asks before each setup change, including opening the dashboard, installing agent integrations, and connecting optional cloud services.\n\nCheck your installation:\n\n```bash\nhol-guard --version\nhol-guard status\n```\n\nTo update an existing installation:\n\n```bash\nhol-guard update\n```\n\nFor manual setup, see the [installation guide](docs/guard/get-started.md). Release details and prereleases are on the [releases page](https://github.com/hashgraph-online/hol-guard/releases).\n\n## What HOL Guard Protects\n\n| Surface | Protection |\n| :--- | :--- |\n| **Shell commands and file access** | Reviews destructive operations, sensitive file access, credential exposure, and suspicious outbound commands. |\n| **Package installs** | Evaluates supported package-manager operations against supply-chain intelligence before installation. |\n| **Plugins, skills, and agent configuration** | Inventories local artifacts and reviews new or changed tools before launch. |\n| **MCP servers and tools** | Inspects server configuration and reviews tool calls through supported hooks and managed proxies. |\n| **Prompts and tool results** | Screens supported events for prompt injection and sensitive content. |\n| **Approvals and evidence** | Routes decisions to native prompts or the approval center, and records local receipts for review. |\n\nGuard connects through native agent hooks, managed MCP proxies, and launch integrations. Coverage depends on the events each agent exposes; the [support matrix](docs/guard/harness-support.md) documents enforcement, approval delivery, and failure behavior per integration.\n\n## Supported AI Agents\n\nCodex, Claude Code, GitHub Copilot CLI, Cursor, Cline, Gemini CLI, Grok, Hermes, Kimi Code, Pi, oh-my-pi, OpenClaw, OpenCode, Antigravity, and ZCode.\n\nFor example, to set up Codex explicitly:\n\n```bash\nhol-guard install codex\nhol-guard run codex --dry-run\nhol-guard run codex\n```\n\nThe dry run records the current artifact state before launch. For Codex, Guard installs native pre-tool hooks and refuses a managed launch if those hooks are missing or disabled.\n\n[Agent support matrix](docs/guard/harness-support.md) · [Troubleshooting](docs/guard/troubleshooting.md)\n\n<a id=\"guard-operations\"></a>\n\n## Everyday Use\n\n| Task | Command |\n| :--- | :--- |\n| Check protection status | `hol-guard status` |\n| Diagnose an agent integration | `hol-guard doctor codex` |\n| Inspect changes before launch | `hol-guard diff codex` |\n| Review pending approvals | `hol-guard approvals` |\n| Approve or deny a request | `hol-guard approvals approve <request-id>` / `hol-guard approvals deny <request-id>` |\n| Read decision history | `hol-guard receipts` |\n| List tracked artifacts | `hol-guard inventory` |\n| Export an AI bill of materials | `hol-guard abom --format json` |\n| Scan workspace dependencies | `hol-guard supply-chain scan` |\n| Connect optional cloud sync | `hol-guard connect` |\n\n<a id=\"guard-troubleshooting\"></a>\n<a id=\"inspect-command-protection-without-running-it\"></a>\n\n### Understand a paused command\n\nInspect the command's classification and matching rules:\n\n```bash\nhol-guard command test 'rm -rf ./build'\nhol-guard command explain 'git clean -ndx'\nhol-guard command extensions command.git --json\n```\n\n`command test` and `command explain` inspect the command without executing it or creating an approval. Use `hol-guard approvals` to resolve a pending request and `hol-guard receipts` to review the recorded decision.\n\nThe [Extension directory](docs/guard/extensions/README.md) lists command coverage generated from the runtime registry. External contributions require explicit opt-in; required core protections remain enabled. To add coverage, follow the [Extension contribution guide](docs/guard/extensions/contributing.md).\n\n### Check a package\n\n```bash\nhol-guard supply-chain sync\nhol-guard supply-chain scan\nhol-guard supply-chain explain minimist@1.2.5 --ecosystem npm\n```\n\nThe package verdict includes the available advisory evidence and ecosystem coverage. See the [get-started guide](docs/guard/get-started.md) for package-manager interception and the [remediation guide](docs/guard/remediation.md) for handling false positives.\n\n<a id=\"scanner-quickstart\"></a>\n<a id=\"choose-the-right-package\"></a>\n\n## Plugin Scanner\n\nThis repository also ships `plugin-scanner`, a CLI for maintainers who want security and quality checks before publishing agent plugins, skills, and MCP integrations.\n\n```bash\npipx install plugin-scanner\nplugin-scanner scan .\nplugin-scanner lint .\nplugin-scanner verify .\n```\n\n| Command | Purpose |\n| :--- | :--- |\n| `scan` | Security findings and a quality report across detected package surfaces. |\n| `lint` | Rule-level authoring feedback. |\n| `verify` | Install-surface and runtime readiness checks. |\n| `submit` | A submission artifact for one plugin package. |\n| `doctor` | Component diagnostics and troubleshooting bundles. |\n\nThe scanner detects Codex, Claude Code, DeepSeek Harness, Gemini CLI, Kimi Code, and OpenCode package formats. Use `plugin-scanner --list-ecosystems` to list them or `--ecosystem` to select one. At a Codex marketplace root, it discovers local plugin entries automatically.\n\nChecks cover manifests, secrets, MCP transport and command configuration, approval defaults, skills, dependency lockfiles, and GitHub Actions permissions. Optional Cisco integrations add skill and MCP analysis. Reports support text, JSON, Markdown, and SARIF.\n\n```bash\nplugin-scanner scan . --format sarif --output plugin-scanner.sarif\nplugin-scanner scan . --fail-on-severity high\n```\n\nQuality grades use the checks applicable to each package. Trust scoring has separate provenance and weights; see the [skill](docs/trust/skill-trust-local.md), [MCP](docs/trust/mcp-trust-draft.md), and [plugin](docs/trust/plugin-trust-draft.md) scoring references.\n\n<a id=\"ci-and-automation\"></a>\n\n### GitHub Actions\n\nAdd the scanner to a plugin repository:\n\n```yaml\nname: Plugin security\non: [push, pull_request]\n\npermissions:\n  contents: read\n\njobs:\n  scan:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6\n      - uses: hashgraph-online/ai-plugin-scanner-action@fdb49f9d85321a2ced2933301b395dd3c1ce9c8f # v1.2.631\n        with:\n          plugin_dir: \".\"\n          min_score: 80\n          fail_on_severity: high\n```\n\nSee the [action documentation](https://github.com/hashgraph-online/ai-plugin-scanner-action) for SARIF uploads, submission workflows, and machine-readable outputs. The action source is maintained in [`action/`](action/).\n\n<a id=\"install-the-package-you-need\"></a>\n<a id=\"resolver-safe-cisco-extra\"></a>\n\n### Optional Cisco analysis\n\nThe baseline packages work without Cisco dependencies. To add Cisco skill scanning, use Python 3.11 through 3.14 and install the extra in an isolated environment:\n\n```bash\npipx install 'plugin-scanner[cisco]'\n```\n\nFor Cisco MCP analysis, use the repository's [Docker image](Dockerfile) or the `cisco-mcp` dependency group:\n\n```bash\nuv sync --extra dev --extra cisco --group cisco-mcp --python 3.13\nuv run plugin-scanner scan . --cisco-skill-scan on --cisco-mcp-scan on\n```\n\nThe published `cisco` extra provides skill scanning; the separate `cisco-mcp` group supplies the MCP scanner. Dependency versions and Python constraints are maintained in [`pyproject.toml`](pyproject.toml).\n\n## Ecosystem Support\n\n| Ecosystem | Detection surfaces |\n| :--- | :--- |\n| Codex | `.codex-plugin/plugin.json`, `marketplace.json`, `.agents/plugins/marketplace.json` |\n| Claude Code | `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json` |\n| DeepSeek Harness | `package.json` with `dsh.bundle`, declared patches, and Cordis `apply(ctx)` exports |\n| Gemini CLI | `gemini-extension.json`, `commands/**/*.toml` |\n| Kimi Code | `kimi.plugin.json`, `.kimi-plugin/plugin.json`, declared skills, agents, commands, prompts, and MCP servers |\n| OpenCode | `opencode.json`, `opencode.jsonc`, `.opencode/commands`, `.opencode/plugins` |\n\nUse `--ecosystem auto` to detect supported packages in a repository, or select an ecosystem explicitly:\n\n```bash\nplugin-scanner scan ./plugins-repo --ecosystem claude\nplugin-scanner scan ./dsh-plugin --ecosystem deepseek-harness\n```\n\n## What The Scanner Checks\n\n| Category | Coverage |\n| :--- | :--- |\n| Manifest validation | Required fields, versions, declared paths, interface metadata, links, and assets. |\n| Security | Hardcoded secrets, unsafe MCP commands and transports, and risky approval defaults. |\n| Operational security | GitHub Actions permissions and pinned dependencies, privileged checkout patterns, Dependabot, and lockfiles. |\n| Plugin packaging | README and license files, skill frontmatter, ignore rules, and accidentally committed environment files. |\n| Marketplace | Manifest validity, local package discovery, and safe source paths. |\n| Skill and MCP analysis | Analyzer availability, findings, and analyzability from optional Cisco integrations. |\n| Code quality | Dynamic code execution and shell-injection patterns. |\n\n## How Trust Scoring Works\n\nPlugin Scanner reports a quality grade alongside trust provenance. Quality scores are normalized across applicable checks, so optional surfaces do not inflate a package's grade.\n\nSkill trust uses the HCS-28 baseline adapter IDs, weights, and denominator rules. MCP and Codex plugin trust use explicit adapters, weights, and contribution modes documented in the local specifications:\n\n- [Skill Trust Local Draft](docs/trust/skill-trust-local.md)\n- [MCP Trust Draft](docs/trust/mcp-trust-draft.md)\n- [Codex Plugin Trust Draft](docs/trust/plugin-trust-draft.md)\n\n<a id=\"quality-suite-commands\"></a>\n\n## CLI Usage\n\n```bash\n# Structured security report\nplugin-scanner scan ./my-plugin --format json --profile public-marketplace\n\n# Inspect authoring rules\nplugin-scanner lint ./my-plugin --list-rules\nplugin-scanner lint ./my-plugin --explain README_MISSING\n\n# Apply supported mechanical fixes\nplugin-scanner lint ./my-plugin --fix --profile strict-security\n\n# Verify package readiness; --online permits live probes\nplugin-scanner verify ./my-plugin --format json\nplugin-scanner verify ./my-plugin --online --format text\n\n# Generate a submission artifact for one plugin\nplugin-scanner submit ./my-plugin --profile public-marketplace --attest dist/plugin-quality.json\n\n# Collect component diagnostics\nplugin-scanner doctor ./my-plugin --component mcp --bundle dist/doctor.zip\n```\n\nFor a repository marketplace, `scan`, `lint`, `verify`, and `doctor` can target the root. `submit` targets one plugin package.\n\n## Codex Spec Alignment\n\nThe scanner recognizes Codex plugin manifests, interface metadata, declared assets, and marketplace packages:\n\n- Local manifest paths use `./` prefixes; `lint --fix` preserves or adds them.\n- `.agents/plugins/marketplace.json` is the preferred marketplace location, with root `marketplace.json` supported for compatibility.\n- Interface validation checks declared links and assets without requiring an undocumented `type` field.\n- `verify --online` checks HTTP remote reachability. Stdio server execution is skipped for manual review.\n\nSee the [Codex plugin documentation](https://developers.openai.com/codex/plugins) and [Model Context Protocol specification](https://modelcontextprotocol.io) for upstream formats.\n\n## Config + Baseline Example\n\nConfigure the scanner in `.plugin-scanner.toml`:\n\n```toml\n[scanner]\nprofile = \"public-marketplace\"\nbaseline_file = \"baseline.txt\"\nignore_paths = [\"tests/*\", \"fixtures/*\"]\n\n[rules]\ndisabled = [\"README_MISSING\"]\nseverity_overrides = { CODEXIGNORE_MISSING = \"low\" }\n```\n\nThe GitHub Action requires `trust_repository_policy: true` before repository-owned configuration and baselines can change its verdict. Enable that option only for policy you intend the workflow to trust.\n\n## Report Formats\n\n| Format | Use |\n| :--- | :--- |\n| `text` | Terminal summaries with category totals and findings. |\n| `json` | Structured reports for scripts and integrations. |\n| `markdown` | Review-ready reports for pull requests and issues. |\n| `sarif` | GitHub code scanning and security automation. |\n\n## GitHub Action\n\nThe [AI Plugin Scanner Action](https://github.com/hashgraph-online/ai-plugin-scanner-action) supports security gates, SARIF uploads, submission intake, and registry payloads. Its source lives in [`action/`](action/), and the [publication workflow](.github/workflows/publish-action-repo.yml) distributes the action bundle.\n\nThe legacy [HOL Codex Plugin Scanner Action](https://github.com/hashgraph-online/hol-codex-plugin-scanner-action) remains available for existing workflows.\n\n### Plugin Author Submission Flow\n\nUse `submission_enabled: true` to open or reuse a submission issue when a plugin meets the configured threshold. `submission_token` must have permission to create issues in the target submission repository. The action emits submission status and issue URLs as outputs.\n\nSee the [action's input reference](action/action.yml) for `submission_score_threshold`, `submission_token`, and the target repository options.\n\n### Registry Payload For Plugin Ecosystem Automation\n\nSet `registry_payload_output` to write a machine-readable payload for a registry or badge pipeline. The action also exposes `score`, `grade`, `grade_label`, `max_severity`, and `findings_total` outputs and can write a job summary.\n\nThe [HOL Registry Broker plugin](https://github.com/hashgraph-online/registry-broker-codex-plugin) is an example of an agent plugin in the [HOL Plugin Registry](https://hol.org/registry/plugins). Its [registry listing](https://hol.org/registry/plugins/hol%2Fregistry-broker-codex-plugin) provides current trust information.\n\n## Why HOL Guard\n\nAI agents can run commands, install dependencies, read files, and call external tools within one session. HOL Guard reviews those actions at supported execution points and keeps the policy decision, approval request, and receipt together.\n\nUse it for AI agent security on a developer machine, MCP security around connected tools, and supply-chain checks for packages and plugins. Teams can add Guard Cloud for shared approvals and policy management while retaining local protection.\n\n## Frequently Asked Questions\n\n### What is HOL Guard?\n\nHOL Guard is open-source antivirus and runtime protection for AI agents. It reviews supported tool calls, shell commands, file access, and package operations for risks such as secret exposure, prompt injection, destructive actions, and malicious dependencies.\n\n### Does HOL Guard work without a cloud account?\n\nYes. Local protection, CLI commands, approvals, and receipts work without signing in. Guard Cloud is optional and adds synchronized evidence, team controls, and fleet visibility. See [Local Guard vs. Guard Cloud](docs/guard/local-vs-cloud.md) for the feature boundary.\n\n### Which AI agents does HOL Guard support?\n\nGuard includes adapters for Codex, Claude Code, GitHub Copilot CLI, Cursor, Cline, Gemini CLI, Grok, Hermes, Kimi Code, Pi, oh-my-pi, OpenClaw, OpenCode, Antigravity, and ZCode. The [support matrix](docs/guard/harness-support.md) explains which events and enforcement paths each adapter supports.\n\n### What is the difference between HOL Guard and Plugin Scanner?\n\nInstall `hol-guard` to protect agent activity on your machine. Install `plugin-scanner` to inspect plugin packages and enforce security and quality checks in CI. This repository builds and publishes both distributions.\n\n### How does HOL Guard protect MCP servers?\n\nGuard inspects MCP server configuration and reviews supported MCP tool calls through agent hooks and managed proxies. Plugin Scanner checks MCP configuration and HTTP remote reachability; optional Cisco MCP analysis adds static security findings.\n\n### Why did Guard pause my command?\n\nThe action may need approval under your active policy, or its tools or artifacts may have changed. Start with `hol-guard approvals`, inspect the command with `hol-guard command explain '<command>'`, and use `hol-guard receipts` to review the recorded decision.\n\n## Documentation\n\n| Guide | Contents |\n| :--- | :--- |\n| [Get started](docs/guard/get-started.md) | Installation, manual setup, package protection, and common commands. |\n| [Agent support](docs/guard/harness-support.md) | Integration coverage and approval behavior. |\n| [Architecture](docs/guard/architecture.md) | Runtime components and decision flow. |\n| [Policy specification](spec/guard-policy/v1alpha1/README.md) | GuardPolicy document format. |\n| [Policy recipes](docs/guard/policy-recipes.md) | Configuration examples for common workflows. |\n| [Extensions](docs/guard/extensions/README.md) | Built-in command rules and contribution guidance. |\n| [Local vs. cloud](docs/guard/local-vs-cloud.md) | Local capabilities and optional cloud services. |\n| [Troubleshooting](docs/guard/troubleshooting.md) | Diagnosis and recovery. |\n| [Security](SECURITY.md) | Vulnerability reporting and disclosure policy. |\n\n<a id=\"quick-start-for-contributors\"></a>\n\n## Development\n\nClone the repository and install the development dependencies with uv:\n\n```bash\ngit clone https://github.com/hashgraph-online/hol-guard.git\ncd hol-guard\nuv sync --extra dev\nuv run ruff check src tests\nuv run ruff format --check src tests\nuv run pytest --tb=short\nuv build\n```\n\nFor optional Cisco coverage, use the dependency group command above. See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution requirements and the [testing matrix](docs/guard/testing-matrix.md) for integration tests.\n\n## Resources\n\n- [HOL Plugin Registry](https://hol.org/registry/plugins)\n- [HOL Plugin Security dataset on Hugging Face](https://huggingface.co/datasets/HashgraphOnline/hol-plugin-security)\n- [HOL Standards Documentation](https://hol.org/docs/standards)\n- [OpenAI Codex Plugin Documentation](https://developers.openai.com/codex/plugins)\n- [Model Context Protocol Documentation](https://modelcontextprotocol.io)\n- [Cisco AI Skill Scanner](https://pypi.org/project/cisco-ai-skill-scanner/)\n- [Cisco AI MCP Scanner](https://pypi.org/project/cisco-ai-mcp-scanner/)\n- [HOL GitHub Organization](https://github.com/hashgraph-online)\n\n## Community\n\nMaintained by [Hashgraph Online](https://github.com/hashgraph-online).\n\n- [Report a bug or request a feature](https://github.com/hashgraph-online/hol-guard/issues)\n- [Browse releases](https://github.com/hashgraph-online/hol-guard/releases)\n- [Explore the plugin security dataset](https://huggingface.co/datasets/HashgraphOnline/hol-plugin-security)\n\n## License\n\nLicensed under [Apache-2.0](LICENSE).\n",
  "bytes": 22031,
  "sha": "8b1986c44200444a05d0c545bb23487f4b37a50655bc1357b7340867bda4da2d",
  "repo_slug": "hashgraph-online/hol-guard",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_hashgraph_online_hol_guard_46de63d2/readme"
}