Scan Report
45 /100
capability-evolver-zc
A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution.
The skill has extensive undeclared shell execution, undeclared external network calls to evomap.ai, and stores hardcoded credentials in test files — a significant doc-to-code mismatch across filesystem, shell, and network resources.
Use with caution
1) Document all execSync usages in SKILL.md (git, health checks, clawhub, process enumeration). 2) Declare network access to evomap.ai endpoints (A2A_HUB_URL). 3) Remove hardcoded credentials from test/sanitize.test.js or use environment-variable substitution. 4) Verify sanitizePayload truly redacts all credential patterns before hub publishing. 5) Consider adding the 3 dangerous shell commands to a deny-list alongside the existing allow-list in validation filtering.
Findings 9 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Undeclared shell command execution throughout codebase | src/evolve.js:1 |
| Medium | Undeclared external network communications to evomap.ai | src/gep/a2aProtocol.js:1 |
| Medium | Environment fingerprinting sent to external hub | src/gep/envFingerprint.js:1 |
| Medium | Session log reading from agent home directory | src/evolve.js:1 |
| Medium | Dynamic command execution via INTEGRATION_STATUS_CMD env var | src/evolve.js:1 |
| Medium | Validation command allow-list has narrow coverage — dangerous commands present in test corpus | test/skillDistiller.test.js:210 |
| Low | Hardcoded API credentials in test file | test/sanitize.test.js:10 |
| Low | Node secret stored in plaintext on filesystem | src/gep/a2aProtocol.js:1 |
| Low | EVOLVE_ALLOW_SELF_MODIFY enables evolver self-modification | src/gep/solidify.js:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✗ Violation | src/gep/solidify.js:execSync calls git reset/hard, git restore, git clean; index… |
| Shell | NONE | WRITE | ✗ Violation | src/evolve.js:execSync for git/ps/pgrep/tasklist/df/clawhub; src/gep/solidify.js… |
| Network | NONE | WRITE | ✗ Violation | src/gep/a2aProtocol.js:sendHeartbeat POST to A2A_HUB_URL every 6min; hubSearch (… |
| Environment | NONE | READ | ✗ Violation | src/gep/envFingerprint.js captures hostname hash, device_id, platform, node_vers… |
| Skill Invoke | NONE | READ | ✗ Violation | src/evolve.js reads session logs from ~/.openclaw/agents/*/sessions/; src/gep/br… |
5 Critical 14 findings
Critical API Key 硬编码 API 密钥
sk-abcdefghijklmnopqrstuvwxyz test/sanitize.test.js:10 Critical API Key 硬编码 API 密钥
ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx test/sanitize.test.js:19 Critical API Key 硬编码 API 密钥
gho_abcdefghijklmnopqrstuvwxyz1234567890 test/sanitize.test.js:21 Critical API Key 硬编码 API 密钥
AKIAIOSFODNN7EXAMPLE test/sanitize.test.js:29 Critical Dangerous Command 危险 Shell 命令
rm -rf / test/skillDistiller.test.js:210 Medium External URL 外部 URL
https://evomap.ai README.md:5 Medium External URL 外部 URL
https://evomap.ai/wiki README.md:5 Medium External URL 外部 URL
https://api.star-history.com/svg?repos=autogame-17/evolver&type=Date README.md:255 Medium External URL 外部 URL
https://star-history.com/#autogame-17/evolver&Date README.md:255 Medium External URL 外部 URL
https://mowen.cn README.md:270 Medium External URL 外部 URL
https://evomap.ai/claim/ SKILL.md:45 Medium External URL 外部 URL
https://www.clawhub.ai scripts/publish_public.js:410 Info Email 邮箱地址
[email protected] test/sanitize.test.js:57 Info Email 邮箱地址
[email protected] test/sanitize.test.js:74 File Tree
76 files · 601.1 KB · 16419 lines JavaScript 68f · 15543L
Markdown 4f · 655L
JSON 4f · 221L
├─
▾
assets
│ └─
▾
gep
│ ├─
capsules.json
JSON
│ └─
genes.json
JSON
├─
▾
scripts
│ ├─
a2a_export.js
JavaScript
│ ├─
a2a_ingest.js
JavaScript
│ ├─
a2a_promote.js
JavaScript
│ ├─
analyze_by_skill.js
JavaScript
│ ├─
build_public.js
JavaScript
│ ├─
extract_log.js
JavaScript
│ ├─
generate_history.js
JavaScript
│ ├─
gep_append_event.js
JavaScript
│ ├─
gep_personality_report.js
JavaScript
│ ├─
human_report.js
JavaScript
│ ├─
publish_public.js
JavaScript
│ ├─
recover_loop.js
JavaScript
│ ├─
suggest_version.js
JavaScript
│ └─
validate-modules.js
JavaScript
├─
▾
src
│ ├─
▾
gep
│ │ ├─
a2a.js
JavaScript
│ │ ├─
a2aProtocol.js
JavaScript
│ │ ├─
analyzer.js
JavaScript
│ │ ├─
assetCallLog.js
JavaScript
│ │ ├─
assets.js
JavaScript
│ │ ├─
assetStore.js
JavaScript
│ │ ├─
bridge.js
JavaScript
│ │ ├─
candidates.js
JavaScript
│ │ ├─
contentHash.js
JavaScript
│ │ ├─
deviceId.js
JavaScript
│ │ ├─
envFingerprint.js
JavaScript
│ │ ├─
hubReview.js
JavaScript
│ │ ├─
hubSearch.js
JavaScript
│ │ ├─
issueReporter.js
JavaScript
│ │ ├─
llmReview.js
JavaScript
│ │ ├─
memoryGraph.js
JavaScript
│ │ ├─
memoryGraphAdapter.js
JavaScript
│ │ ├─
mutation.js
JavaScript
│ │ ├─
narrativeMemory.js
JavaScript
│ │ ├─
paths.js
JavaScript
│ │ ├─
personality.js
JavaScript
│ │ ├─
prompt.js
JavaScript
│ │ ├─
questionGenerator.js
JavaScript
│ │ ├─
reflection.js
JavaScript
│ │ ├─
sanitize.js
JavaScript
│ │ ├─
selector.js
JavaScript
│ │ ├─
signals.js
JavaScript
│ │ ├─
skillDistiller.js
JavaScript
│ │ ├─
solidify.js
JavaScript
│ │ ├─
strategy.js
JavaScript
│ │ ├─
taskReceiver.js
JavaScript
│ │ └─
validationReport.js
JavaScript
│ ├─
▾
ops
│ │ ├─
cleanup.js
JavaScript
│ │ ├─
commentary.js
JavaScript
│ │ ├─
health_check.js
JavaScript
│ │ ├─
index.js
JavaScript
│ │ ├─
innovation.js
JavaScript
│ │ ├─
lifecycle.js
JavaScript
│ │ ├─
self_repair.js
JavaScript
│ │ ├─
skills_monitor.js
JavaScript
│ │ └─
trigger.js
JavaScript
│ ├─
canary.js
JavaScript
│ └─
evolve.js
JavaScript
├─
▾
test
│ ├─
a2aProtocol.test.js
JavaScript
│ ├─
contentHash.test.js
JavaScript
│ ├─
envFingerprint.test.js
JavaScript
│ ├─
mutation.test.js
JavaScript
│ ├─
sanitize.test.js
JavaScript
│ ├─
selector.test.js
JavaScript
│ ├─
signals.test.js
JavaScript
│ ├─
skillDistiller.test.js
JavaScript
│ ├─
strategy.test.js
JavaScript
│ └─
validationReport.test.js
JavaScript
├─
_meta.json
JSON
├─
CONTRIBUTING.md
Markdown
├─
index.js
JavaScript
├─
package.json
JSON
├─
README.md
Markdown
├─
README.zh-CN.md
Markdown
└─
SKILL.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
dotenv | ^16.4.7 | npm | No | Version pinned |
all-dependencies-pinned | true | npm | No | All dependencies in package.json have pinned versions |
Security Positives
✓ Comprehensive sanitization pipeline (sanitize.js) redacts API keys, tokens, private keys, paths, emails, and .env references before hub publishing
✓ Ethics enforcement in checkConstraints() blocks strategies attempting safety bypass, covert monitoring, social engineering, or transparency violations
✓ Blast radius hard caps (60 files / 20000 lines) cannot be overridden by genes — system-level safety guard
✓ Critical path protection prevents evolver from modifying protected skill directories (feishu-*, clawhub, git-sync, evolver)
✓ Validation command allow-list restricts execution to 'node ', 'npm ', 'npx ' prefixes with shell operator blocking
✓ Canary check (runCanaryCheck) verifies index.js loads in an isolated child process before solidify commits changes
✓ Optional LLM review gate (EVOLVER_LLM_REVIEW) can reject changes before commit
✓ Auto-rollback on failure (EVOLVER_ROLLBACK_MODE=stash/hard) prevents accumulation of bad changes
✓ Dormant hypothesis system preserves partial state during backoff to prevent data loss
✓ Repair loop circuit breaker prevents infinite repair-retry cycles
✓ Memory graph integrity check throws if causal memory cannot be written, refusing to evolve blindly
✓ Dependency scan: no known-vulnerable packages detected, all npm dependencies are pinned