{
  "executive_summary": {
    "badge": "Unsafe",
    "security_score": 68.25,
    "view": "composite",
    "aggregate_verdict_withheld": false,
    "aggregate_verdict_withheld_reason": null,
    "scanner_badges": {
      "agentshield": "Verified",
      "cisco-skill-scanner": "Verified",
      "agent-audit-kit": "Unsafe",
      "nerlo-behavioral": "Unsafe",
      "nerlo-install-instruction": "Verified",
      "nerlo-multi-source": "Verified",
      "trivy": "unavailable",
      "osv-scanner": "unavailable"
    },
    "finding_counts": {
      "critical": 28,
      "high": 11,
      "medium": 3,
      "low": 3,
      "informational": 17
    },
    "recommendation": "ainative-zerodb-memory-mcp is NOT recommended for integration: the scan surfaced 28 critical and 11 high-severity findings. Treat the Per-Scanner Detail section as a remediation worklist and re-scan before reconsidering."
  },
  "source_provenance": {
    "repository_url": "https://github.com/AINative-Studio/ainative-zerodb-memory-mcp",
    "commit_sha_scanned": null,
    "license": "MIT",
    "maintainer": "AINative Studio",
    "name": "ainative-zerodb-memory-mcp",
    "version": "1.2.7"
  },
  "per_scanner_detail": [
    {
      "scanner_name": "agentshield",
      "scanner_version": "1.4.0",
      "score": 97.0,
      "scanner_badge": "Verified",
      "findings": [
        {
          "tool_name": "agentshield",
          "severity": "high",
          "category": "secrets",
          "file_path": "CLAUDE.md",
          "line_number": null,
          "rule_identifier": "secrets-claude-md-env-2414",
          "title": "Sensitive env var in CLAUDE.md: ZERODB_API_KEY",
          "description": "CLAUDE.md contains an assignment for \"ZERODB_API_KEY\". CLAUDE.md files are typically committed to version control, exposing secrets to anyone who clones the repository.",
          "remediation": "Move to .env file and reference via environment variable"
        },
        {
          "tool_name": "agentshield",
          "severity": "high",
          "category": "secrets",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "secrets-claude-md-env-2414",
          "title": "Sensitive env var in CLAUDE.md: ZERODB_API_KEY",
          "description": "CLAUDE.md contains an assignment for \"ZERODB_API_KEY\". CLAUDE.md files are typically committed to version control, exposing secrets to anyone who clones the repository.",
          "remediation": "Move to .env file and reference via environment variable"
        }
      ],
      "execution_duration_seconds": 4.005936037981883,
      "status": "complete",
      "examined": null,
      "metadata": {
        "source": "npm",
        "source_url": "https://www.npmjs.com/package/ecc-agentshield",
        "install_command": "npm install -g ecc-agentshield@1.4.0",
        "scans_performed": [
          "claude_config",
          "supply_chain"
        ],
        "score_breakdown": {
          "mcp": 100,
          "hooks": 100,
          "agents": 100,
          "secrets": 85,
          "permissions": 100
        }
      },
      "display_score": 97.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "cisco-skill-scanner",
      "scanner_version": "2.0.11",
      "score": 87.5,
      "scanner_badge": "Verified",
      "findings": [
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/.cody/skills/zeromemory/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo",
          "line_number": null,
          "rule_identifier": "LOW_ANALYZABILITY",
          "title": "Critically low analyzability score",
          "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 51% of skill content could be analyzed. 11 of 24 files are opaque to the scanner. The safety assessment has low confidence.",
          "remediation": "Replace opaque files (binaries, encrypted content) with inspectable source code to improve scan confidence."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "obfuscation",
          "file_path": "/repo/.cody/CODY.md",
          "line_number": null,
          "rule_identifier": "HIDDEN_DATA_FILE",
          "title": "Hidden data file detected",
          "description": "Hidden file found: .cody/CODY.md. Hidden files may contain concealed configuration or data that should be reviewed.",
          "remediation": "Move file to a visible location or document its purpose."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "obfuscation",
          "file_path": "/repo/.cody/skills/zeromemory/SKILL.md",
          "line_number": null,
          "rule_identifier": "HIDDEN_DATA_FILE",
          "title": "Hidden data file detected",
          "description": "Hidden file found: .cody/skills/zeromemory/SKILL.md. Hidden files may contain concealed configuration or data that should be reviewed.",
          "remediation": "Move file to a visible location or document its purpose."
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 55,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 85,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.post(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 118,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.post(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 126,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "data_exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 431,
          "rule_identifier": "DATA_EXFIL_JS_NETWORK",
          "title": "Outbound network request primitives in JavaScript/TypeScript",
          "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/.cody/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/.cody/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_INVALID_NAME",
          "title": "Skill name does not follow agent skills naming rules",
          "description": "Skill name '.cody' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
          "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/.cody/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/.claude/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/.claude/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_INVALID_NAME",
          "title": "Skill name does not follow agent skills naming rules",
          "description": "Skill name '.claude' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
          "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/.claude/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "social_engineering",
          "file_path": "/repo/docs/reports/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/docs/reports/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        }
      ],
      "execution_duration_seconds": 20.380898864008486,
      "status": "complete",
      "examined": {
        "unit": "skills",
        "count": 5
      },
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
        "report_type": "cisco-skill-sast",
        "analyzers_used": [
          "bytecode",
          "pipeline",
          "static_analyzer"
        ],
        "skills_scanned": [
          "zeromemory",
          "repo",
          ".cody",
          ".claude",
          "reports"
        ],
        "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
        "severity_counts": {
          "low": 2,
          "high": 0,
          "medium": 0,
          "critical": 0,
          "informational": 17
        },
        "artifact_type_policy": "mcp_server",
        "downweighted_findings": 10
      },
      "display_score": 87.5,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "agent-audit-kit",
      "scanner_version": "0.3.26",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "supply-chain",
          "file_path": "package.json",
          "line_number": null,
          "rule_identifier": "AAK-SUPPLY-004",
          "title": "No lockfile present",
          "description": "A package manifest exists but no lockfile was found. Without lockfiles, dependency versions float and can be silently updated.",
          "remediation": "Generate and commit lockfile."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 3,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 9,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 10,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 11,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 12,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 13,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 14,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 15,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 16,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 17,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 22,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 22,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 58,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 59,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 61,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 83,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "critical",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": null,
          "rule_identifier": "AAK-AGENT-001",
          "title": "Agent instruction file contains shell command directives",
          "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
          "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 72,
          "rule_identifier": "AAK-AGENT-002",
          "title": "Agent instructions reference external URLs",
          "description": "Agent instruction files reference external URLs that could serve as C2 channels or data exfiltration endpoints.",
          "remediation": "Remove external URL references from agent instructions."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "agent-config",
          "file_path": ".claude/CLAUDE.md",
          "line_number": 85,
          "rule_identifier": "AAK-AGENT-002",
          "title": "Agent instructions reference external URLs",
          "description": "Agent instruction files reference external URLs that could serve as C2 channels or data exfiltration endpoints.",
          "remediation": "Remove external URL references from agent instructions."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "low",
          "category": "supply-chain",
          "file_path": "SECURITY.md",
          "line_number": null,
          "rule_identifier": "AAK-SEC-MD-001",
          "title": "MCP server repo missing SECURITY.md or security_contact",
          "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
          "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "legal-compliance",
          "file_path": "README.md",
          "line_number": null,
          "rule_identifier": "AAK-HEALTHCARE-AI-004",
          "title": "Healthcare context without explicit AI-disclosure to user",
          "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
          "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "supply-chain",
          "file_path": "package.json",
          "line_number": 91,
          "rule_identifier": "AAK-OAUTH-3P-001",
          "title": "Repo depends on a third-party agent-platform SDK",
          "description": "The project depends on an agent-platform SDK (context-ai, langsmith, helicone, langfuse, humanloop, MCP SDK). Informational finding so reviewers audit the vendor's OAuth-scope footprint before merging. Raised to MEDIUM because the April 19 2026 Vercel \u00d7 Context.ai incident showed a single vendor compromise can turn into a production breach via transitive OAuth grants.",
          "remediation": "Pin the SDK to an exact version, audit the OAuth scopes it requests, and keep any deployment-level grants (Vercel, GCP, Workspace) in a secrets vault \u2014 never in a committed env file. See Vercel's bulletin for sensitive-env-var guidance: https://vercel.com/kb/bulletin/vercel-april-2026-security-incident"
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "supply-chain",
          "file_path": "index.js",
          "line_number": null,
          "rule_identifier": "AAK-ANTHROPIC-SDK-001",
          "title": "MCP server built on the upstream SDK without STDIO sanitizer",
          "description": "Repository declares a dependency on the upstream Anthropic / ModelContextProtocol SDK (Python `mcp` / `modelcontextprotocol`, TS `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust `mcp` / `modelcontextprotocol`) and exposes a STDIO transport (`StdioServerTransport`, `stdio_server`, etc.) without a sanitizer on argv assembly. Anthropic declined to CVE this as working as designed \u2014 sanitization is the developer's responsibility. The OX Security disclosure on 2026-04-15 rolled up L",
          "remediation": "Wrap every argv the STDIO transport builds in an allow-list sanitizer \u2014 `shlex.quote` in Python, `execFile` with an explicit argv array in Node, equivalent in Java/Rust. OR switch the transport off STDIO (`transports=['http']` / `['sse']`). If you have deliberately accepted the risk, add `accepts_stdio_risk: true` plus a `justification:` field in `.agent-audit-kit.yml`."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "index.js",
          "line_number": 130,
          "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
          "title": "Session token written to log sink in cleartext",
          "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
          "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
        }
      ],
      "execution_duration_seconds": 5.609306169004412,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 23
      },
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
        "report_type": "agent-audit-kit-sast",
        "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
        "rules_evaluated": 211,
        "severity_counts": {
          "low": 1,
          "high": 4,
          "medium": 3,
          "critical": 28,
          "informational": 0
        }
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "nerlo-behavioral",
      "scanner_version": "0.1.0",
      "score": 25.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 85,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 118,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 126,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 206,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        },
        {
          "tool_name": "nerlo-behavioral",
          "severity": "high",
          "category": "data-exfiltration",
          "file_path": "/repo/src/client/zerodb-client.js",
          "line_number": 224,
          "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
          "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
          "remediation": null
        }
      ],
      "execution_duration_seconds": 37.46661057701567,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 9
      },
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-behavioral",
        "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
        "ruleset_paths": [
          "/opt/nerlo-rules/exfiltration.yaml",
          "/opt/nerlo-rules/clipboard_exfiltration.yaml",
          "/opt/nerlo-rules/rce_endpoint.yaml",
          "/opt/nerlo-rules/taint_egress.yaml"
        ],
        "install_command": "pip install 'semgrep==1.97.0'",
        "severity_counts": {
          "low": 0,
          "high": 5,
          "medium": 0,
          "critical": 0,
          "informational": 0
        },
        "merged_invocation": true
      },
      "display_score": 25.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "nerlo-install-instruction",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 37.468158633011626,
      "status": "complete",
      "examined": {
        "unit": "files",
        "count": 7
      },
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-install-instruction",
        "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
        "ruleset_paths": [
          "/opt/nerlo-rules/install_instructions.yaml",
          "/opt/nerlo-rules/cursor_rules.yaml"
        ],
        "install_command": "pip install 'semgrep==1.97.0'",
        "merged_invocation": true
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "nerlo-multi-source",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 24.59563716300181,
      "status": "complete",
      "examined": null,
      "metadata": {
        "source": "nerlo-original",
        "per_source": [
          {
            "badge": "Verified",
            "label": "npm@1.2.7",
            "score": 100.0,
            "version": "1.2.7",
            "identifier": "ainative-zerodb-memory-mcp",
            "provenance": "clean",
            "source_type": "npm",
            "artifact_type": "mcp_server",
            "finding_count": 0,
            "malware_status": "complete",
            "injected_rule_ids": []
          }
        ],
        "report_type": "nerlo-multi-source",
        "diverged_sources": [],
        "published_surfaces_scanned": 1
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "trivy",
      "scanner_version": "0.71.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 0.5852902439946774,
      "status": "not_applicable",
      "examined": {
        "unit": "manifests",
        "count": 0
      },
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
        "report_type": "filesystem-vulnerability",
        "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
        "manifests_scanned": []
      },
      "display_score": null,
      "display_badge": "unavailable"
    },
    {
      "scanner_name": "osv-scanner",
      "scanner_version": "2.3.8",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 0.43352931400295347,
      "status": "not_applicable",
      "examined": {
        "unit": "manifests",
        "count": 0
      },
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
        "report_type": "osv-vulnerability",
        "ecosystems_seen": [],
        "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
        "manifests_scanned": [],
        "finding_id_aliases": {},
        "cross_scanner_correlation": {
          "only_osv": [],
          "only_trivy": [],
          "intersection_ids": []
        }
      },
      "display_score": null,
      "display_badge": "unavailable"
    }
  ],
  "threat_model": "Threat model synthesis has not yet run for this scan. This section is generated by the registry's LLM pipeline (Req 22.3) and will appear in the next regeneration of this report.",
  "audit_chain": {
    "scan_job_id": "32e18464-ab11-44b0-bbf4-aad932057b7d",
    "scan_completed_at": "2026-08-01T07:49:14.244685+00:00",
    "scanner_versions": {
      "agentshield": "1.4.0",
      "cisco-skill-scanner": "2.0.11",
      "agent-audit-kit": "0.3.26",
      "nerlo-behavioral": "0.1.0",
      "nerlo-install-instruction": "0.1.0",
      "nerlo-multi-source": "0.1.0",
      "trivy": "0.71.0",
      "osv-scanner": "2.3.8"
    },
    "scanner_base_image": "us-central1-docker.pkg.dev/nerlo-vsk-prod/nerlo/scanner-base@sha256:5b605cdef65aaf3d8b562c388cdd6483d6922974476d23c1f8e4f6c5f6ae723e",
    "ai_decision_log_ids": [
      "4fd14a6a-6ff9-405a-87ad-e5aad3a1782d",
      "e36eb73f-fa85-40c2-a857-36273c273525"
    ],
    "self_attestation_url": "http://localhost:8000/api/v1/registry/self-attestation"
  },
  "appendix": {
    "raw_scanner_reports": [
      {
        "scanner_name": "agentshield",
        "scanner_version": "1.4.0",
        "score": 97.0,
        "scanner_badge": "Verified",
        "findings": [
          {
            "tool_name": "agentshield",
            "severity": "high",
            "category": "secrets",
            "file_path": "CLAUDE.md",
            "line_number": null,
            "rule_identifier": "secrets-claude-md-env-2414",
            "title": "Sensitive env var in CLAUDE.md: ZERODB_API_KEY",
            "description": "CLAUDE.md contains an assignment for \"ZERODB_API_KEY\". CLAUDE.md files are typically committed to version control, exposing secrets to anyone who clones the repository.",
            "remediation": "Move to .env file and reference via environment variable"
          },
          {
            "tool_name": "agentshield",
            "severity": "high",
            "category": "secrets",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "secrets-claude-md-env-2414",
            "title": "Sensitive env var in CLAUDE.md: ZERODB_API_KEY",
            "description": "CLAUDE.md contains an assignment for \"ZERODB_API_KEY\". CLAUDE.md files are typically committed to version control, exposing secrets to anyone who clones the repository.",
            "remediation": "Move to .env file and reference via environment variable"
          }
        ],
        "execution_duration_seconds": 4.005936037981883,
        "status": "complete",
        "examined": null,
        "metadata": {
          "source": "npm",
          "source_url": "https://www.npmjs.com/package/ecc-agentshield",
          "install_command": "npm install -g ecc-agentshield@1.4.0",
          "scans_performed": [
            "claude_config",
            "supply_chain"
          ],
          "score_breakdown": {
            "mcp": 100,
            "hooks": 100,
            "agents": 100,
            "secrets": 85,
            "permissions": 100
          }
        },
        "display_score": 97.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "cisco-skill-scanner",
        "scanner_version": "2.0.11",
        "score": 87.5,
        "scanner_badge": "Verified",
        "findings": [
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/.cody/skills/zeromemory/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo",
            "line_number": null,
            "rule_identifier": "LOW_ANALYZABILITY",
            "title": "Critically low analyzability score",
            "description": "[mcp_server policy: capability-matches-purpose class; severity high -> informational] Only 51% of skill content could be analyzed. 11 of 24 files are opaque to the scanner. The safety assessment has low confidence.",
            "remediation": "Replace opaque files (binaries, encrypted content) with inspectable source code to improve scan confidence."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "obfuscation",
            "file_path": "/repo/.cody/CODY.md",
            "line_number": null,
            "rule_identifier": "HIDDEN_DATA_FILE",
            "title": "Hidden data file detected",
            "description": "Hidden file found: .cody/CODY.md. Hidden files may contain concealed configuration or data that should be reviewed.",
            "remediation": "Move file to a visible location or document its purpose."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "obfuscation",
            "file_path": "/repo/.cody/skills/zeromemory/SKILL.md",
            "line_number": null,
            "rule_identifier": "HIDDEN_DATA_FILE",
            "title": "Hidden data file detected",
            "description": "Hidden file found: .cody/skills/zeromemory/SKILL.md. Hidden files may contain concealed configuration or data that should be reviewed.",
            "remediation": "Move file to a visible location or document its purpose."
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 55,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 85,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.post(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 118,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.post(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 126,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "data_exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 431,
            "rule_identifier": "DATA_EXFIL_JS_NETWORK",
            "title": "Outbound network request primitives in JavaScript/TypeScript",
            "description": "[mcp_server policy: capability-matches-purpose class; severity medium -> informational] Pattern detected: axios.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/.cody/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/.cody/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_INVALID_NAME",
            "title": "Skill name does not follow agent skills naming rules",
            "description": "Skill name '.cody' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
            "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/.cody/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/.claude/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/.claude/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_INVALID_NAME",
            "title": "Skill name does not follow agent skills naming rules",
            "description": "Skill name '.claude' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
            "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/.claude/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "social_engineering",
            "file_path": "/repo/docs/reports/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "[mcp_server policy: capability-matches-purpose class; severity low -> informational] Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/docs/reports/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          }
        ],
        "execution_duration_seconds": 20.380898864008486,
        "status": "complete",
        "examined": {
          "unit": "skills",
          "count": 5
        },
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
          "report_type": "cisco-skill-sast",
          "analyzers_used": [
            "bytecode",
            "pipeline",
            "static_analyzer"
          ],
          "skills_scanned": [
            "zeromemory",
            "repo",
            ".cody",
            ".claude",
            "reports"
          ],
          "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
          "severity_counts": {
            "low": 2,
            "high": 0,
            "medium": 0,
            "critical": 0,
            "informational": 17
          },
          "artifact_type_policy": "mcp_server",
          "downweighted_findings": 10
        },
        "display_score": 87.5,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "agent-audit-kit",
        "scanner_version": "0.3.26",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "supply-chain",
            "file_path": "package.json",
            "line_number": null,
            "rule_identifier": "AAK-SUPPLY-004",
            "title": "No lockfile present",
            "description": "A package manifest exists but no lockfile was found. Without lockfiles, dependency versions float and can be silently updated.",
            "remediation": "Generate and commit lockfile."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 3,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 9,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 10,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 11,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 12,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 13,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 14,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 15,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 16,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 17,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 22,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 22,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 58,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 59,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 61,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 83,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "critical",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": null,
            "rule_identifier": "AAK-AGENT-001",
            "title": "Agent instruction file contains shell command directives",
            "description": "An agent instruction file (AGENTS.md, .cursorrules, CLAUDE.md) contains shell commands or execution directives that could be injected into agent behavior.",
            "remediation": "Remove shell commands from agent instruction files. Use proper tool definitions instead."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 72,
            "rule_identifier": "AAK-AGENT-002",
            "title": "Agent instructions reference external URLs",
            "description": "Agent instruction files reference external URLs that could serve as C2 channels or data exfiltration endpoints.",
            "remediation": "Remove external URL references from agent instructions."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "agent-config",
            "file_path": ".claude/CLAUDE.md",
            "line_number": 85,
            "rule_identifier": "AAK-AGENT-002",
            "title": "Agent instructions reference external URLs",
            "description": "Agent instruction files reference external URLs that could serve as C2 channels or data exfiltration endpoints.",
            "remediation": "Remove external URL references from agent instructions."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "low",
            "category": "supply-chain",
            "file_path": "SECURITY.md",
            "line_number": null,
            "rule_identifier": "AAK-SEC-MD-001",
            "title": "MCP server repo missing SECURITY.md or security_contact",
            "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
            "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "legal-compliance",
            "file_path": "README.md",
            "line_number": null,
            "rule_identifier": "AAK-HEALTHCARE-AI-004",
            "title": "Healthcare context without explicit AI-disclosure to user",
            "description": "Text mentions patient / clinical / mental-health / therapy / diagnosis but the tool never explicitly says the responder is an AI. Multiple 2026 state laws (TN, WA, UT) expect clear AI disclosure in clinical interactions.",
            "remediation": "Add a visible 'You are talking to an AI; this is not medical advice and is not a substitute for licensed care' disclosure."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "supply-chain",
            "file_path": "package.json",
            "line_number": 91,
            "rule_identifier": "AAK-OAUTH-3P-001",
            "title": "Repo depends on a third-party agent-platform SDK",
            "description": "The project depends on an agent-platform SDK (context-ai, langsmith, helicone, langfuse, humanloop, MCP SDK). Informational finding so reviewers audit the vendor's OAuth-scope footprint before merging. Raised to MEDIUM because the April 19 2026 Vercel \u00d7 Context.ai incident showed a single vendor compromise can turn into a production breach via transitive OAuth grants.",
            "remediation": "Pin the SDK to an exact version, audit the OAuth scopes it requests, and keep any deployment-level grants (Vercel, GCP, Workspace) in a secrets vault \u2014 never in a committed env file. See Vercel's bulletin for sensitive-env-var guidance: https://vercel.com/kb/bulletin/vercel-april-2026-security-incident"
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "supply-chain",
            "file_path": "index.js",
            "line_number": null,
            "rule_identifier": "AAK-ANTHROPIC-SDK-001",
            "title": "MCP server built on the upstream SDK without STDIO sanitizer",
            "description": "Repository declares a dependency on the upstream Anthropic / ModelContextProtocol SDK (Python `mcp` / `modelcontextprotocol`, TS `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust `mcp` / `modelcontextprotocol`) and exposes a STDIO transport (`StdioServerTransport`, `stdio_server`, etc.) without a sanitizer on argv assembly. Anthropic declined to CVE this as working as designed \u2014 sanitization is the developer's responsibility. The OX Security disclosure on 2026-04-15 rolled up L",
            "remediation": "Wrap every argv the STDIO transport builds in an allow-list sanitizer \u2014 `shlex.quote` in Python, `execFile` with an explicit argv array in Node, equivalent in Java/Rust. OR switch the transport off STDIO (`transports=['http']` / `['sse']`). If you have deliberately accepted the risk, add `accepts_stdio_risk: true` plus a `justification:` field in `.agent-audit-kit.yml`."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "index.js",
            "line_number": 130,
            "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
            "title": "Session token written to log sink in cleartext",
            "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
            "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
          }
        ],
        "execution_duration_seconds": 5.609306169004412,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 23
        },
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
          "report_type": "agent-audit-kit-sast",
          "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
          "rules_evaluated": 211,
          "severity_counts": {
            "low": 1,
            "high": 4,
            "medium": 3,
            "critical": 28,
            "informational": 0
          }
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "nerlo-behavioral",
        "scanner_version": "0.1.0",
        "score": 25.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 85,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 118,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 126,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 206,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          },
          {
            "tool_name": "nerlo-behavioral",
            "severity": "high",
            "category": "data-exfiltration",
            "file_path": "/repo/src/client/zerodb-client.js",
            "line_number": 224,
            "rule_identifier": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "title": "opt.nerlo-rules.nerlo-js-secret-to-network-egress",
            "description": "A secret / environment variable / token value flows into a network request (fetch / axios / XMLHttpRequest). This is the postmark-mcp supply-chain exfiltration shape reproduced in Node/JS: a credential read from the environment is shipped off-box. Confirm the egress is expected and the value is not being exfiltrated to an attacker-controlled host.",
            "remediation": null
          }
        ],
        "execution_duration_seconds": 37.46661057701567,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 9
        },
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-behavioral",
          "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
          "ruleset_paths": [
            "/opt/nerlo-rules/exfiltration.yaml",
            "/opt/nerlo-rules/clipboard_exfiltration.yaml",
            "/opt/nerlo-rules/rce_endpoint.yaml",
            "/opt/nerlo-rules/taint_egress.yaml"
          ],
          "install_command": "pip install 'semgrep==1.97.0'",
          "severity_counts": {
            "low": 0,
            "high": 5,
            "medium": 0,
            "critical": 0,
            "informational": 0
          },
          "merged_invocation": true
        },
        "display_score": 25.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "nerlo-install-instruction",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 37.468158633011626,
        "status": "complete",
        "examined": {
          "unit": "files",
          "count": 7
        },
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-install-instruction",
          "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
          "ruleset_paths": [
            "/opt/nerlo-rules/install_instructions.yaml",
            "/opt/nerlo-rules/cursor_rules.yaml"
          ],
          "install_command": "pip install 'semgrep==1.97.0'",
          "merged_invocation": true
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "nerlo-multi-source",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 24.59563716300181,
        "status": "complete",
        "examined": null,
        "metadata": {
          "source": "nerlo-original",
          "per_source": [
            {
              "badge": "Verified",
              "label": "npm@1.2.7",
              "score": 100.0,
              "version": "1.2.7",
              "identifier": "ainative-zerodb-memory-mcp",
              "provenance": "clean",
              "source_type": "npm",
              "artifact_type": "mcp_server",
              "finding_count": 0,
              "malware_status": "complete",
              "injected_rule_ids": []
            }
          ],
          "report_type": "nerlo-multi-source",
          "diverged_sources": [],
          "published_surfaces_scanned": 1
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "trivy",
        "scanner_version": "0.71.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 0.5852902439946774,
        "status": "not_applicable",
        "examined": {
          "unit": "manifests",
          "count": 0
        },
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
          "report_type": "filesystem-vulnerability",
          "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
          "manifests_scanned": []
        },
        "display_score": null,
        "display_badge": "unavailable"
      },
      {
        "scanner_name": "osv-scanner",
        "scanner_version": "2.3.8",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 0.43352931400295347,
        "status": "not_applicable",
        "examined": {
          "unit": "manifests",
          "count": 0
        },
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
          "report_type": "osv-vulnerability",
          "ecosystems_seen": [],
          "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
          "manifests_scanned": [],
          "finding_id_aliases": {},
          "cross_scanner_correlation": {
            "only_osv": [],
            "only_trivy": [],
            "intersection_ids": []
          }
        },
        "display_score": null,
        "display_badge": "unavailable"
      }
    ]
  },
  "report": {
    "report_id": "1d6f0cb1-c84f-4025-9683-85714d96e025",
    "format": "json",
    "generated_at": "2026-08-02T07:06:04.166596+00:00",
    "scanner_filter": null,
    "signature": null
  }
}