Dangerous exec
- Finding
- Shell command execution detected (child_process).
Security checks across static analysis, malware telemetry, and agentic risk
Jasper Recall has a coherent local-memory purpose, but its HTTP recall server builds a shell command from the request query, which could let a reachable caller run commands on the user's machine.
Review before installing. The memory features are largely disclosed and purpose-aligned, but avoid starting the HTTP server, binding it to 0.0.0.0, or enabling private server queries until the shell-execution issue is fixed. If you run setup, treat it like trusted local code and carefully curate what memory files are indexed or shared.
66/66 vendors flagged this skill as clean.
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If the recall server is reachable, especially when bound to 0.0.0.0, a local, container, browser-driven, or remote caller could potentially run commands as the user running Jasper Recall.
The server accepts an HTTP query, interpolates it into a shell command string, and runs it with execSync. Escaping only quotes is not sufficient for shell safety because constructs such as command substitution can still be interpreted by the shell.
function executeRecall(query, options = {}) { ... let cmd = `${RECALL_SCRIPT} ... ${query.replace(...)} ...`; ... const output = execSync(cmd, {Do not expose the recall server until this is fixed. Replace execSync command strings with execFile/spawn using an argv array, validate inputs, keep the server on localhost, and avoid RECALL_ALLOW_PRIVATE or external binding unless absolutely necessary.
Running setup trusts the published package and its Python dependencies with local user-level code execution.
Setup installs unpinned Python dependencies and writes executable helper scripts into the user's home directory. This is expected for a local RAG tool, but it expands trust to npm/PyPI package provenance.
run(`${pip} install --quiet chromadb sentence-transformers`); ... fs.writeFileSync(destPath, content); fs.chmodSync(destPath, 0o755);Install only from a trusted source, prefer pinned/audited dependency versions, and run setup in a non-sensitive profile or container if you have doubts about provenance.
Old notes, session digests, or shared memories may influence future agent behavior without being re-approved each time.
The skill can automatically retrieve persistent memories and insert them into future agent context before processing messages. This is central to the skill, but stored or shared memory can become stale, overly trusted, private, or poisoned.
autoRecall: true ... the plugin hooks into before_agent_start ... Injects results as <relevant-memories> context
Keep memory paths narrow, review what is indexed, use publicOnly for sandboxed agents, disable autoRecall if you want manual control, and treat retrieved memories as untrusted context rather than instructions.