meili-memory@3.0.0
BLOCKED· install onlyPublisher claims: "Local full-text search for OpenClaw memory recall using MeiliSearch. Self-hosted." Observed in sandbox: sends data to install.meilisearch.com.
Coverage
Install scripts ran; no agent task scenario for this bundle.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-13 and scored it 46/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Pipe-to-shell pattern. Summary: sends data to install.meilisearch.com.
Behavior trace
Honeypot run · 0 s · 2 scenariosStatic findings
- **Credentials**: MeiliSearch master key is loaded from `~/.openclaw/workspace/.env` — never hardcoded in scriptsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.See `.env.example` for all options.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.curl -L https://install.meilisearch.com | shFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- **Write**: MeiliSearch indexes (`core`, `working`, `archive`), `MEMORY.md` (distillation only with `--apply`)Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.bash scripts/distill.sh --apply # Actually write to MEMORY.mdFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Requires `~/.openclaw/workspace/.env`:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.curl -L https://install.meilisearch.com | shFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- **Secure temp files**: All temporary files use `mktemp` with `chmod 600` and are cleaned up on exitFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.sudo cp /tmp/meilisearch.service /etc/systemd/system/meilisearch.serviceFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Default is dry-run. Use --apply to actually write to MEMORY.md.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.ENV_FILE="${WORKSPACE}/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.sudo systemctl enable meilisearchFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$f"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.- **Write**: MeiliSearch indexes (`core`, `working`, `archive`), `MEMORY.md` (distillation only with `--apply`)Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.bash scripts/distill.sh --apply # Write to MEMORY.mdFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.subprocess.run(["bash", f"{skill_dir}/scripts/indexer.sh"], capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.chmod 600 "$f"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.sudo systemctl daemon-reloadFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.chmod 600 "$DOC_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.**Other Properties Related to Output:** [Can update MeiliSearch indexes and append distilled facts to MEMORY.md when explicitly applied.]Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.sudo mkdir -p /var/lib/meilisearchFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.sudo mv ./meilisearch /usr/local/bin/Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Load .env if it existsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.print("\nRun with --apply to write these to MEMORY.md")Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.# Memory distillation: extract key facts from daily notes and append to MEMORY.mdFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.chmod +x "${SKILL_DIR}/scripts/"*.shFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
34 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Contacts a host you did not declare≈ +23 on the totalList every host you talk to in SKILL.md frontmatter (`network: [api.example.com]`), or stop contacting the ones you cannot justify.
- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim enjuguna: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Remote installer piped to shell≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.