Skip to main content

Behavioral security scanner for AI agent skills and MCP tools โ€” scan, certify, and govern.

Project description

Aegis Audit ๐Ÿฆž

Behavioral security scanner for AI agent skills, like on OpenClaw, and MCP tools.

The "SSL certificate" for AI agent skills โ€” scan, certify, and govern before you trust.

Aegis answers the question every agent user should ask: "What can this skill actually do, and should I trust it?"

License: AGPL-3.0


Why Aegis?

AI agents install and run skills with broad system access. Today, you're trusting them blindly. Aegis gives you:

  • Deterministic static analysis โ€” AST parsing + Semgrep + 15 specialized scanners. Same code = same report, every time.
  • Scope-resolved capabilities โ€” Not just "accesses the filesystem" but exactly which files, URLs, hosts, and ports.
  • Risk scoring โ€” 0โ€“100 composite score with CWE/OWASP-mapped findings and severity tiers.
  • Cryptographic proof โ€” Ed25519-signed lockfile with Merkle tree for tamper detection.
  • Optional LLM analysis โ€” Bring your own key (Gemini, Claude, OpenAI, Ollama, local).
Feature Basic Safety Summary Aegis Audit
Detection method LLM reads README AST + Semgrep + 15 scanners
Deterministic No Yes
Capabilities High-level categories Scope-resolved (files/URLs/ports)
Vulnerability detection None 700+ patterns, CWE-mapped
Secret scanning None 30+ token patterns
Obfuscation detection None Base64-exec, homoglyphs, stego
Tamper detection None Ed25519-signed Merkle tree
Fix suggestions None Actionable remediation per finding

Quick Start

1. Install

pip install aegis-audit

2. Scan a skill

# Scan the current directory (deterministic, no API key needed)
aegis scan --no-llm

# Scan a specific path
aegis scan ./some-skill --no-llm

Tip: All commands default to . (the current directory) when no path is given. Most users cd into a skill and run aegis scan from there.

3. (Optional) Add LLM analysis

# Interactive setup โ€” choose provider, model, paste API key
aegis setup

# Then scan with LLM enabled (it's on by default when configured)
aegis scan

aegis setup saves your config to ~/.aegis/config.yaml. You can also set an environment variable instead โ€” env vars always take priority over the config file:

export GEMINI_API_KEY=your-key        # or OPENAI_API_KEY, ANTHROPIC_API_KEY
aegis scan

4. Generate a signed lockfile

aegis lock

This runs a full scan and generates aegis.lock โ€” a cryptographically signed snapshot of the skill's security state. Commit it alongside the skill so consumers can verify nothing changed.

5. Verify a lockfile

aegis verify

Checks that the current code matches the signed aegis.lock. If any file was modified, the Merkle root won't match and verification fails.


CLI Reference

Command Description
aegis scan [path] Full security scan with risk scoring
aegis lock [path] Scan + generate signed aegis.lock
aegis verify [path] Verify lockfile against current code
aegis badge [path] Generate shields.io badge markdown
aegis setup Interactive LLM configuration wizard
aegis mcp-serve Start the MCP server (stdio transport)
aegis mcp-config Print MCP config JSON for Cursor / Claude Desktop
aegis version Show the Aegis version

All commands that take [path] default to . (current directory). Common flags: --no-llm (skip LLM), --json (CI output), -v (verbose). Run aegis scan --help (or aegis lock --help, etc.) for full flags.


LLM Setup

Aegis works fully offline with deterministic analysis. LLM analysis is optional โ€” it adds an AI second opinion on intent and risk but is never required.

Option A: Interactive setup (recommended)

aegis setup

This walks you through:

  1. Choose a provider โ€” Gemini, Claude, OpenAI, or a local server (Ollama, LM Studio, llama.cpp, vLLM)
  2. Pick a model โ€” curated list per provider, or enter a custom model ID
  3. Paste your API key โ€” hidden input, tested before saving

Config is saved to ~/.aegis/config.yaml. Run aegis setup again anytime to change it.

Option B: Environment variables

Set one of these and Aegis picks it up automatically:

Variable Provider
GEMINI_API_KEY Google Gemini
OPENAI_API_KEY OpenAI
ANTHROPIC_API_KEY Anthropic Claude

