DB totalreclaw
End-to-end encrypted, decentralized memory for OpenClaw. A native kind:memory provider — recall is automatic via memory_search/memory_get, and facts are captured in the background. Trigger on 'install TotalReclaw', 'set up TotalReclaw', 'restore my recovery phrase', any recall request ('what do you remember about me', 'what's my X'), AND any explicit remember request ('remember X', 'save X').
End-to-end encrypted, decentralized memory for OpenClaw.
As a process B 68/100 · Nearly there — weak spots: result and completion, inputs and preconditions
What is at stake
Medium-severity findings: the skill is probably honest, but read what alarmed the scanner.
Below is the worst case for this category. The finding here is medium: the guard saw a sign, not a proof.
The purpose itself is risky: wallets, browser password stores, offensive security. Even an honest implementation gives the agent access to things that cost money.
Explain in the description why the access is needed and how it is limited; add tests that show refusals on dangerous requests.
How to improve
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 31
✓ No critical or high findings
Medium and low: 31
-
medium Risky intent
intent-wallet-secretsCHANGELOG.md:206Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target2. **"Stored on a relay server" architectural claim.** When asked "how does this work?", the agent replied that memories are stored on a relay server. WRONG. Memories are encrypted with a key derived
-
medium Risky intent
intent-wallet-secretsCHANGELOG.md:1039Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target2. **Phrase-safety violation.** The banner told users to `Run: totalreclaw setup` — a CLI that emits the recovery phrase to stdout. In an agent-driven context, stdout is echoed back into LLM context,
-
medium Risky intent
intent-wallet-secretsCHANGELOG.md:1185Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer targetCLI uses, no subprocess. The recovery phrase still never crosses the
-
medium Risky intent
intent-wallet-secretsCLAWHUB.md:86Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target**Note:** `env: []` is intentional. The skill installs without any pre-configured env vars. The agent guides the user through onboarding (generating a recovery phrase) during first use.
-
medium Risky intent
intent-wallet-secretscli/tr-cli-export-helper.ts:12Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target* Phrase-safety: this module never touches the recovery phrase. It receives
-
medium Risky intent
intent-wallet-secretsconfig.ts:71Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target/** Runtime override for recovery phrase (set by hot-reload after setup). */
-
medium Risky intent
intent-wallet-secretscrypto/vault-crypto.ts:82Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target* Derive auth, encryption, and dedup keys from a recovery phrase.
-
medium Risky intent
intent-wallet-secretsdist/cli/tr-cli-export-helper.js:12Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target* Phrase-safety: this module never touches the recovery phrase. It receives
-
medium Risky intent
intent-wallet-secretsdist/config.js:62Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target/** Runtime override for recovery phrase (set by hot-reload after setup). */
-
medium Risky intent
intent-wallet-secretsdist/crypto/vault-crypto.js:76Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target* Derive auth, encryption, and dedup keys from a recovery phrase.
-
medium Risky intent
intent-wallet-secretsREADME.md:187Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target| `TOTALRECLAW_RECOVERY_PHRASE` | **Yes** | -- | 12-word BIP-39 recovery phrase (never sent to server) |
-
medium Risky intent
intent-wallet-secretsREADME.md:262Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target1. **Key Derivation**: Recovery phrase is processed through Argon2id to derive encryption keys. The phrase is never sent to the server.
-
medium Risky intent
intent-wallet-secretsSKILL.md:40Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer targetThe 12-word recovery phrase MUST NEVER enter chat or the agent's LLM context. The plugin's browser-based pair flow handles phrase generation and import. Never echo it, never ask the user to paste it,
-
low Risky intent
intent-wallet-secretsbilling/api-client.ts:113Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)? ' Authentication failed. If using a recovery phrase, check that all 12 words are in the correct order and spelled correctly.'
quoted -
low Secrets in code
secret-high-entropy-tokenbilling/billing-cache.test.ts:43High-entropy token-like string (may be an id, hash or a credential) (test fixture / example file; quoted — discussed, not commanded)const STAGING_DATA_EDGE = '0xE7…B91';
fixturequoted -
low Dangerous commands
cmd-background-processCHANGELOG.md:211Starts a background / autostarted process (detector / deny-list definition)- **New "User-facing vocabulary" translation table.** Maps internal jargon (pair, relay, WS, trapdoor, subgraph, bundler, UserOp, mnemonic file, `setsid -f`) to user-facing phrases ("set up an accountdetector -
low Risky intent
intent-wallet-secretsCHANGELOG.md:211Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)- **New "User-facing vocabulary" translation table.** Maps internal jargon (pair, relay, WS, trapdoor, subgraph, bundler, UserOp, mnemonic file, `setsid -f`) to user-facing phrases ("set up an accountquoted -
low Dangerous commands
cmd-background-processCHANGELOG.md:267Starts a background / autostarted process (quoted — discussed, not commanded)- **SKILL.md FORBIDDEN section trimmed.** OpenClaw's feedback noted the rc.3 list was patching past failures one by one with verbatim narration examples that bloated the skill without adding rules. Th
quoted -
low Dangerous commands
cmd-background-processCHANGELOG.md:279Starts a background / autostarted process (quoted — discussed, not commanded)Pedro's 2026-05-05 manual QA on rc.10-rc.2 confirmed that even with the `setsid -f` instruction in SKILL.md, the agent freelances during install + pair: it restarted the gateway unprompted, re-rendere
quoted -
low Dangerous commands
cmd-background-processCHANGELOG.md:285Starts a background / autostarted process (quoted — discussed, not commanded)- **SKILL.md and `docs/guides/openclaw-setup.md` now have an explicit ⛔ FORBIDDEN section** listing every freelancing pattern from Pedro's QA, with the exact bad agent prose verbatim. The section is p
quoted -
low Dangerous commands
cmd-background-processCHANGELOG.md:291Starts a background / autostarted process (detector / deny-list definition)- This RC does NOT yet ship the proper architectural fix for the 502 (HTTP-poll pair flow that doesn't require a persistent WS at all, planned for 3.3.11). It instead hardens the agent-side instructio
detector -
low Risky intent
intent-wallet-secretsCHANGELOG.md:1065Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (detector / deny-list definition)- **`totalreclaw_onboard` agent tool — REMOVED.** rc.3 shipped a `totalreclaw_onboard` tool that generated a fresh BIP-39 mnemonic in-process, wrote it to `credentials.json`, and returned `{scope_addrdetector -
low Secrets in code
secret-high-entropy-tokenCHANGELOG.md:2108High-entropy token-like string (may be an id, hash or a credential)the sing…ads contract).
-
low Risky intent
intent-wallet-secretscli/tr-cli.ts:136Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)die('No recovery phrase in credentials.json. Run: tr pair --json');quoted -
low Risky intent
intent-wallet-secretsdist/billing/api-client.js:48Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)? ' Authentication failed. If using a recovery phrase, check that all 12 words are in the correct order and spelled correctly.'
quoted -
low Risky intent
intent-wallet-secretsdist/cli/tr-cli.js:94Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)die('No recovery phrase in credentials.json. Run: tr pair --json');quoted -
low Risky intent
intent-wallet-secretsREADME.md:28Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)export TOTALRECLAW_RECOVERY_PHRASE="your twelve word recovery phrase here"
quoted -
low Risky intent
intent-wallet-secretsREADME.md:131Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)export TOTALRECLAW_RECOVERY_PHRASE="your twelve word recovery phrase here"
quoted -
low Risky intent
intent-wallet-secretsSKILL.md:3Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)description: "End-to-end encrypted, decentralized memory for OpenClaw. A native kind:memory provider — recall is automatic via memory_search/memory_get, and facts are captured in the background. Trigg
quoted -
low Dangerous commands
cmd-background-processSKILL.md:75Starts a background / autostarted process (quoted — discussed, not commanded)**Do NOT use `tr pair --json` for this.** The CLI holds the pair WebSocket in a subprocess that OpenClaw's ~30s shell-tool timeout kills — the WS then drops, and when the user submits their phrase the
quoted -
low Risky intent
intent-wallet-secretsSKILL.md:76Handles crypto-wallet secrets (seed / mnemonic / private key) — a classic stealer target (quoted — discussed, not commanded)2. Surface the **url** and **pin** to the user verbatim (read from the JSON; never invent values): "Open `<url>` in your browser, enter PIN `<pin>`, and generate or paste your 12-word recovery phrase.
quoted
Files scanned: 48. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- note
frontmatter-keyunknown frontmatter key "homepage"
Process rating: all ten parameters 68/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 60Tools and files. Uses tools (bash, web, node) that frontmatter does not declare
- 100Steps. 8 steps
- 100When it triggers. States when to use and when not to
- 100Failures and branches. 4 branches, has a failure section
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 2220 tokens
- 100Running it twice. Mutating operations check current state
- 100Progress reporting. Reports progress
- medium Safety rules and hard prohibitions inside a skill: they belong in the system prompt, here they protect nothing
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +4Description does not say when NOT to use the skill (false activations)
- +3Output format is not stated: the model decides each time
- -2localhost URLs: will not work for another user
- +2Single-language instructions
- +3Description length 395: enough signal without eating the budget
- +4Structure: 7 headings
- +3Step-by-step instructions: 8 items
- +4Has examples (4 code blocks)
- +1License stated
Quality base 70; lint remarks subtract, signals add up to 100. Result: 82.