memtrace@1.2.19
CAUTION· install onlyPublisher claims: "Code intelligence graph — MCP server + AI agent skills + visualization UI" Observed in sandbox: calls registry.npmjs.org only, touches nothing outside the project, writes no memory.
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-11 and scored it 63/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Privileged sudo command; Access to sensitive file paths. Summary: calls registry.npmjs.org only, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 16 s · 2 scenariosStatic findings
if (tableName === `mcp_servers."${MCP_SERVER_NAME}".env`)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Upgrade elevation (whether `memtrace install` needs sudo on THIS install)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if (tableName === `mcp_servers.${MCP_SERVER_NAME}.env`)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.error("memtrace install: retry with `sudo memtrace install`.");Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const isEnv = name === `mcp_servers.${MCP_SERVER_NAME}.env`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.|| name === `mcp_servers."${MCP_SERVER_NAME}".env`;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.env: { ...env, MEMTRACE_RAIL_SEARCH_URL: `http://127.0.0.1:${runtime.port}` },Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const next = { ...env };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…line in one round-trip. Fall back to Read/Grep/Glob only for: (a) config files (.env, package.json, README, raw JSON/YAML/TOML), (b) file inventory questions, (c) p…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// from npx / a supervisor / a terminal close killed the Node shim butFix: Pin versions and sources; vendor anything fetched at install time.// npx / Warp / supervisors.Fix: Pin versions and sources; vendor anything fetched at install time.// its hint (e.g. from an editor's `npx memtrace@latest mcp`) —Fix: Pin versions and sources; vendor anything fetched at install time.// `run` is injectable so tests can check the kill commands without runningFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell./** Grep enrichment's hook kill (design section 10): the hook never waits longer. */Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* are installed but never kill the child.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// ─── Signal-forwarding supervisor (the "npx memtrace start isn't working" fix) ──Fix: Pin versions and sources; vendor anything fetched at install time.// doesn't leak listeners / kill a reaped PID).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell./** Grep enrichment's hook kill (design section 10): the hook never waits longer. */Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* `sudo memtrace …` keeps the invoking user's HOME on macOS (and whereverFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return needsElevation(options) ? "sudo memtrace install" : "memtrace install";Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// /T = also kill child processes (file watchers, embed-worker childrenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.env: { ...env, MEMTRACE_AUTO_SETUP_HOME: home, MEMTRACE_AUTO_SETUP_CWD: cwd },Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// cause of the "`npx memtrace@latest start` isn't working" reports underFix: Pin versions and sources; vendor anything fetched at install time.` ${elevation.parentDir} is not writable by this user, so npm needs sudo to replace the package.`,Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// ~/.memtrace/setup-refresh.log output of the most recent launcher-run setupFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.`${indent}Retry with: ${style("sudo memtrace install", caps, ANSI.bold)}\n\n`Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const result = { ...env };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// `npx memtrace@latest start`, a supervisor SIGTERM or terminal closeFix: Pin versions and sources; vendor anything fetched at install time.// setup made before ~/.memtrace/rail.json existed (< 1.2.0), put the RailFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// launcher (a downgrade, a second install, an npx cache) mustFix: Pin versions and sources; vendor anything fetched at install time.if (child && typeof child.kill === "function" && child.pid != null) {Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* (`memtrace install`, `npm i -g memtrace@latest`) stay friction-freeFix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.// it during `npm install -g memtrace@latest`. That is an upgrade, not a userFix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.For your own Claude Code directives, edit CLAUDE.md instead. -->Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Customized content is preserved. Add personal Claude Code rules in CLAUDE.md.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.* Add or refresh the Memtrace directive in a project CLAUDE.md.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.* Write the directive into `<dir>/CLAUDE.md`, creating the file if needed.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// - add a breadcrumb block to ~/.claude/CLAUDE.md if it existsFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct." install write the Memtrace routing directive into the project's CLAUDE.md\n" +Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// `npm install memtrace@latest` over it would downgrade. Past latest it cameFix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.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
No advisories in OSV for memtrace@1.2.19 as of 3d ago. This is the package itself, not its dependencies.
What would make this Verified
17 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim syncable-dev: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Touches files outside the project≈ +7 on the totalKeep reads and writes inside the working directory, or declare the exact paths in `filesystem:` and explain why in the README.
- Unpinned dependencies≈ +4 on the totalPin exact versions (and ideally hashes) in package.json, requirements or the install script so the bundle cannot change under you.
- 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.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.