For local servers:

Variable Description
OLLAMA_HOST Ollama server URL (default: http://localhost:11434)
AEGIS_LOCAL_OPENAI_URL Any OpenAI-compatible server URL
AEGIS_LLM_PROVIDER Force a specific provider: openai, gemini, claude, ollama, local_openai

We've established personas for code repositories that run with our deterministic checks, no LLM is required. Get to know our code personas:

Vibe Check Personas

Aegis assigns each scanned skill a persona based on deterministic analysis. The Vibe Check shows one of these:

๐Ÿ”ฅ Cracked Dev
10x engineer energy. Clean code, smart patterns, minimal permissions. The kind of skill you'd want to maintain.

โœ… LGTM
Looks good to me. Permissions match the intent, scopes are sane, nothing weird. Ship it.

๐ŸŒ Trust Me Bro
Polished on the outside, suspicious on the inside. Docs vs code mismatch or unusual permissions. Trust, but verify.

๐Ÿค” You Sure About That?
The intern special. Messy code, missing pieces, docs that overpromise. No malicious intent, but it needs a real review.

๐Ÿ’• Co-Dependent Lover
Tiny logic, huge dependency tree. Loves node_modules. Supply chain risk is real here.

๐Ÿ‘บ Permission Goblin
Wants everything: filesystem, network, secrets, the kitchen sink. Over-scoped and worth a closer look.

๐Ÿ Spaghetti Monster
Unreadable chaos. High complexity, hard to follow. Good luck auditing this.

๐Ÿ The Snake
Warning: This code might look clean, but it isn't. Do not use this skill, it is malicious by design.


Example Output

This is actual Aegis output from scanning a skill, this is with the llm set-up and the --verbose details. This is the actual OpenClaw skill that I used for this test: https://clawhub.ai/alirezarezvani/senior-data-scientist

โ•ญโ”€ Aegis Security Audit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ AEGIS SECURITY AUDIT                                        โ”‚
โ”‚   Target: C:\Users\TEST                                     โ”‚
โ”‚   Files:  8 (3 Python, 1 config, 4 other)                   โ”‚
โ”‚   Source: directory                                         โ”‚
โ”‚   Mode:   AST + LLM (gemini)                                โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Vibe Check โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   ๐Ÿค”  You Sure About That?                                  โ”‚
โ”‚   The intern special. Messy code, missing pieces,           โ”‚
โ”‚   docs that overpromise. No malicious intent, but it        โ”‚
โ”‚   needs a real review.                                      โ”‚
โ”‚                                                             โ”‚
โ”‚   ####----------------  22/100 - LOW - minor observations   โ”‚
|   only                                                      โ”‚
โ”‚                                                             โ”‚
โ”‚   Aegis scored this skill 22/100. The code requests         โ”‚
โ”‚   minimal permissions and nothing looks unusual. The        โ”‚
โ”‚   documentation makes claims that don't align with what     โ”‚
โ”‚   Aegis found in the actual code. This mismatch is the      โ”‚
โ”‚   most important thing to investigate. Messy code: 1        โ”‚
โ”‚   missing file ref(s); docs claim production-grade but      โ”‚
โ”‚   code is minimal. No malicious intent detected, but this   โ”‚
โ”‚   needs a code review.                                      โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Trust Analysis โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Aegis cross-referenced SKILL.md against the actual        โ”‚
โ”‚   code.                                                     โ”‚
โ”‚                                                             โ”‚
โ”‚   [ALERT]  The description claims                           โ”‚
โ”‚   capabilities that don't match what the code provides -    โ”‚
โ”‚   5 mismatch(es) found.                                     โ”‚
โ”‚      Claimed cloud: aws, gcp, azure                         โ”‚
โ”‚      Cloud CLIs in code: none                               โ”‚
โ”‚      Claimed containers: docker, kubernetes, k8s,           โ”‚
โ”‚      helm, deployment                                       โ”‚
โ”‚      Container files in manifest: none                      โ”‚
โ”‚      ... and 2 more                                         โ”‚
โ”‚      -> This mismatch suggests the skill either             โ”‚
โ”‚      won't work as advertised without extra setup that      โ”‚
โ”‚      isn't included, or the description is overstating      โ”‚
โ”‚      what the skill actually does. Either way, the          โ”‚
โ”‚      skill's documentation is not trustworthy               โ”‚
โ”‚      as-is.                                                 โ”‚
โ”‚                                                             โ”‚
โ”‚   [ALERT]  The SKILL.md references                          โ”‚
โ”‚   13 file(s) or path(s) that don't exist in the package.    โ”‚
โ”‚      Files referenced but missing: ./charts/,               โ”‚
โ”‚      config.yaml, data/, k8s/, prod.yaml, project/,         โ”‚
โ”‚      results/, scripts/, scripts/evaluate.py,               โ”‚
โ”‚      scripts/health_check.py                                โ”‚
โ”‚      Files referenced and present:                          โ”‚
โ”‚      references/experiment_design_frameworks.md,            โ”‚
โ”‚      references/feature_engineering_patterns.md,            โ”‚
โ”‚      references/statistical_methods_advanced.md,            โ”‚
โ”‚      scripts/experiment_designer.py,                        โ”‚
โ”‚      scripts/feature_engineering_pipeline.py                โ”‚
โ”‚      Commands referenced: aws, bash, docker, go,            โ”‚
โ”‚      helm, kubectl, pytest, python                          โ”‚
โ”‚      -> This means the instructions will cause              โ”‚
โ”‚      the AI agent to look for files that aren't there.      โ”‚
โ”‚      The agent may then try to find them elsewhere on       โ”‚
โ”‚      your system, download them, or create them - all of    โ”‚
โ”‚      which happen outside the skill's controlled            โ”‚
โ”‚      scope                                                  โ”‚
โ”‚                                                             โ”‚
โ”‚   [WARN]  The skill advertises                              โ”‚
โ”‚   credential-heavy integrations but declares no required    โ”‚
โ”‚   credentials.                                              โ”‚
โ”‚      Integrations needing credentials: aws, gcp,            โ”‚
โ”‚      azure, postgres, postgresql, database, prometheus,     โ”‚
โ”‚      monitoring                                             โ”‚
โ”‚      Code reads secrets: no                                 โ”‚
โ”‚      Code reads env vars: no                                โ”‚
โ”‚                                                             โ”‚
โ”‚   [OK]  Typical configuration -                             โ”‚
โ”‚   not always-on, not force-installed.                       โ”‚
โ”‚                                                             โ”‚
โ”‚   [INFO]  No formal install spec,                           โ”‚
โ”‚   but the package includes 3 executable script(s).          โ”‚
โ”‚      Python scripts: 3                                      โ”‚
โ”‚      Shell scripts: 0                                       โ”‚
โ”‚                                                             โ”‚
โ”‚   [INFO]  No tool declarations to                           โ”‚
โ”‚   verify; code doesn't invoke external binaries.            โ”‚
โ”‚      No declared or detected binaries                       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ AI Analysis โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   I'm looking at the rap sheet hereโ€”three counts of         โ”‚
โ”‚   `system:sysinfo` with unresolved scopesโ€”but the actual    โ”‚
โ”‚   code snippets seem to be missing from the dossier! That   โ”‚
โ”‚   puts me in a bit of a bind for a full forensic            โ”‚
โ”‚   analysis. However, looking purely at the metadata:        โ”‚
โ”‚   triggering `system:sysinfo` with an `UNRESOLVED` scope    โ”‚
โ”‚   usually means the code is accessing system details        โ”‚
โ”‚   (like `os.uname()`, `platform.system()`, or               โ”‚
โ”‚   `sys.platform`) via dynamic methods (like                 โ”‚
โ”‚   `getattr(platform, var)`) rather than direct calls.       โ”‚
โ”‚                                                             โ”‚
โ”‚   While system fingerprinting is often step one for         โ”‚
โ”‚   malware (to tailor the payload), it's also common in      โ”‚
โ”‚   legitimate cross-platform tools. Without seeing the       โ”‚
โ”‚   code, I can't confirm if this is clever engineering or    โ”‚
โ”‚   an evasion attempt, but purely accessing system info is   โ”‚
โ”‚   generally low-risk compared to file or network access.    โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Findings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   [OK]  Permissions: minimal. No                            โ”‚
โ”‚   high-risk API usage detected.                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Capabilities โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Permissions: minimal. No high-risk APIs (network,         โ”‚
โ”‚   subprocess, credentials) detected. See                    โ”‚
โ”‚   aegis_report.json.                                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Before You Install โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   1.  Pin to a specific version: install                    โ”‚
โ”‚   from a tagged release or commit hash, not 'latest'.       โ”‚
โ”‚   2.  Check the developer's reputation: look                โ”‚
โ”‚   at their profile, other published skills, and community   โ”‚
โ”‚   activity.                                                 โ”‚
โ”‚   3.  Read the SKILL.md: confirm the skill                  โ”‚
โ”‚   does what you need and the documentation matches the      โ”‚
โ”‚   code.                                                     โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Verbose Risk Briefs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Credential & secret access                                  โ”‚
โ”‚   None detected. No hardcoded secrets, credential-store     โ”‚
โ”‚   access, or env-var reads found.                           โ”‚
โ”‚                                                             โ”‚
โ”‚ Program execution                                           โ”‚
โ”‚   None detected. No subprocess, shell, or external binary   โ”‚
โ”‚   invocations found.                                        โ”‚
โ”‚                                                             โ”‚
โ”‚ System-level access                                         โ”‚
โ”‚   None detected. No platform/sysinfo calls or signal        โ”‚
โ”‚   handlers found.                                           โ”‚
โ”‚                                                             โ”‚
โ”‚ Supply chain risk                                           โ”‚
โ”‚   None detected. No combination of subprocess +             โ”‚
โ”‚   unrecognized binaries.                                    โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Combination Risks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   No dangerous capability combinations detected.            โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ External Programs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   No external programs invoked.                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Sensitive Path Violations โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   No sensitive path violations.                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Scan Complete โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Report:                                                   โ”‚
โ”‚   C:\Users\TEST\aegis_report.json                           โ”‚
โ”‚   This was a read-only scan. Run aegis                      โ”‚
โ”‚   lock to generate a signed lockfile.                       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Here is an example of the scan with no AI enabled:


โ•ญโ”€ Aegis Security Audit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ AEGIS SECURITY AUDIT                                        โ”‚
โ”‚   Target: C:\Users\TEST                                     โ”‚
โ”‚   Files:  8 (3 Python, 1 config, 4 other)                   โ”‚
โ”‚   Source: directory                                         โ”‚
โ”‚   Mode:   AST-only                                          โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Vibe Check โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   ๐Ÿค”  You Sure About That?                                  โ”‚
โ”‚   The intern special. Messy code, missing pieces,           โ”‚
โ”‚   docs that overpromise. No malicious intent, but it        โ”‚
โ”‚   needs a real review.                                      โ”‚
โ”‚                                                             โ”‚
โ”‚   ####----------------  22/100 - LOW - minor observations   โ”‚
โ”‚   only                                                      โ”‚
โ”‚                                                             โ”‚
โ”‚   Aegis scored this skill 22/100. The code requests         โ”‚
โ”‚   minimal permissions and nothing looks unusual. The        โ”‚
โ”‚   documentation makes claims that don't align with what     โ”‚
โ”‚   Aegis found in the actual code. This mismatch is the      โ”‚
โ”‚   most important thing to investigate. Messy code: 1        โ”‚
โ”‚   missing file ref(s); docs claim production-grade but      โ”‚
โ”‚   code is minimal. No malicious intent detected, but this   โ”‚
โ”‚   needs a code review.                                      โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Trust Analysis โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Aegis cross-referenced SKILL.md against the actual        โ”‚
โ”‚   code.                                                     โ”‚
โ”‚                                                             โ”‚
โ”‚   [ALERT]  The description claims                           โ”‚
โ”‚   capabilities that don't match what the code provides -    โ”‚
โ”‚   5 mismatch(es) found.                                     โ”‚
โ”‚      Claimed cloud: aws, gcp, azure                         โ”‚
โ”‚      Cloud CLIs in code: none                               โ”‚
โ”‚      Claimed containers: docker, kubernetes, k8s,           โ”‚
โ”‚      helm, deployment                                       โ”‚
โ”‚      Container files in manifest: none                      โ”‚
โ”‚      ... and 2 more                                         โ”‚
โ”‚      -> This mismatch suggests the skill either             โ”‚
โ”‚      won't work as advertised without extra setup that      โ”‚
โ”‚      isn't included, or the description is overstating      โ”‚
โ”‚      what the skill actually does. Either way, the          โ”‚
โ”‚      skill's documentation is not trustworthy               โ”‚
โ”‚      as-is.                                                 โ”‚
โ”‚                                                             โ”‚
โ”‚   [ALERT]  The SKILL.md references                          โ”‚
โ”‚   13 file(s) or path(s) that don't exist in the package.    โ”‚
โ”‚      Files referenced but missing: ./charts/,               โ”‚
โ”‚      config.yaml, data/, k8s/, prod.yaml, project/,         โ”‚
โ”‚      results/, scripts/, scripts/evaluate.py,               โ”‚
โ”‚      scripts/health_check.py                                โ”‚
โ”‚      Files referenced and present:                          โ”‚
โ”‚      references/experiment_design_frameworks.md,            โ”‚
โ”‚      references/feature_engineering_patterns.md,            โ”‚
โ”‚      references/statistical_methods_advanced.md,            โ”‚
โ”‚      scripts/experiment_designer.py,                        โ”‚
โ”‚      scripts/feature_engineering_pipeline.py                โ”‚
โ”‚      Commands referenced: aws, bash, docker, go,            โ”‚
โ”‚      helm, kubectl, pytest, python                          โ”‚
โ”‚      -> This means the instructions will cause              โ”‚
โ”‚      the AI agent to look for files that aren't there.      โ”‚
โ”‚      The agent may then try to find them elsewhere on       โ”‚
โ”‚      your system, download them, or create them - all of    โ”‚
โ”‚      which happen outside the skill's controlled            โ”‚
โ”‚      scope                                                  โ”‚
โ”‚                                                             โ”‚
โ”‚   [WARN]  The skill advertises                              โ”‚
โ”‚   credential-heavy integrations but declares no required    โ”‚
โ”‚   credentials.                                              โ”‚
โ”‚      Integrations needing credentials: aws, gcp,            โ”‚
โ”‚      azure, postgres, postgresql, database, prometheus,     โ”‚
โ”‚      monitoring                                             โ”‚
โ”‚      Code reads secrets: no                                 โ”‚
โ”‚      Code reads env vars: no                                โ”‚
โ”‚                                                             โ”‚
โ”‚   [OK]  Typical configuration -                             โ”‚
โ”‚   not always-on, not force-installed.                       โ”‚
โ”‚                                                             โ”‚
โ”‚   [INFO]  No formal install spec,                           โ”‚
โ”‚   but the package includes 3 executable script(s).          โ”‚
โ”‚      Python scripts: 3                                      โ”‚
โ”‚      Shell scripts: 0                                       โ”‚
โ”‚                                                             โ”‚
โ”‚   [INFO]  No tool declarations to                           โ”‚
โ”‚   verify; code doesn't invoke external binaries.            โ”‚
โ”‚      No declared or detected binaries                       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€ Findings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   [OK]  Permissions: minimal. No                            โ”‚
โ”‚   high-risk API usage detected.                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Capabilities โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Permissions: minimal. No high-risk APIs (network,         โ”‚
โ”‚   subprocess, credentials) detected. See                    โ”‚
โ”‚   aegis_report.json.                                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Before You Install โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   1.  Pin to a specific version: install                    โ”‚
โ”‚   from a tagged release or commit hash, not 'latest'.       โ”‚
โ”‚   2.  Check the developer's reputation: look                โ”‚
โ”‚   at their profile, other published skills, and community   โ”‚
โ”‚   activity.                                                 โ”‚
โ”‚   3.  Read the SKILL.md: confirm the skill                  โ”‚
โ”‚   does what you need and the documentation matches the      โ”‚
โ”‚   code.                                                     โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

โ•ญโ”€ Scan Complete โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚   Report:                                                   โ”‚
โ”‚   C:\Users\mhube\aegis_report.json                          โ”‚
โ”‚   This was a read-only scan. Run aegis                      โ”‚
โ”‚   lock to generate a signed lockfile.                       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ


What Gets Scanned

Scanner What It Detects
AST Parser 750+ Python function/method patterns across 15+ categories
Semgrep Rules 80+ regex rules for Python, JavaScript, and secrets
Secret Scanner API keys, tokens, private keys, connection strings (30+ patterns)
Shell Analyzer Pipe-to-shell, reverse shells, inline exec
JS Analyzer XSS, eval, prototype pollution, dynamic imports
Dockerfile Analyzer Privilege escalation, secrets in ENV/ARG, unpinned images
Config Analyzer Dangerous settings in YAML, JSON, TOML, INI
Social Engineering Misleading filenames, Unicode tricks, trust manipulation
Steganography Hidden payloads in images, homoglyph attacks
Shadow Module Detector Stdlib-shadowing files (os.py, sys.py in the skill)
Combo Analyzer Multi-capability attack chains (exfiltration, C2, ransomware)
Taint Analysis Source-to-sink data flows (commands, URLs, SQL, paths)
Complexity Analyzer Cyclomatic complexity warnings for hard-to-audit functions
Skill Meta Analyzer SKILL.md vs. actual code cross-referencing
Persona Classifier Overall trust profile (LGTM, Permission Goblin, etc.)

Use as an MCP Server

Aegis runs as an MCP server for Cursor, Claude Desktop, and any MCP-compatible client. Three tools are exposed: scan_skill, verify_lockfile, and list_capabilities.

Add to Cursor

Add this to your .cursor/mcp.json:

{
  "mcpServers": {
    "aegis": {
      "command": "aegis",
      "args": ["mcp-serve"]
    }
  }
}

Or generate it automatically:

aegis mcp-config

Add to Claude Desktop

Add the same block to your Claude Desktop MCP config. Aegis uses stdio transport โ€” no network server needed.


Use as a Cursor Skill (ClawHub)

Aegis is available as a skill on ClawHub. Install it and your agent will automatically audit skills before enabling them.

See SKILL.md for the full skill specification.


JSON Output for CI

# Full JSON report to stdout
aegis scan --json --no-llm

# Pipe into jq to extract the risk score
aegis scan --json --no-llm | jq '.deterministic.risk_score_static'

# Fail CI if risk > 50
aegis scan --json --no-llm | jq -e '.deterministic.risk_score_static <= 50'

The JSON report contains two payloads:

  • Deterministic โ€” Merkle tree, capabilities, findings, risk score (reproducible, signed)
  • Ephemeral โ€” LLM analysis, risk adjustment (non-deterministic, not signed)

Architecture

aegis scan ./skill
    โ”‚
    โ”œโ”€โ”€ coordinator.py       โ†’ File discovery (git-aware / directory walk)
    โ”œโ”€โ”€ ast_parser.py        โ†’ AST analysis + pessimistic scope extraction
    โ”œโ”€โ”€ secret_scanner.py    โ†’ 30+ secret patterns
    โ”œโ”€โ”€ shell_analyzer.py    โ†’ Dangerous shell patterns
    โ”œโ”€โ”€ js_analyzer.py       โ†’ JS/TS vulnerability patterns
    โ”œโ”€โ”€ config_analyzer.py   โ†’ YAML/JSON/TOML/INI risky settings
    โ”œโ”€โ”€ combo_analyzer.py    โ†’ Multi-capability attack chains
    โ”œโ”€โ”€ taint_analyzer.py    โ†’ Sourceโ†’sink data flow tracking
    โ”œโ”€โ”€ binary_detector.py   โ†’ External binary classification
    โ”œโ”€โ”€ social_eng_scanner   โ†’ Social engineering detection
    โ”œโ”€โ”€ stego_scanner        โ†’ Steganography + homoglyphs
    โ”œโ”€โ”€ hasher.py            โ†’ Lazy Merkle tree
    โ”œโ”€โ”€ signer.py            โ†’ Ed25519 signing
    โ”œโ”€โ”€ rule_engine.py       โ†’ Policy evaluation
    โ””โ”€โ”€ reporter/            โ†’ JSON + Rich console output
         โ”‚
         โ–ผ
    aegis_report.json + aegis.lock

For Skill Developers

Building a skill? See the Skill Developer Best Practices guide for how to make your skills auditable, trustworthy, and easy to verify.

Run Aegis on your own skill before publishing:

cd ./my-skill
aegis scan --no-llm -v

Fix PROHIBITED findings. Document RESTRICTED ones. Ship with an aegis.lock:

aegis lock

Project Structure

aegis-audit/
โ”œโ”€โ”€ aegis-core/          # Python package (pip install aegis-audit)
โ”‚   โ”œโ”€โ”€ aegis/           # Source code
โ”‚   โ”‚   โ”œโ”€โ”€ cli.py       # CLI entry point
โ”‚   โ”‚   โ”œโ”€โ”€ mcp_server.py # MCP server
โ”‚   โ”‚   โ”œโ”€โ”€ scanner/     # All 15+ analyzers
โ”‚   โ”‚   โ”œโ”€โ”€ crypto/      # Hasher + signer
โ”‚   โ”‚   โ”œโ”€โ”€ models/      # Pydantic models
โ”‚   โ”‚   โ”œโ”€โ”€ policy/      # Rule engine
โ”‚   โ”‚   โ””โ”€โ”€ reporter/    # Output formatters
โ”‚   โ”œโ”€โ”€ tests/           # Test suite
โ”‚   โ”œโ”€โ”€ pyproject.toml   # Package config
โ”‚   โ””โ”€โ”€ README.md        # Detailed CLI reference
โ”œโ”€โ”€ docs/                # Governance & operational docs
โ”‚   โ”œโ”€โ”€ CHANGELOG.md
โ”‚   โ”œโ”€โ”€ SKILL_DEVELOPER_GUIDE.md
โ”‚   โ”œโ”€โ”€ INCIDENT_RESPONSE.md
โ”‚   โ”œโ”€โ”€ BCP_DR.md
โ”‚   โ”œโ”€โ”€ RISK_REGISTER.md
โ”‚   โ””โ”€โ”€ VENDOR_RISK.md
โ”œโ”€โ”€ scripts/             # Batch scanning utilities
โ”œโ”€โ”€ .github/             # CI + issue templates
โ”œโ”€โ”€ SKILL.md             # ClawHub skill specification
โ”œโ”€โ”€ LICENSE              # AGPL-3.0
โ””โ”€โ”€ LICENSING.md         # Dual license details

License

Aegis is dual-licensed:

  • Open Source: AGPL-3.0 โ€” free to use, modify, and distribute. Network service deployments must release source.
  • Commercial: Proprietary license available for embedding in proprietary products, running without source disclosure, SLAs, and support.

See LICENSING.md for full details. For enterprise inquiries: miki@launchloop.xyz.


Contributing

Contributions welcome. By contributing, you agree to the Contributor License Agreement.

cd aegis-core
pip install -e ".[dev]"
pytest

Python 3.11+ required | No network access needed for deterministic scans | Works offline

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aegis_audit-0.1.3.tar.gz (191.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aegis_audit-0.1.3-py3-none-any.whl (216.7 kB view details)

Uploaded Python 3

File details

Details for the file aegis_audit-0.1.3.tar.gz.

File metadata

  • Download URL: aegis_audit-0.1.3.tar.gz
  • Upload date:
  • Size: 191.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for aegis_audit-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c641b49faf3a74b03db5535d9f78acf7c5190caf98f21cf90e8bca9ed8f9a8c2
MD5 37d747ba3c7afc40aeb760e4cec07ee2
BLAKE2b-256 8c11f6e6985e7aeeaa00c68b83456b894a4ac67f8a15c71e826ab32bb8fa0703

See more details on using hashes here.

File details

Details for the file aegis_audit-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: aegis_audit-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 216.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for aegis_audit-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 74de3bb6a2d88d015cb589b1efe728215590235ae941b3ed8a99f9d0f482a993
MD5 8785fb1cbad3f2dddd2b803933866e3e
BLAKE2b-256 cace6b640ad88eb92440ee9ae5583e82c5a5f704ae46e3d14b6ab109ac9754a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page