Scan Report
10 /100
totalreclaw
End-to-end encrypted memory vault for AI agents using AES-256-GCM E2EE
TotalReclaw is a legitimate E2EE memory vault skill. All pre-scan flags are benign: base64 Buffer operations are standard AES-256-GCM ciphertext encoding, hardcoded passwords are test-only fixtures, and the filesystem/network access is inherent to its stated purpose.
Safe to install
Approve for use. Consider documenting the implicit filesystem:WRITE need for credential storage and the implicit network:WRITE need for the server API in a future SKILL.md revision.
Findings 5 items
| Severity | Finding | Location |
|---|---|---|
| Low | Filesystem WRITE not declared in SKILL.md | plugin/index.ts:387 |
| Low | Network access to api.totalreclaw.xyz not declared in requires.env | plugin/index.ts:310 |
| Info | Pre-scan base64 CRITICAL flags are all false positives | dist/tools/export.js, plugin/index.ts:223 |
| Info | Test file hardcoded passwords are test fixtures only | plugin/pocv2-e2e-test.ts, tests/integration/e2e-flow.test.ts:401 |
| Info | Recovery phrase displayed to user is intentional UX feature | SKILL.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | READ | ✓ Aligned | plugin/index.ts - reads ~/.totalreclaw/credentials.json; reads file_path paramet… |
| Filesystem | NONE | WRITE | ✓ Aligned | plugin/index.ts:387 - writes to CREDENTIALS_PATH (~/.totalreclaw/credentials.jso… |
| Network | NONE | READ | ✓ Aligned | plugin/index.ts - GET /v1/billing/status to api.totalreclaw.xyz; plugin/index.ts… |
| Network | NONE | WRITE | ✓ Aligned | plugin/index.ts - POST /v1/facts to api.totalreclaw.xyz for storage; subgraph-st… |
| Shell | NONE | NONE | — | No subprocess, no exec, no shell commands found in production code. |
| Environment | NONE | READ | ✓ Aligned | plugin/index.ts - reads TOTALRECLAW_RECOVERY_PHRASE, TOTALRECLAW_SERVER_URL, TOT… |
| Skill Invoke | WRITE | WRITE | ✓ Aligned | 9 declared tools: totalreclaw_remember, recall, forget, export, status, upgrade,… |
| Clipboard | NONE | NONE | — | No clipboard access found. |
| Browser | NONE | NONE | — | No browser automation found. |
| Database | NONE | NONE | — | No direct database access. Server-side PostgreSQL used as relay only. |
5 Critical 5 High 50 findings
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(record.data, 'base64' dist/tools/export.js:223 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(creds.salt, 'base64' plugin/index.ts:366 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(b64, 'base64' plugin/index.ts:724 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(encryptedBase64, 'base64' plugin/pocv2-e2e-test.ts:141 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(response.body.salt, 'base64' tests/integration/server-integration.test.ts:360 High API Key 疑似硬编码凭证
Password: 'my-secure-password' dist/index.d.ts:13 High API Key 疑似硬编码凭证
Password = 'pocv2-e2e-test-password-2026' plugin/pocv2-e2e-test.ts:401 High API Key 疑似硬编码凭证
Password: 'test-password-123' tests/integration/e2e-flow.test.ts:281 High API Key 疑似硬编码凭证
Password: 'new-user-password' tests/integration/e2e-flow.test.ts:348 High API Key 疑似硬编码凭证
Password: 'existing-password' tests/integration/e2e-flow.test.ts:361 Medium External URL 外部 URL
https://clawhub.ai CLAWHUB.md:3 Medium External URL 外部 URL
https://clawhub.ai/skills/totalreclaw CLAWHUB.md:10 Medium External URL 外部 URL
https://totalreclaw.xyz CLAWHUB.md:67 Medium External URL 外部 URL
http://your-totalreclaw-server:8080 README.md:26 Medium External URL 外部 URL
http://127.0.0.1:8080 README.md:246 Medium External URL 外部 URL
http://your-server:8080 README.md:273 Medium External URL 外部 URL
https://www.npmjs.com/package/@totalreclaw/core README.md:313 Medium External URL 外部 URL
https://totalreclaw.xyz/pricing SKILL.md:221 Medium External URL 外部 URL
https://checkout.stripe.com/c/pay/... SKILL.md:280 Medium External URL 外部 URL
https://api.totalreclaw.xyz SKILL.md:877 Medium External URL 外部 URL
https://www.npmjs.com/package/@totalreclaw/totalreclaw plugin/README.md:13 Medium External URL 外部 URL
https://img.shields.io/npm/v/@totalreclaw/totalreclaw?color=7B5CFF plugin/README.md:18 Medium External URL 外部 URL
https://img.shields.io/npm/dm/@totalreclaw/totalreclaw plugin/README.md:19 Medium External URL 外部 URL
https://img.shields.io/badge/license-MIT-blue plugin/README.md:20 Medium External URL 外部 URL
https://openclaw.ai plugin/README.md:25 Medium External URL 外部 URL
https://www.npmjs.com/package/@totalreclaw/mcp-server plugin/README.md:92 Medium External URL 外部 URL
https://api.mem0.ai plugin/import-adapters/mem0-adapter.ts:156 Medium External URL 外部 URL
https://api.z.ai/api/paas/v4 plugin/llm-client.ts:64 Medium External URL 外部 URL
https://api.mistral.ai/v1 plugin/llm-client.ts:69 Medium External URL 外部 URL
https://api.groq.com/openai/v1 plugin/llm-client.ts:70 Medium External URL 外部 URL
https://api.deepseek.com/v1 plugin/llm-client.ts:71 Medium External URL 外部 URL
https://openrouter.ai/api/v1 plugin/llm-client.ts:72 Medium External URL 外部 URL
https://api.x.ai/v1 plugin/llm-client.ts:73 Medium External URL 外部 URL
https://api.together.xyz/v1 plugin/llm-client.ts:74 Medium External URL 外部 URL
https://api.cerebras.ai/v1 plugin/llm-client.ts:75 Medium External URL 外部 URL
https://opencollective.com/libvips plugin/package-lock.json:88 Medium External URL 外部 URL
https://paulmillr.com/funding/ plugin/package-lock.json:549 Medium External URL 外部 URL
https://www.npmjs.com/support plugin/package-lock.json:750 Medium Wallet Address 加密货币钱包地址
0xC445af1D4EB9fce4e1E61fE96ea7B8feBF03c5ca plugin/subgraph-store.ts:26 Medium Wallet Address 加密货币钱包地址
0x0000000071727De22E5E9d8BAf0edAc6f37da032 plugin/subgraph-store.ts:29 Medium External URL 外部 URL
http://custom-server:9000 tests/config.test.ts:61 Medium External URL 外部 URL
https://secure.example.com tests/config.test.ts:74 Medium External URL 外部 URL
http://openclaw-memory:8080 tests/config.test.ts:105 Medium External URL 外部 URL
http://env-server:8888 tests/config.test.ts:134 Medium External URL 外部 URL
http://env-server tests/config.test.ts:218 Medium External URL 外部 URL
http://override-server tests/config.test.ts:219 Medium External URL 外部 URL
http://openclaw-server tests/config.test.ts:234 Medium External URL 外部 URL
http://insecure.com tests/config.test.ts:315 Medium External URL 外部 URL
http://custom:9000 tests/config.test.ts:501 Medium External URL 外部 URL
http://nonexistent-server:9999 tests/tools.test.ts:649 File Tree
112 files · 1.2 MB · 37463 lines TypeScript 80f · 28900L
JavaScript 21f · 5175L
JSON 6f · 1713L
Markdown 4f · 1656L
Shell 1f · 19L
├─
▾
dist
│ ├─
▾
extraction
│ │ ├─
dedup.d.ts
TypeScript
│ │ ├─
dedup.js
JavaScript
│ │ ├─
extractor.d.ts
TypeScript
│ │ ├─
extractor.js
JavaScript
│ │ ├─
index.d.ts
TypeScript
│ │ ├─
index.js
JavaScript
│ │ ├─
prompts.d.ts
TypeScript
│ │ └─
prompts.js
JavaScript
│ ├─
▾
reranker
│ │ ├─
cross-encoder.d.ts
TypeScript
│ │ └─
cross-encoder.js
JavaScript
│ ├─
▾
tools
│ │ ├─
export.d.ts
TypeScript
│ │ ├─
export.js
JavaScript
│ │ ├─
forget.d.ts
TypeScript
│ │ ├─
forget.js
JavaScript
│ │ ├─
index.d.ts
TypeScript
│ │ ├─
index.js
JavaScript
│ │ ├─
recall.d.ts
TypeScript
│ │ ├─
recall.js
JavaScript
│ │ ├─
remember.d.ts
TypeScript
│ │ ├─
remember.js
JavaScript
│ │ ├─
status.d.ts
TypeScript
│ │ └─
status.js
JavaScript
│ ├─
▾
triggers
│ │ ├─
agent-end.d.ts
TypeScript
│ │ ├─
agent-end.js
JavaScript
│ │ ├─
before-agent-start.d.ts
TypeScript
│ │ ├─
before-agent-start.js
JavaScript
│ │ ├─
index.d.ts
TypeScript
│ │ ├─
index.js
JavaScript
│ │ ├─
pre-compaction.d.ts
TypeScript
│ │ └─
pre-compaction.js
JavaScript
│ ├─
config.d.ts
TypeScript
│ ├─
config.js
JavaScript
│ ├─
debug.d.ts
TypeScript
│ ├─
debug.js
JavaScript
│ ├─
index.d.ts
TypeScript
│ ├─
index.js
JavaScript
│ ├─
totalreclaw-skill.d.ts
TypeScript
│ ├─
totalreclaw-skill.js
JavaScript
│ ├─
types.d.ts
TypeScript
│ └─
types.js
JavaScript
├─
▾
plugin
│ ├─
▾
import-adapters
│ │ ├─
base-adapter.ts
TypeScript
│ │ ├─
chatgpt-adapter.ts
TypeScript
│ │ ├─
claude-adapter.ts
TypeScript
│ │ ├─
import-adapters.test.ts
TypeScript
│ │ ├─
index.ts
TypeScript
│ │ ├─
mcp-memory-adapter.ts
TypeScript
│ │ ├─
mem0-adapter.ts
TypeScript
│ │ └─
types.ts
TypeScript
│ ├─
api-client.ts
TypeScript
│ ├─
consolidation.test.ts
TypeScript
│ ├─
consolidation.ts
TypeScript
│ ├─
crypto.ts
TypeScript
│ ├─
embedding.ts
TypeScript
│ ├─
extractor-dedup.test.ts
TypeScript
│ ├─
extractor.ts
TypeScript
│ ├─
generate-mnemonic.ts
TypeScript
│ ├─
hot-cache-wrapper.ts
TypeScript
│ ├─
index.ts
TypeScript
│ ├─
llm-client.ts
TypeScript
│ ├─
lsh.test.ts
TypeScript
│ ├─
lsh.ts
TypeScript
│ ├─
openclaw.plugin.json
JSON
│ ├─
package-lock.json
JSON
│ ├─
package.json
JSON
│ ├─
pocv2-e2e-test.ts
TypeScript
│ ├─
porter-stemmer.d.ts
TypeScript
│ ├─
README.md
Markdown
│ ├─
reranker.test.ts
TypeScript
│ ├─
reranker.ts
TypeScript
│ ├─
semantic-dedup.test.ts
TypeScript
│ ├─
semantic-dedup.ts
TypeScript
│ ├─
setup.sh
Shell
│ ├─
store-dedup-wiring.test.ts
TypeScript
│ ├─
subgraph-search.ts
TypeScript
│ └─
subgraph-store.ts
TypeScript
├─
▾
src
│ ├─
▾
extraction
│ │ ├─
dedup.ts
TypeScript
│ │ ├─
extractor.ts
TypeScript
│ │ ├─
index.ts
TypeScript
│ │ └─
prompts.ts
TypeScript
│ ├─
▾
reranker
│ │ └─
cross-encoder.ts
TypeScript
│ ├─
▾
tools
│ │ ├─
export.ts
TypeScript
│ │ ├─
forget.ts
TypeScript
│ │ ├─
index.ts
TypeScript
│ │ ├─
recall.ts
TypeScript
│ │ ├─
remember.ts
TypeScript
│ │ └─
status.ts
TypeScript
│ ├─
▾
triggers
│ │ ├─
agent-end.ts
TypeScript
│ │ ├─
before-agent-start.ts
TypeScript
│ │ ├─
index.ts
TypeScript
│ │ └─
pre-compaction.ts
TypeScript
│ ├─
config.ts
TypeScript
│ ├─
debug.ts
TypeScript
│ ├─
index.ts
TypeScript
│ ├─
totalreclaw-skill.ts
TypeScript
│ └─
types.ts
TypeScript
├─
▾
tests
│ ├─
▾
extraction
│ │ └─
host-llm-integration.test.ts
TypeScript
│ ├─
▾
fixtures
│ │ └─
conversations.ts
TypeScript
│ ├─
▾
integration
│ │ ├─
e2e-flow.test.ts
TypeScript
│ │ ├─
hooks-integration.test.ts
TypeScript
│ │ └─
server-integration.test.ts
TypeScript
│ ├─
config.test.ts
TypeScript
│ ├─
extraction.test.ts
TypeScript
│ ├─
integration.test.ts
TypeScript
│ ├─
reranker.test.ts
TypeScript
│ └─
tools.test.ts
TypeScript
├─
CLAWHUB.md
Markdown
├─
jest.config.js
JavaScript
├─
package.json
JSON
├─
README.md
Markdown
├─
skill.json
JSON
├─
SKILL.md
Markdown
└─
tsconfig.json
JSON
Dependencies 5 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
onnxruntime-node | ^1.17.0 | npm | No | ONNX runtime for local embedding generation. Version pinned to ^1.17.0. |
uuid | ^9.0.0 | npm | No | Standard UUID generation for fact IDs. |
@totalreclaw/client | file:../client | local | No | Local workspace dependency, not from registry. Assumed trusted. |
jest | ^29.7.0 | npm | No | Dev dependency for testing. |
typescript | ^5.3.0 | npm | No | Dev dependency for type checking. |
Security Positives
✓ Strong E2EE: AES-256-GCM encryption with client-side key derivation (Argon2id), server never sees plaintext
✓ No credential exfiltration: The recovery phrase is used locally for key derivation only and never transmitted
✓ No shell execution: No subprocess, exec, or shell command invocations in production code
✓ No sensitive path access: Does not read ~/.ssh, ~/.aws, .env, or similar credential paths
✓ No reverse shell, C2, or data exfiltration patterns detected
✓ No eval(), no atob()-based execution, no base64-piped-to-shell patterns
✓ BIP-39 mnemonic format provides a recognizable security boundary (warning about crypto wallet phrases)
✓ Import function only reads user-specified paths declared in the tool call (file_path parameter)
✓ Content fingerprinting uses HMAC-SHA256 with dedup key, preventing server-side content fingerprinting
✓ Tombstone-based deletion with 30-day recovery window
✓ Comprehensive test suite (112 files, 37463 lines) with integration tests
✓ Open source MIT license, repository hosted on github.com/p-diogo/totalreclaw