hackmyagent 0.7.2 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +172 -261
- package/dist/abgr/controls.d.ts +35 -0
- package/dist/abgr/controls.d.ts.map +1 -0
- package/dist/abgr/controls.js +1058 -0
- package/dist/abgr/controls.js.map +1 -0
- package/dist/abgr/detector.d.ts +45 -0
- package/dist/abgr/detector.d.ts.map +1 -0
- package/dist/abgr/detector.js +175 -0
- package/dist/abgr/detector.js.map +1 -0
- package/dist/abgr/index.d.ts +24 -0
- package/dist/abgr/index.d.ts.map +1 -0
- package/dist/abgr/index.js +50 -0
- package/dist/abgr/index.js.map +1 -0
- package/dist/abgr/scorer.d.ts +36 -0
- package/dist/abgr/scorer.d.ts.map +1 -0
- package/dist/abgr/scorer.js +205 -0
- package/dist/abgr/scorer.js.map +1 -0
- package/dist/abgr/templates.d.ts +35 -0
- package/dist/abgr/templates.d.ts.map +1 -0
- package/dist/abgr/templates.js +668 -0
- package/dist/abgr/templates.js.map +1 -0
- package/dist/abgr/tier.d.ts +27 -0
- package/dist/abgr/tier.d.ts.map +1 -0
- package/dist/abgr/tier.js +115 -0
- package/dist/abgr/tier.js.map +1 -0
- package/dist/abgr/types.d.ts +59 -0
- package/dist/abgr/types.d.ts.map +1 -0
- package/dist/abgr/types.js +10 -0
- package/dist/abgr/types.js.map +1 -0
- package/dist/agent-scan/checks.d.ts +6 -0
- package/dist/agent-scan/checks.d.ts.map +1 -0
- package/dist/agent-scan/checks.js +93 -0
- package/dist/agent-scan/checks.js.map +1 -0
- package/dist/agent-scan/index.d.ts +10 -0
- package/dist/agent-scan/index.d.ts.map +1 -0
- package/dist/agent-scan/index.js +16 -0
- package/dist/agent-scan/index.js.map +1 -0
- package/dist/agent-scan/scanner.d.ts +31 -0
- package/dist/agent-scan/scanner.d.ts.map +1 -0
- package/dist/agent-scan/scanner.js +484 -0
- package/dist/agent-scan/scanner.js.map +1 -0
- package/dist/agent-scan/types.d.ts +63 -0
- package/dist/agent-scan/types.d.ts.map +1 -0
- package/dist/agent-scan/types.js +10 -0
- package/dist/agent-scan/types.js.map +1 -0
- package/dist/arp/cli/index.d.ts +3 -0
- package/dist/arp/cli/index.d.ts.map +1 -0
- package/dist/arp/cli/index.js +225 -0
- package/dist/arp/cli/index.js.map +1 -0
- package/dist/arp/config/loader.d.ts +8 -0
- package/dist/arp/config/loader.d.ts.map +1 -0
- package/dist/arp/config/loader.js +102 -0
- package/dist/arp/config/loader.js.map +1 -0
- package/dist/arp/enforcement/kill-switch.d.ts +22 -0
- package/dist/arp/enforcement/kill-switch.d.ts.map +1 -0
- package/dist/arp/enforcement/kill-switch.js +122 -0
- package/dist/arp/enforcement/kill-switch.js.map +1 -0
- package/dist/arp/engine/event-engine.d.ts +29 -0
- package/dist/arp/engine/event-engine.d.ts.map +1 -0
- package/dist/arp/engine/event-engine.js +233 -0
- package/dist/arp/engine/event-engine.js.map +1 -0
- package/dist/arp/index.d.ts +81 -0
- package/dist/arp/index.d.ts.map +1 -0
- package/dist/arp/index.js +239 -0
- package/dist/arp/index.js.map +1 -0
- package/dist/arp/intelligence/adapters.d.ts +45 -0
- package/dist/arp/intelligence/adapters.d.ts.map +1 -0
- package/dist/arp/intelligence/adapters.js +222 -0
- package/dist/arp/intelligence/adapters.js.map +1 -0
- package/dist/arp/intelligence/anomaly.d.ts +32 -0
- package/dist/arp/intelligence/anomaly.d.ts.map +1 -0
- package/dist/arp/intelligence/anomaly.js +80 -0
- package/dist/arp/intelligence/anomaly.js.map +1 -0
- package/dist/arp/intelligence/budget.d.ts +33 -0
- package/dist/arp/intelligence/budget.d.ts.map +1 -0
- package/dist/arp/intelligence/budget.js +150 -0
- package/dist/arp/intelligence/budget.js.map +1 -0
- package/dist/arp/intelligence/coordinator.d.ts +43 -0
- package/dist/arp/intelligence/coordinator.d.ts.map +1 -0
- package/dist/arp/intelligence/coordinator.js +301 -0
- package/dist/arp/intelligence/coordinator.js.map +1 -0
- package/dist/arp/interceptors/a2a-protocol.d.ts +29 -0
- package/dist/arp/interceptors/a2a-protocol.d.ts.map +1 -0
- package/dist/arp/interceptors/a2a-protocol.js +111 -0
- package/dist/arp/interceptors/a2a-protocol.js.map +1 -0
- package/dist/arp/interceptors/filesystem.d.ts +33 -0
- package/dist/arp/interceptors/filesystem.d.ts.map +1 -0
- package/dist/arp/interceptors/filesystem.js +199 -0
- package/dist/arp/interceptors/filesystem.js.map +1 -0
- package/dist/arp/interceptors/mcp-protocol.d.ts +25 -0
- package/dist/arp/interceptors/mcp-protocol.d.ts.map +1 -0
- package/dist/arp/interceptors/mcp-protocol.js +126 -0
- package/dist/arp/interceptors/mcp-protocol.js.map +1 -0
- package/dist/arp/interceptors/network.d.ts +26 -0
- package/dist/arp/interceptors/network.d.ts.map +1 -0
- package/dist/arp/interceptors/network.js +146 -0
- package/dist/arp/interceptors/network.js.map +1 -0
- package/dist/arp/interceptors/process.d.ts +26 -0
- package/dist/arp/interceptors/process.d.ts.map +1 -0
- package/dist/arp/interceptors/process.js +157 -0
- package/dist/arp/interceptors/process.js.map +1 -0
- package/dist/arp/interceptors/prompt.d.ts +29 -0
- package/dist/arp/interceptors/prompt.d.ts.map +1 -0
- package/dist/arp/interceptors/prompt.js +82 -0
- package/dist/arp/interceptors/prompt.js.map +1 -0
- package/dist/arp/license/index.d.ts +59 -0
- package/dist/arp/license/index.d.ts.map +1 -0
- package/dist/arp/license/index.js +78 -0
- package/dist/arp/license/index.js.map +1 -0
- package/dist/arp/monitors/filesystem.d.ts +21 -0
- package/dist/arp/monitors/filesystem.d.ts.map +1 -0
- package/dist/arp/monitors/filesystem.js +141 -0
- package/dist/arp/monitors/filesystem.js.map +1 -0
- package/dist/arp/monitors/network.d.ts +32 -0
- package/dist/arp/monitors/network.d.ts.map +1 -0
- package/dist/arp/monitors/network.js +301 -0
- package/dist/arp/monitors/network.js.map +1 -0
- package/dist/arp/monitors/process.d.ts +24 -0
- package/dist/arp/monitors/process.d.ts.map +1 -0
- package/dist/arp/monitors/process.js +205 -0
- package/dist/arp/monitors/process.js.map +1 -0
- package/dist/arp/patterns/ai-threats.d.ts +48 -0
- package/dist/arp/patterns/ai-threats.d.ts.map +1 -0
- package/dist/arp/patterns/ai-threats.js +215 -0
- package/dist/arp/patterns/ai-threats.js.map +1 -0
- package/dist/arp/proxy/forward.d.ts +23 -0
- package/dist/arp/proxy/forward.d.ts.map +1 -0
- package/dist/arp/proxy/forward.js +152 -0
- package/dist/arp/proxy/forward.js.map +1 -0
- package/dist/arp/proxy/server.d.ts +45 -0
- package/dist/arp/proxy/server.d.ts.map +1 -0
- package/dist/arp/proxy/server.js +331 -0
- package/dist/arp/proxy/server.js.map +1 -0
- package/dist/arp/reporting/local-log.d.ts +22 -0
- package/dist/arp/reporting/local-log.d.ts.map +1 -0
- package/dist/arp/reporting/local-log.js +116 -0
- package/dist/arp/reporting/local-log.js.map +1 -0
- package/dist/arp/types.d.ts +230 -0
- package/dist/arp/types.d.ts.map +1 -0
- package/dist/arp/types.js +4 -0
- package/dist/arp/types.js.map +1 -0
- package/dist/attack/custom-payloads.d.ts +11 -0
- package/dist/attack/custom-payloads.d.ts.map +1 -0
- package/dist/attack/custom-payloads.js +108 -0
- package/dist/attack/custom-payloads.js.map +1 -0
- package/dist/attack/fail-policy.d.ts +16 -0
- package/dist/attack/fail-policy.d.ts.map +1 -0
- package/dist/attack/fail-policy.js +36 -0
- package/dist/attack/fail-policy.js.map +1 -0
- package/dist/attack/index.d.ts +12 -0
- package/dist/attack/index.d.ts.map +1 -0
- package/dist/attack/index.js +30 -0
- package/dist/attack/index.js.map +1 -0
- package/dist/attack/payloads/a2a-attacks.d.ts +12 -0
- package/dist/attack/payloads/a2a-attacks.d.ts.map +1 -0
- package/dist/attack/payloads/a2a-attacks.js +221 -0
- package/dist/attack/payloads/a2a-attacks.js.map +1 -0
- package/dist/attack/payloads/capability-abuse.d.ts +8 -0
- package/dist/attack/payloads/capability-abuse.d.ts.map +1 -0
- package/dist/attack/payloads/capability-abuse.js +222 -0
- package/dist/attack/payloads/capability-abuse.js.map +1 -0
- package/dist/attack/payloads/context-manipulation.d.ts +8 -0
- package/dist/attack/payloads/context-manipulation.d.ts.map +1 -0
- package/dist/attack/payloads/context-manipulation.js +217 -0
- package/dist/attack/payloads/context-manipulation.js.map +1 -0
- package/dist/attack/payloads/data-exfiltration.d.ts +8 -0
- package/dist/attack/payloads/data-exfiltration.d.ts.map +1 -0
- package/dist/attack/payloads/data-exfiltration.js +249 -0
- package/dist/attack/payloads/data-exfiltration.js.map +1 -0
- package/dist/attack/payloads/index.d.ts +29 -0
- package/dist/attack/payloads/index.d.ts.map +1 -0
- package/dist/attack/payloads/index.js +76 -0
- package/dist/attack/payloads/index.js.map +1 -0
- package/dist/attack/payloads/jailbreak.d.ts +8 -0
- package/dist/attack/payloads/jailbreak.d.ts.map +1 -0
- package/dist/attack/payloads/jailbreak.js +265 -0
- package/dist/attack/payloads/jailbreak.js.map +1 -0
- package/dist/attack/payloads/mcp-exploitation.d.ts +12 -0
- package/dist/attack/payloads/mcp-exploitation.d.ts.map +1 -0
- package/dist/attack/payloads/mcp-exploitation.js +221 -0
- package/dist/attack/payloads/mcp-exploitation.js.map +1 -0
- package/dist/attack/payloads/prompt-injection.d.ts +8 -0
- package/dist/attack/payloads/prompt-injection.d.ts.map +1 -0
- package/dist/attack/payloads/prompt-injection.js +262 -0
- package/dist/attack/payloads/prompt-injection.js.map +1 -0
- package/dist/attack/scanner.d.ts +84 -0
- package/dist/attack/scanner.d.ts.map +1 -0
- package/dist/attack/scanner.js +509 -0
- package/dist/attack/scanner.js.map +1 -0
- package/dist/attack/types.d.ts +153 -0
- package/dist/attack/types.d.ts.map +1 -0
- package/dist/attack/types.js +46 -0
- package/dist/attack/types.js.map +1 -0
- package/dist/benchmarks/index.d.ts +16 -0
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +27 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/benchmarks/oasb-1.d.ts +112 -0
- package/dist/benchmarks/oasb-1.d.ts.map +1 -0
- package/dist/benchmarks/oasb-1.js +1124 -0
- package/dist/benchmarks/oasb-1.js.map +1 -0
- package/dist/checker/check-skill.d.ts +48 -0
- package/dist/checker/check-skill.d.ts.map +1 -0
- package/dist/checker/check-skill.js +105 -0
- package/dist/checker/check-skill.js.map +1 -0
- package/dist/checker/index.d.ts +12 -0
- package/dist/checker/index.d.ts.map +1 -0
- package/dist/checker/index.js +16 -0
- package/dist/checker/index.js.map +1 -0
- package/dist/checker/permission-analyzer.d.ts +12 -0
- package/dist/checker/permission-analyzer.d.ts.map +1 -0
- package/dist/checker/permission-analyzer.js +84 -0
- package/dist/checker/permission-analyzer.js.map +1 -0
- package/dist/checker/publisher-verifier.d.ts +34 -0
- package/dist/checker/publisher-verifier.d.ts.map +1 -0
- package/dist/checker/publisher-verifier.js +121 -0
- package/dist/checker/publisher-verifier.js.map +1 -0
- package/dist/checker/skill-identifier.d.ts +14 -0
- package/dist/checker/skill-identifier.d.ts.map +1 -0
- package/dist/checker/skill-identifier.js +55 -0
- package/dist/checker/skill-identifier.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3534 -0
- package/dist/cli.js.map +1 -0
- package/dist/hardening/index.d.ts +7 -0
- package/dist/hardening/index.d.ts.map +1 -0
- package/dist/hardening/index.js +9 -0
- package/dist/hardening/index.js.map +1 -0
- package/dist/hardening/llm-checks.d.ts +18 -0
- package/dist/hardening/llm-checks.d.ts.map +1 -0
- package/dist/hardening/llm-checks.js +434 -0
- package/dist/hardening/llm-checks.js.map +1 -0
- package/dist/hardening/mcp-tool-enum.d.ts +45 -0
- package/dist/hardening/mcp-tool-enum.d.ts.map +1 -0
- package/dist/hardening/mcp-tool-enum.js +315 -0
- package/dist/hardening/mcp-tool-enum.js.map +1 -0
- package/dist/hardening/scanner.d.ts +147 -0
- package/dist/hardening/scanner.d.ts.map +1 -0
- package/dist/hardening/scanner.js +5445 -0
- package/dist/hardening/scanner.js.map +1 -0
- package/dist/hardening/security-check.d.ts +85 -0
- package/dist/hardening/security-check.d.ts.map +1 -0
- package/dist/hardening/security-check.js +6 -0
- package/dist/hardening/security-check.js.map +1 -0
- package/dist/hardening/shell-checks.d.ts +21 -0
- package/dist/hardening/shell-checks.d.ts.map +1 -0
- package/dist/hardening/shell-checks.js +236 -0
- package/dist/hardening/shell-checks.js.map +1 -0
- package/dist/index.d.ts +38 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -3525
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +10 -10
- package/dist/mcp-server.js.map +1 -1
- package/dist/oasb/config/dvaa-targets.d.ts +13 -0
- package/dist/oasb/config/dvaa-targets.d.ts.map +1 -0
- package/dist/oasb/config/dvaa-targets.js +89 -0
- package/dist/oasb/config/dvaa-targets.js.map +1 -0
- package/dist/oasb/harness/arp-wrapper.d.ts +29 -0
- package/dist/oasb/harness/arp-wrapper.d.ts.map +1 -0
- package/dist/oasb/harness/arp-wrapper.js +134 -0
- package/dist/oasb/harness/arp-wrapper.js.map +1 -0
- package/dist/oasb/harness/dvaa-client.d.ts +46 -0
- package/dist/oasb/harness/dvaa-client.d.ts.map +1 -0
- package/dist/oasb/harness/dvaa-client.js +98 -0
- package/dist/oasb/harness/dvaa-client.js.map +1 -0
- package/dist/oasb/harness/dvaa-manager.d.ts +17 -0
- package/dist/oasb/harness/dvaa-manager.d.ts.map +1 -0
- package/dist/oasb/harness/dvaa-manager.js +132 -0
- package/dist/oasb/harness/dvaa-manager.js.map +1 -0
- package/dist/oasb/harness/event-collector.d.ts +33 -0
- package/dist/oasb/harness/event-collector.d.ts.map +1 -0
- package/dist/oasb/harness/event-collector.js +86 -0
- package/dist/oasb/harness/event-collector.js.map +1 -0
- package/dist/oasb/harness/metrics.d.ts +14 -0
- package/dist/oasb/harness/metrics.d.ts.map +1 -0
- package/dist/oasb/harness/metrics.js +56 -0
- package/dist/oasb/harness/metrics.js.map +1 -0
- package/dist/oasb/harness/mock-llm-adapter.d.ts +34 -0
- package/dist/oasb/harness/mock-llm-adapter.d.ts.map +1 -0
- package/dist/oasb/harness/mock-llm-adapter.js +69 -0
- package/dist/oasb/harness/mock-llm-adapter.js.map +1 -0
- package/dist/oasb/harness/types.d.ts +74 -0
- package/dist/oasb/harness/types.d.ts.map +1 -0
- package/dist/oasb/harness/types.js +3 -0
- package/dist/oasb/harness/types.js.map +1 -0
- package/dist/plugins/core.d.ts +109 -0
- package/dist/plugins/core.d.ts.map +1 -0
- package/dist/plugins/core.js +30 -0
- package/dist/plugins/core.js.map +1 -0
- package/dist/plugins/credvault.d.ts +22 -0
- package/dist/plugins/credvault.d.ts.map +1 -0
- package/dist/plugins/credvault.js +374 -0
- package/dist/plugins/credvault.js.map +1 -0
- package/dist/plugins/signcrypt.d.ts +27 -0
- package/dist/plugins/signcrypt.d.ts.map +1 -0
- package/dist/plugins/signcrypt.js +317 -0
- package/dist/plugins/signcrypt.js.map +1 -0
- package/dist/plugins/skillguard.d.ts +25 -0
- package/dist/plugins/skillguard.d.ts.map +1 -0
- package/dist/plugins/skillguard.js +346 -0
- package/dist/plugins/skillguard.js.map +1 -0
- package/dist/registry/client.d.ts +125 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/client.js +308 -0
- package/dist/registry/client.js.map +1 -0
- package/dist/registry/contribution.d.ts +178 -0
- package/dist/registry/contribution.d.ts.map +1 -0
- package/dist/registry/contribution.js +272 -0
- package/dist/registry/contribution.js.map +1 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +10 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/scanner/external-scanner.d.ts +13 -0
- package/dist/scanner/external-scanner.d.ts.map +1 -0
- package/dist/scanner/external-scanner.js +299 -0
- package/dist/scanner/external-scanner.js.map +1 -0
- package/dist/scanner/index.d.ts +6 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +9 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/types.d.ts +32 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +6 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/semantic/deep-scan.d.ts +13 -0
- package/dist/semantic/deep-scan.d.ts.map +1 -0
- package/dist/semantic/deep-scan.js +63 -0
- package/dist/semantic/deep-scan.js.map +1 -0
- package/dist/semantic/index.d.ts +17 -0
- package/dist/semantic/index.d.ts.map +1 -0
- package/dist/semantic/index.js +39 -0
- package/dist/semantic/index.js.map +1 -0
- package/dist/semantic/integration/cost-estimator.d.ts +17 -0
- package/dist/semantic/integration/cost-estimator.d.ts.map +1 -0
- package/dist/semantic/integration/cost-estimator.js +54 -0
- package/dist/semantic/integration/cost-estimator.js.map +1 -0
- package/dist/semantic/integration/finding-adapter.d.ts +34 -0
- package/dist/semantic/integration/finding-adapter.d.ts.map +1 -0
- package/dist/semantic/integration/finding-adapter.js +41 -0
- package/dist/semantic/integration/finding-adapter.js.map +1 -0
- package/dist/semantic/integration/oasb-upgrader.d.ts +20 -0
- package/dist/semantic/integration/oasb-upgrader.d.ts.map +1 -0
- package/dist/semantic/integration/oasb-upgrader.js +47 -0
- package/dist/semantic/integration/oasb-upgrader.js.map +1 -0
- package/dist/semantic/llm/budget.d.ts +50 -0
- package/dist/semantic/llm/budget.d.ts.map +1 -0
- package/dist/semantic/llm/budget.js +139 -0
- package/dist/semantic/llm/budget.js.map +1 -0
- package/dist/semantic/llm/cache.d.ts +36 -0
- package/dist/semantic/llm/cache.d.ts.map +1 -0
- package/dist/semantic/llm/cache.js +103 -0
- package/dist/semantic/llm/cache.js.map +1 -0
- package/dist/semantic/llm/client.d.ts +49 -0
- package/dist/semantic/llm/client.d.ts.map +1 -0
- package/dist/semantic/llm/client.js +64 -0
- package/dist/semantic/llm/client.js.map +1 -0
- package/dist/semantic/llm/index.d.ts +33 -0
- package/dist/semantic/llm/index.d.ts.map +1 -0
- package/dist/semantic/llm/index.js +129 -0
- package/dist/semantic/llm/index.js.map +1 -0
- package/dist/semantic/llm/prompts.d.ts +30 -0
- package/dist/semantic/llm/prompts.d.ts.map +1 -0
- package/dist/semantic/llm/prompts.js +120 -0
- package/dist/semantic/llm/prompts.js.map +1 -0
- package/dist/semantic/structural/credential-context.d.ts +14 -0
- package/dist/semantic/structural/credential-context.d.ts.map +1 -0
- package/dist/semantic/structural/credential-context.js +295 -0
- package/dist/semantic/structural/credential-context.js.map +1 -0
- package/dist/semantic/structural/index.d.ts +28 -0
- package/dist/semantic/structural/index.d.ts.map +1 -0
- package/dist/semantic/structural/index.js +138 -0
- package/dist/semantic/structural/index.js.map +1 -0
- package/dist/semantic/structural/instruction.d.ts +19 -0
- package/dist/semantic/structural/instruction.d.ts.map +1 -0
- package/dist/semantic/structural/instruction.js +167 -0
- package/dist/semantic/structural/instruction.js.map +1 -0
- package/dist/semantic/structural/mcp-config.d.ts +22 -0
- package/dist/semantic/structural/mcp-config.d.ts.map +1 -0
- package/dist/semantic/structural/mcp-config.js +294 -0
- package/dist/semantic/structural/mcp-config.js.map +1 -0
- package/dist/semantic/structural/permission-model.d.ts +16 -0
- package/dist/semantic/structural/permission-model.d.ts.map +1 -0
- package/dist/semantic/structural/permission-model.js +121 -0
- package/dist/semantic/structural/permission-model.js.map +1 -0
- package/dist/semantic/types.d.ts +122 -0
- package/dist/semantic/types.d.ts.map +1 -0
- package/dist/semantic/types.js +10 -0
- package/dist/semantic/types.js.map +1 -0
- package/package.json +25 -14
package/README.md
CHANGED
|
@@ -1,60 +1,59 @@
|
|
|
1
|
-
> **[OpenA2A](https://github.com/opena2a-org
|
|
1
|
+
> **[OpenA2A](https://github.com/opena2a-org)**: [CLI](https://github.com/opena2a-org/opena2a) · [Secretless](https://github.com/opena2a-org/secretless-ai) · [AIM](https://github.com/opena2a-org/agent-identity-management) · [Browser Guard](https://github.com/opena2a-org/AI-BrowserGuard) · [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent) · [Registry](https://registry.opena2a.org)
|
|
2
2
|
|
|
3
3
|
# HackMyAgent
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/hackmyagent)
|
|
6
6
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
7
|
-
[](https://github.com/opena2a-org/hackmyagent)
|
|
8
8
|
|
|
9
9
|
**Find it. Break it. Fix it.**
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
AI agents execute arbitrary code with your permissions. HackMyAgent finds what can go wrong before an attacker does.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Security scanner and red-team toolkit for AI agents. 147 security checks across 30 categories, 55 adversarial attack payloads, auto-fix with rollback, and OASB-1 compliance benchmarking -- all in a single package.
|
|
14
|
+
|
|
15
|
+
Scans Claude Code, Cursor, VS Code, and any MCP server setup.
|
|
16
|
+
|
|
17
|
+
[Website](https://hackmyagent.com) | [Security Checks Reference](docs/SECURITY_CHECKS.md) | [OpenA2A CLI](https://github.com/opena2a-org/opena2a)
|
|
14
18
|
|
|
15
19
|
---
|
|
16
20
|
|
|
17
21
|
## Quick Start
|
|
18
22
|
|
|
19
23
|
```bash
|
|
20
|
-
npx hackmyagent secure
|
|
21
|
-
npx hackmyagent secure --fix
|
|
22
|
-
npx hackmyagent
|
|
24
|
+
npx hackmyagent secure # 147-check security scan
|
|
25
|
+
npx hackmyagent secure --fix # auto-fix issues (backups created automatically)
|
|
26
|
+
npx hackmyagent attack --local # red-team with 55 adversarial payloads
|
|
27
|
+
npx hackmyagent secure -b oasb-1 # OASB-1 compliance benchmark
|
|
23
28
|
```
|
|
24
29
|
|
|
25
|
-
No config files
|
|
30
|
+
No config files. No setup. Works out of the box on any AI agent project.
|
|
26
31
|
|
|
27
32
|
---
|
|
28
33
|
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- [secure-openclaw](#hackmyagent-secure-openclaw) — OpenClaw-specific scanning
|
|
40
|
-
- [rollback](#hackmyagent-rollback) — undo auto-fix changes
|
|
41
|
-
- [Plugin Architecture](#plugin-architecture)
|
|
42
|
-
- [CI/CD Integration](#cicd-integration)
|
|
43
|
-
- [Exit Codes](#exit-codes)
|
|
44
|
-
- [Contributing](#contributing)
|
|
34
|
+
## What It Scans
|
|
35
|
+
|
|
36
|
+
| Platform | What HackMyAgent detects |
|
|
37
|
+
|----------|--------------------------|
|
|
38
|
+
| **Claude Code** | CLAUDE.md misconfigurations, skill permissions, MCP server exposure |
|
|
39
|
+
| **Cursor** | .cursor/ rules, MCP server configs, overly permissive settings |
|
|
40
|
+
| **VS Code** | .vscode/mcp.json configurations, extension risks |
|
|
41
|
+
| **Any MCP setup** | Transport security, tool boundaries, auth weaknesses |
|
|
42
|
+
|
|
43
|
+
All platforms are scanned automatically — no flags needed.
|
|
45
44
|
|
|
46
45
|
---
|
|
47
46
|
|
|
48
47
|
## Installation
|
|
49
48
|
|
|
50
49
|
```bash
|
|
51
|
-
# Run directly (no install
|
|
50
|
+
# Run directly (no install)
|
|
52
51
|
npx hackmyagent secure
|
|
53
52
|
|
|
54
53
|
# Install globally
|
|
55
54
|
npm install -g hackmyagent
|
|
56
55
|
|
|
57
|
-
# Add to
|
|
56
|
+
# Add to devDependencies
|
|
58
57
|
npm install --save-dev hackmyagent
|
|
59
58
|
```
|
|
60
59
|
|
|
@@ -66,17 +65,16 @@ npm install --save-dev hackmyagent
|
|
|
66
65
|
|
|
67
66
|
### `hackmyagent secure`
|
|
68
67
|
|
|
69
|
-
|
|
68
|
+
Run 147 security checks across 30 categories. The primary command most users need.
|
|
70
69
|
|
|
71
70
|
```bash
|
|
72
|
-
hackmyagent secure #
|
|
71
|
+
hackmyagent secure # scan current directory
|
|
73
72
|
hackmyagent secure ./my-project # scan specific directory
|
|
74
73
|
hackmyagent secure --fix # auto-fix issues
|
|
75
74
|
hackmyagent secure --fix --dry-run # preview fixes before applying
|
|
76
75
|
hackmyagent secure --ignore CRED-001,GIT-002 # skip specific checks
|
|
77
76
|
hackmyagent secure --json # JSON output for CI/CD
|
|
78
77
|
hackmyagent secure --verbose # show all checks including passed
|
|
79
|
-
hackmyagent secure --no-color # disable colored output
|
|
80
78
|
```
|
|
81
79
|
|
|
82
80
|
<details>
|
|
@@ -120,8 +118,6 @@ hackmyagent secure --no-color # disable colored output
|
|
|
120
118
|
<details>
|
|
121
119
|
<summary>Auto-fix capabilities</summary>
|
|
122
120
|
|
|
123
|
-
**General (`hackmyagent secure --fix`):**
|
|
124
|
-
|
|
125
121
|
| Check | Issue | Auto-fix |
|
|
126
122
|
|-------|-------|----------|
|
|
127
123
|
| CRED-001 | Exposed API keys | Replace with env var reference |
|
|
@@ -130,106 +126,32 @@ hackmyagent secure --no-color # disable colored output
|
|
|
130
126
|
| PERM-001 | Overly permissive files | Set restrictive permissions |
|
|
131
127
|
| MCP-001 | Root filesystem access | Scope to project directory |
|
|
132
128
|
| NET-001 | Bound to 0.0.0.0 | Bind to 127.0.0.1 |
|
|
133
|
-
|
|
134
|
-
**OpenClaw (`hackmyagent secure-openclaw --fix`):**
|
|
135
|
-
|
|
136
|
-
| Check | Issue | Auto-fix |
|
|
137
|
-
|-------|-------|----------|
|
|
138
|
-
| GATEWAY-001 | Bound to 0.0.0.0 | Bind to 127.0.0.1 |
|
|
129
|
+
| GATEWAY-001 | Gateway bound to 0.0.0.0 | Bind to 127.0.0.1 |
|
|
139
130
|
| GATEWAY-003 | Plaintext token | Replace with `${OPENCLAW_AUTH_TOKEN}` |
|
|
140
131
|
| GATEWAY-004 | Approvals disabled | Enable approvals |
|
|
141
132
|
| GATEWAY-005 | Sandbox disabled | Enable sandbox |
|
|
142
133
|
|
|
143
|
-
Use `--dry-run`
|
|
134
|
+
Use `--dry-run` to preview changes. Backups are created in `.hackmyagent-backup/`.
|
|
144
135
|
|
|
145
136
|
</details>
|
|
146
137
|
|
|
147
138
|
---
|
|
148
139
|
|
|
149
|
-
### `hackmyagent fix-all`
|
|
150
|
-
|
|
151
|
-
Run all OpenA2A security plugins in sequence: scan, fix, report.
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
hackmyagent fix-all # scan and fix current directory
|
|
155
|
-
hackmyagent fix-all ./my-agent # target specific directory
|
|
156
|
-
hackmyagent fix-all --dry-run # preview without applying
|
|
157
|
-
hackmyagent fix-all --scan-only # scan only, no fixes
|
|
158
|
-
hackmyagent fix-all --json # JSON output for CI
|
|
159
|
-
hackmyagent fix-all --with-aim # enable AIM identity + audit logging
|
|
160
|
-
hackmyagent fix-all -v # verbose output
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
**Plugin execution order:**
|
|
164
|
-
|
|
165
|
-
| # | Plugin | What it does |
|
|
166
|
-
|---|--------|--------------|
|
|
167
|
-
| 1 | **SkillGuard** | Hash pinning, tamper detection, dangerous pattern scanning (reverse shells, exfil, prompt injection) |
|
|
168
|
-
| 2 | **SignCrypt** | Ed25519 signing of SKILL.md and HEARTBEAT.md, SHA-256 hash pinning, signature verification |
|
|
169
|
-
| 3 | **CredVault** | Credential detection (10 patterns), env var replacement, AES-256-GCM encrypted store |
|
|
170
|
-
|
|
171
|
-
**`--with-aim` adds:**
|
|
172
|
-
- Ed25519 identity generation for the agent
|
|
173
|
-
- Cryptographic audit log at `.opena2a/aim/audit.jsonl`
|
|
174
|
-
- Capability policy enforcement via `policy.yaml`
|
|
175
|
-
- 8-factor trust scoring
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
### `hackmyagent check`
|
|
180
|
-
|
|
181
|
-
Verify a skill before installing it.
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
hackmyagent check @publisher/skill-name
|
|
185
|
-
hackmyagent check @publisher/skill --json
|
|
186
|
-
hackmyagent check @publisher/skill --offline # skip DNS verification
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Checks: publisher identity (DNS TXT), permissions requested, revocation status.
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
### `hackmyagent scan`
|
|
194
|
-
|
|
195
|
-
Scan external infrastructure for exposed AI agent endpoints.
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
hackmyagent scan example.com
|
|
199
|
-
hackmyagent scan 192.168.1.100 -p 3000,8080
|
|
200
|
-
hackmyagent scan example.com --json
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
Detects: exposed MCP SSE/tools endpoints, public configs, API keys in responses, debug interfaces.
|
|
204
|
-
|
|
205
|
-
Scoring: A (90-100), B (80-89), C (70-79), D (60-69), F (<60).
|
|
206
|
-
|
|
207
|
-
> Only scan systems you own or have written authorization to test.
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
140
|
### `hackmyagent attack`
|
|
212
141
|
|
|
213
|
-
Red
|
|
142
|
+
Red-team your AI agent with 55 adversarial payloads across 5 attack categories.
|
|
214
143
|
|
|
215
144
|
```bash
|
|
216
145
|
hackmyagent attack --local # local simulation
|
|
217
|
-
hackmyagent attack --local --system-prompt "You are helpful" # with custom prompt
|
|
146
|
+
hackmyagent attack --local --system-prompt "You are helpful" # with custom system prompt
|
|
218
147
|
hackmyagent attack https://api.example.com/v1/chat # test live endpoint
|
|
219
148
|
hackmyagent attack --local --category prompt-injection # single category
|
|
220
|
-
hackmyagent attack --local --intensity aggressive # full suite
|
|
149
|
+
hackmyagent attack --local --intensity aggressive # full payload suite
|
|
221
150
|
hackmyagent attack --local -f sarif -o results.sarif # SARIF output
|
|
222
151
|
hackmyagent attack https://api.example.com --fail-on-vulnerable medium # CI gate
|
|
223
|
-
hackmyagent attack https://api.example.com --api-format anthropic # Anthropic API
|
|
224
|
-
hackmyagent attack https://api.example.com --model gpt-4o # specify model
|
|
225
|
-
hackmyagent attack https://api.example.com -H "Authorization: Bearer tk" # custom header
|
|
226
|
-
hackmyagent attack --local --timeout 5000 --delay 500 # timing controls
|
|
227
|
-
hackmyagent attack --local --stop-on-success # stop at first hit
|
|
152
|
+
hackmyagent attack https://api.example.com --api-format anthropic # Anthropic API format
|
|
228
153
|
```
|
|
229
154
|
|
|
230
|
-
<details>
|
|
231
|
-
<summary>Attack categories and custom payloads</summary>
|
|
232
|
-
|
|
233
155
|
| Category | Payloads | Description |
|
|
234
156
|
|----------|----------|-------------|
|
|
235
157
|
| `prompt-injection` | 12 | Manipulate agent behavior via injected instructions |
|
|
@@ -238,9 +160,14 @@ hackmyagent attack --local --stop-on-success # stop a
|
|
|
238
160
|
| `capability-abuse` | 10 | Misuse agent tools for unintended actions |
|
|
239
161
|
| `context-manipulation` | 10 | Poison agent context or memory |
|
|
240
162
|
|
|
241
|
-
Intensity: `passive` (observation only), `active` (default), `aggressive` (full suite).
|
|
163
|
+
Intensity levels: `passive` (observation only), `active` (default), `aggressive` (full suite).
|
|
164
|
+
|
|
165
|
+
Output formats: `text`, `json`, `sarif` (GitHub Security tab), `html`.
|
|
166
|
+
|
|
167
|
+
<details>
|
|
168
|
+
<summary>Custom payloads</summary>
|
|
242
169
|
|
|
243
|
-
|
|
170
|
+
Create a JSON file and pass with `--payload-file custom.json`:
|
|
244
171
|
|
|
245
172
|
```json
|
|
246
173
|
{
|
|
@@ -263,26 +190,25 @@ Only `id` and `payload` are required.
|
|
|
263
190
|
|
|
264
191
|
</details>
|
|
265
192
|
|
|
266
|
-
|
|
193
|
+
> Only test systems you own or have written authorization to test.
|
|
267
194
|
|
|
268
195
|
---
|
|
269
196
|
|
|
270
|
-
### `hackmyagent secure
|
|
197
|
+
### `hackmyagent secure -b oasb-1`
|
|
271
198
|
|
|
272
|
-
Run the [OASB-1](https://oasb.ai/oasb-1) (Open Agent Security Benchmark) — 46 controls across 10 categories.
|
|
199
|
+
Run the [OASB-1](https://oasb.ai/oasb-1) (Open Agent Security Benchmark) — 46 controls across 10 categories with three maturity levels.
|
|
273
200
|
|
|
274
201
|
```bash
|
|
275
202
|
hackmyagent secure -b oasb-1 # L1 baseline (26 controls)
|
|
276
203
|
hackmyagent secure -b oasb-1 -l L2 # L2 standard (44 controls)
|
|
277
204
|
hackmyagent secure -b oasb-1 -l L3 # L3 hardened (46 controls)
|
|
278
|
-
hackmyagent secure -b oasb-1 -c "Input Security" # filter
|
|
279
|
-
hackmyagent secure -b oasb-1 -v # verbose (every control)
|
|
205
|
+
hackmyagent secure -b oasb-1 -c "Input Security" # filter by category
|
|
280
206
|
hackmyagent secure -b oasb-1 -f html -o report.html # HTML report
|
|
281
207
|
hackmyagent secure -b oasb-1 --fail-below 70 # CI gate
|
|
282
208
|
```
|
|
283
209
|
|
|
284
210
|
<details>
|
|
285
|
-
<summary>OASB-1 categories
|
|
211
|
+
<summary>OASB-1 categories</summary>
|
|
286
212
|
|
|
287
213
|
| # | Category | Controls |
|
|
288
214
|
|---|----------|----------|
|
|
@@ -307,144 +233,86 @@ Output formats: `text`, `json`, `sarif`, `html`, `asp` (Agent Security Profile).
|
|
|
307
233
|
|
|
308
234
|
---
|
|
309
235
|
|
|
310
|
-
### `hackmyagent
|
|
236
|
+
### `hackmyagent fix-all`
|
|
311
237
|
|
|
312
|
-
|
|
238
|
+
Run all security plugins in sequence: credential vault, file signing, skill guard. Applies fixes and generates a report.
|
|
313
239
|
|
|
314
240
|
```bash
|
|
315
|
-
hackmyagent
|
|
316
|
-
hackmyagent
|
|
317
|
-
hackmyagent
|
|
318
|
-
hackmyagent
|
|
319
|
-
hackmyagent
|
|
241
|
+
hackmyagent fix-all # scan and fix
|
|
242
|
+
hackmyagent fix-all ./my-agent # target specific directory
|
|
243
|
+
hackmyagent fix-all --dry-run # preview without modifying
|
|
244
|
+
hackmyagent fix-all --scan-only # scan only, no fixes
|
|
245
|
+
hackmyagent fix-all --with-aim # add agent identity + audit logging
|
|
246
|
+
hackmyagent fix-all --json # JSON output
|
|
320
247
|
```
|
|
321
248
|
|
|
322
|
-
|
|
249
|
+
**Plugins run in order:**
|
|
250
|
+
|
|
251
|
+
| Plugin | What it does |
|
|
252
|
+
|--------|--------------|
|
|
253
|
+
| **SkillGuard** | Hash pinning, tamper detection, dangerous pattern scanning (reverse shells, exfiltration, prompt injection) |
|
|
254
|
+
| **SignCrypt** | Ed25519 signing of SKILL.md and HEARTBEAT.md, SHA-256 hash pinning, signature verification |
|
|
255
|
+
| **CredVault** | Credential detection (10 patterns), env var replacement, AES-256-GCM encrypted store |
|
|
323
256
|
|
|
324
|
-
|
|
257
|
+
**`--with-aim` adds:** Ed25519 agent identity, cryptographic audit log, capability policy enforcement, 8-factor trust scoring.
|
|
325
258
|
|
|
326
259
|
---
|
|
327
260
|
|
|
328
|
-
### `hackmyagent
|
|
261
|
+
### `hackmyagent check`
|
|
329
262
|
|
|
330
|
-
|
|
263
|
+
Verify a skill's publisher identity and permissions before installing it.
|
|
331
264
|
|
|
332
265
|
```bash
|
|
333
|
-
hackmyagent
|
|
334
|
-
hackmyagent
|
|
266
|
+
hackmyagent check @publisher/skill-name
|
|
267
|
+
hackmyagent check @publisher/skill --json
|
|
268
|
+
hackmyagent check @publisher/skill --offline # skip DNS verification
|
|
335
269
|
```
|
|
336
270
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
## Plugin Architecture
|
|
340
|
-
|
|
341
|
-
HackMyAgent uses a modular plugin system built on [`@opena2a/plugin-core`](packages/plugin-core). Each plugin implements `scan()` to detect issues and `fix()` to remediate them.
|
|
342
|
-
|
|
343
|
-
### Packages
|
|
271
|
+
Checks: publisher identity (DNS TXT), permissions requested, revocation status.
|
|
344
272
|
|
|
345
|
-
|
|
346
|
-
|---------|-----|-------------|
|
|
347
|
-
| [`@opena2a/plugin-core`](packages/plugin-core) | — | Plugin interface, registry, shared types |
|
|
348
|
-
| [`@opena2a/aim-core`](packages/aim-core) | — | Ed25519 identity, audit logging, capability policy, trust scoring |
|
|
349
|
-
| [`@opena2a/credvault-openclaw`](packages/credvault-openclaw) | — | Credential scanning (10 patterns), env var replacement, AES-256-GCM store |
|
|
350
|
-
| [`@opena2a/signcrypt-openclaw`](packages/signcrypt-openclaw) | — | Ed25519 file signing, SHA-256 hash pinning, signature verification |
|
|
351
|
-
| [`@opena2a/skillguard-openclaw`](packages/skillguard-openclaw) | — | Permission pinning, tamper detection, dangerous pattern scanning |
|
|
273
|
+
---
|
|
352
274
|
|
|
353
|
-
###
|
|
275
|
+
### `hackmyagent scan`
|
|
354
276
|
|
|
355
|
-
|
|
356
|
-
import type {
|
|
357
|
-
OpenA2APlugin,
|
|
358
|
-
PluginMetadata,
|
|
359
|
-
PluginStatus,
|
|
360
|
-
Finding,
|
|
361
|
-
Remediation,
|
|
362
|
-
FixOptions,
|
|
363
|
-
PluginInitOptions,
|
|
364
|
-
} from '@opena2a/plugin-core';
|
|
365
|
-
|
|
366
|
-
export const metadata: PluginMetadata = {
|
|
367
|
-
packageName: '@my-org/my-plugin',
|
|
368
|
-
displayName: 'My Plugin',
|
|
369
|
-
description: 'Detects and fixes X',
|
|
370
|
-
version: '1.0.0',
|
|
371
|
-
findings: ['MY-001', 'MY-002'],
|
|
372
|
-
scoreImprovement: 10,
|
|
373
|
-
};
|
|
277
|
+
Scan external infrastructure for exposed AI agent endpoints.
|
|
374
278
|
|
|
375
|
-
|
|
376
|
-
|
|
279
|
+
```bash
|
|
280
|
+
hackmyagent scan example.com
|
|
281
|
+
hackmyagent scan 192.168.1.100 -p 3000,8080
|
|
282
|
+
hackmyagent scan example.com --json
|
|
283
|
+
```
|
|
377
284
|
|
|
378
|
-
|
|
379
|
-
// Access AIM Core for identity-aware audit logging:
|
|
380
|
-
// const aimCore = options?.aimCore;
|
|
381
|
-
}
|
|
285
|
+
Detects: exposed MCP SSE/tools endpoints, public configs, API keys in responses, debug interfaces.
|
|
382
286
|
|
|
383
|
-
|
|
384
|
-
// Scan the agent directory and return findings
|
|
385
|
-
return [
|
|
386
|
-
{
|
|
387
|
-
id: 'MY-001',
|
|
388
|
-
title: 'Insecure widget detected',
|
|
389
|
-
description: 'Widget at config.json line 12 uses plaintext.',
|
|
390
|
-
severity: 'high', // critical | high | medium | low
|
|
391
|
-
filePath: 'config.json',
|
|
392
|
-
line: 12,
|
|
393
|
-
autoFixable: true,
|
|
394
|
-
},
|
|
395
|
-
];
|
|
396
|
-
}
|
|
287
|
+
Scoring: A (90-100), B (80-89), C (70-79), D (60-69), F (<60).
|
|
397
288
|
|
|
398
|
-
|
|
399
|
-
if (options?.dryRun) {
|
|
400
|
-
// Return what would be fixed without modifying files
|
|
401
|
-
return [{ findingId: 'MY-001', description: 'Would encrypt widget', filesModified: ['config.json'], rollbackAvailable: false }];
|
|
402
|
-
}
|
|
289
|
+
> Only scan systems you own or have written authorization to test.
|
|
403
290
|
|
|
404
|
-
|
|
405
|
-
return [{ findingId: 'MY-001', description: 'Encrypted widget', filesModified: ['config.json'], rollbackAvailable: false }];
|
|
406
|
-
}
|
|
291
|
+
---
|
|
407
292
|
|
|
408
|
-
|
|
409
|
-
return { name: metadata.displayName, version: metadata.version, active: true, findingsCount: 0 };
|
|
410
|
-
}
|
|
293
|
+
### `hackmyagent rollback`
|
|
411
294
|
|
|
412
|
-
|
|
413
|
-
}
|
|
295
|
+
Undo auto-fix changes. Backups are created automatically by `secure --fix` and `fix-all`.
|
|
414
296
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
297
|
+
```bash
|
|
298
|
+
hackmyagent rollback # rollback current directory
|
|
299
|
+
hackmyagent rollback ./my-project # rollback specific directory
|
|
418
300
|
```
|
|
419
301
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
```typescript
|
|
423
|
-
import { registerPlugin } from '@opena2a/plugin-core';
|
|
424
|
-
import { createPlugin, metadata } from '@my-org/my-plugin';
|
|
425
|
-
|
|
426
|
-
registerPlugin({
|
|
427
|
-
metadata,
|
|
428
|
-
create: createPlugin,
|
|
429
|
-
});
|
|
430
|
-
```
|
|
302
|
+
---
|
|
431
303
|
|
|
432
|
-
###
|
|
304
|
+
### `hackmyagent secure-openclaw`
|
|
433
305
|
|
|
434
|
-
|
|
306
|
+
47 specialized checks for OpenClaw/Moltbot installations.
|
|
435
307
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
| `configSigned` | 0.10 | Configuration integrity verified |
|
|
443
|
-
| `skillsVerified` | 0.10 | Skills cryptographically signed |
|
|
444
|
-
| `networkControlled` | 0.10 | Network access restricted |
|
|
445
|
-
| `heartbeatMonitored` | 0.10 | Heartbeat monitoring active |
|
|
308
|
+
```bash
|
|
309
|
+
hackmyagent secure-openclaw # scan default location
|
|
310
|
+
hackmyagent secure-openclaw ~/.moltbot # specific directory
|
|
311
|
+
hackmyagent secure-openclaw --fix # auto-fix gateway configs
|
|
312
|
+
hackmyagent secure-openclaw --fix --dry-run # preview fixes
|
|
313
|
+
```
|
|
446
314
|
|
|
447
|
-
|
|
315
|
+
Detects: CVE-2026-25253, ClawHavoc IOCs, reverse shells, credential exfiltration, gateway misconfigs, disabled sandbox.
|
|
448
316
|
|
|
449
317
|
---
|
|
450
318
|
|
|
@@ -463,7 +331,7 @@ jobs:
|
|
|
463
331
|
- uses: actions/setup-node@v4
|
|
464
332
|
with: { node-version: '20' }
|
|
465
333
|
- run: npx hackmyagent secure --json > security-report.json
|
|
466
|
-
- run: npx hackmyagent
|
|
334
|
+
- run: npx hackmyagent secure -b oasb-1 --fail-below 70
|
|
467
335
|
- uses: actions/upload-artifact@v4
|
|
468
336
|
with: { name: security-reports, path: '*.json' }
|
|
469
337
|
```
|
|
@@ -484,7 +352,7 @@ jobs:
|
|
|
484
352
|
npx hackmyagent secure --ignore LOG-001,RATE-001
|
|
485
353
|
```
|
|
486
354
|
|
|
487
|
-
### JSON
|
|
355
|
+
### JSON Output
|
|
488
356
|
|
|
489
357
|
```bash
|
|
490
358
|
# Filter critical findings
|
|
@@ -498,22 +366,80 @@ hackmyagent secure --json | jq '[.findings[].id | split("-")[0]] | group_by(.) |
|
|
|
498
366
|
|
|
499
367
|
## Exit Codes
|
|
500
368
|
|
|
501
|
-
| Code | Meaning |
|
|
502
|
-
|
|
503
|
-
| `0` | Clean — no critical/high issues |
|
|
504
|
-
| `1` | Critical or high severity issues
|
|
505
|
-
| `2` | Incomplete scan — one or more plugins failed
|
|
369
|
+
| Code | Meaning |
|
|
370
|
+
|------|---------|
|
|
371
|
+
| `0` | Clean — no critical/high issues |
|
|
372
|
+
| `1` | Critical or high severity issues found |
|
|
373
|
+
| `2` | Incomplete scan — one or more plugins failed |
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## What's Included
|
|
378
|
+
|
|
379
|
+
HackMyAgent consolidates several OpenA2A security modules into a single package:
|
|
380
|
+
|
|
381
|
+
| Module | Description | Previously |
|
|
382
|
+
|--------|-------------|------------|
|
|
383
|
+
| Security scanner | 147 checks across 30 categories | hackmyagent-core |
|
|
384
|
+
| Attack simulation | 55 adversarial payloads, 5 categories | standalone |
|
|
385
|
+
| CredVault plugin | Credential detection + AES-256-GCM vault | @opena2a/credvault |
|
|
386
|
+
| SignCrypt plugin | Ed25519 signing + SHA-256 hash pinning | @opena2a/signcrypt |
|
|
387
|
+
| SkillGuard plugin | Permission pinning + tamper detection | @opena2a/skillguard |
|
|
388
|
+
| OASB benchmark | 46 controls, 3 maturity levels | @opena2a/oasb |
|
|
389
|
+
| ARP integration | Agent Runtime Protection hooks | @opena2a/arp |
|
|
390
|
+
| Semantic engine | Semantic analysis for finding deduplication | @opena2a/semantic-engine |
|
|
391
|
+
|
|
392
|
+
### Subpath Exports
|
|
393
|
+
|
|
394
|
+
For programmatic use, the package exposes subpath exports:
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
import { HardeningScanner } from 'hackmyagent'; // Scanner engine
|
|
398
|
+
import { registerPlugin } from 'hackmyagent/plugins'; // Plugin API
|
|
399
|
+
import { SemanticEngine } from 'hackmyagent/semantic'; // Semantic analysis
|
|
400
|
+
import { ARPMonitor } from 'hackmyagent/arp'; // Runtime protection
|
|
401
|
+
import { OASBHarness } from 'hackmyagent/oasb'; // Benchmark harness
|
|
402
|
+
```
|
|
506
403
|
|
|
507
404
|
---
|
|
508
405
|
|
|
509
|
-
##
|
|
406
|
+
## Writing Plugins
|
|
407
|
+
|
|
408
|
+
HackMyAgent supports custom security plugins. Each plugin implements `scan()` and `fix()` methods.
|
|
409
|
+
|
|
410
|
+
```typescript
|
|
411
|
+
import type { OpenA2APlugin, Finding, Remediation, FixOptions } from 'hackmyagent/plugins';
|
|
412
|
+
|
|
413
|
+
export class MyPlugin implements OpenA2APlugin {
|
|
414
|
+
readonly metadata = {
|
|
415
|
+
packageName: '@my-org/my-plugin',
|
|
416
|
+
displayName: 'My Plugin',
|
|
417
|
+
description: 'Detects and fixes X',
|
|
418
|
+
version: '1.0.0',
|
|
419
|
+
findings: ['MY-001'],
|
|
420
|
+
scoreImprovement: 10,
|
|
421
|
+
};
|
|
510
422
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
423
|
+
async scan(agentDir: string): Promise<Finding[]> {
|
|
424
|
+
return [{
|
|
425
|
+
id: 'MY-001',
|
|
426
|
+
title: 'Insecure widget',
|
|
427
|
+
description: 'Widget uses plaintext.',
|
|
428
|
+
severity: 'high',
|
|
429
|
+
filePath: 'config.json',
|
|
430
|
+
line: 12,
|
|
431
|
+
autoFixable: true,
|
|
432
|
+
}];
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
async fix(agentDir: string, options?: FixOptions): Promise<Remediation[]> {
|
|
436
|
+
if (options?.dryRun) return [{ findingId: 'MY-001', description: 'Would encrypt widget', filesModified: ['config.json'], rollbackAvailable: false }];
|
|
437
|
+
return [{ findingId: 'MY-001', description: 'Encrypted widget', filesModified: ['config.json'], rollbackAvailable: false }];
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
See the [full plugin API documentation](docs/PLUGIN_API.md) for details.
|
|
517
443
|
|
|
518
444
|
---
|
|
519
445
|
|
|
@@ -533,22 +459,8 @@ Contributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
|
533
459
|
git clone https://github.com/opena2a-org/hackmyagent.git
|
|
534
460
|
cd hackmyagent
|
|
535
461
|
npm install
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
### Monorepo Structure
|
|
541
|
-
|
|
542
|
-
```
|
|
543
|
-
packages/
|
|
544
|
-
cli/ # CLI entry point (hackmyagent command)
|
|
545
|
-
core/ # Scanner engine (147 checks)
|
|
546
|
-
aim-core/ # Ed25519 identity, audit, policy, trust
|
|
547
|
-
plugin-core/ # Plugin interface and registry
|
|
548
|
-
credvault-openclaw/ # Credential scanner plugin
|
|
549
|
-
signcrypt-openclaw/ # Signing and hash pinning plugin
|
|
550
|
-
skillguard-openclaw/ # Permission and pattern scanner plugin
|
|
551
|
-
semantic-engine/ # Semantic analysis engine for deep scanning
|
|
462
|
+
npm run build
|
|
463
|
+
npm test # 765 tests
|
|
552
464
|
```
|
|
553
465
|
|
|
554
466
|
---
|
|
@@ -563,9 +475,8 @@ Apache-2.0
|
|
|
563
475
|
|
|
564
476
|
| Project | Description | Install |
|
|
565
477
|
|---------|-------------|---------|
|
|
566
|
-
| [**
|
|
567
|
-
| [**HackMyAgent**](https://github.com/opena2a-org/hackmyagent) | Security scanner -- 147 checks, attack mode, auto-fix | `npx hackmyagent secure` |
|
|
568
|
-
| [**OASB**](https://github.com/opena2a-org/oasb) | Open Agent Security Benchmark -- 182 attack scenarios | `npm install @opena2a/oasb` |
|
|
569
|
-
| [**ARP**](https://github.com/opena2a-org/arp) | Agent Runtime Protection -- process, network, filesystem monitoring | `npm install @opena2a/arp` |
|
|
478
|
+
| [**OpenA2A CLI**](https://github.com/opena2a-org/opena2a) | Unified security CLI -- scan, protect, guard, runtime, shield | `npx opena2a` |
|
|
570
479
|
| [**Secretless AI**](https://github.com/opena2a-org/secretless-ai) | Keep credentials out of AI context windows | `npx secretless-ai init` |
|
|
571
|
-
| [**
|
|
480
|
+
| [**AIM**](https://github.com/opena2a-org/agent-identity-management) | Agent Identity Management -- identity and access control for AI agents | Self-hosted |
|
|
481
|
+
| [**AI Browser Guard**](https://github.com/opena2a-org/AI-BrowserGuard) | Detect and control AI agents in the browser | Chrome Web Store |
|
|
482
|
+
| [**DVAA**](https://github.com/opena2a-org/damn-vulnerable-ai-agent) | Damn Vulnerable AI Agent -- security training target | `docker pull opena2a/dvaa` |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OASB v2 Behavioral Governance Controls
|
|
3
|
+
*
|
|
4
|
+
* All 68 controls across domains 7-14 of the Open Agent Security Benchmark.
|
|
5
|
+
* Each control defines keyword groups for pattern-based detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentTier, GovernanceControl, GovernanceDomain, GovernanceSeverity } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* All 68 governance controls across domains 7-14.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ALL_GOVERNANCE_CONTROLS: GovernanceControl[];
|
|
12
|
+
/**
|
|
13
|
+
* Domain metadata for display/reporting.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DOMAIN_METADATA: Record<GovernanceDomain, {
|
|
16
|
+
number: number;
|
|
17
|
+
name: string;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Get all controls for a specific domain.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getControlsByDomain(domain: GovernanceDomain): GovernanceControl[];
|
|
23
|
+
/**
|
|
24
|
+
* Get a specific control by ID.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getControlById(id: string): GovernanceControl | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Get controls applicable to a specific agent tier.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getControlsForTier(tier: AgentTier): GovernanceControl[];
|
|
31
|
+
/**
|
|
32
|
+
* Get controls by severity.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getControlsBySeverity(severity: GovernanceSeverity): GovernanceControl[];
|
|
35
|
+
//# sourceMappingURL=controls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/abgr/controls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAq/BlG;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,EAStD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAStF,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,CAEvF"}
|