message-cp@0.2.0
CAUTION· install onlyPublisher claims: "An MCP server that lets AI agents register a name and bio, discover one another, exchange messages, and be woken when mail arrives rather than polling, backed by a shared SQLite database over stdio for one machine or HTTP for a team." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
LIVE_SIGNIN_TOKENMESSAGE_CP_HTTP_TOKENConfiguration, not credentials: MAX_KEY_LENGTH, MESSAGE_CP_AGENT_KEY- Where it talks to
- no vendor host named in the code
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it with a scoped credential, under the guard. It asks for LIVE_SIGNIN_TOKEN, MESSAGE_CP_HTTP_TOKEN and talks to its vendor. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind. What the tools do with a real credential was not observed.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-12 and scored it 65/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: HTML comment carrying imperative instructions to the agent; Privileged sudo command; Instructs the agent to modify its persistent memory or instruction files. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
tessl-code-review:run:v1Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.* The stdio server of the package running `init`: `npx -y message-cp` resolves only once the package is published.Fix: Pin versions and sources; vendor anything fetched at install time.export const MANUAL_ADD = "claude mcp add message-cp -- npx -y message-cp";Fix: Pin versions and sources; vendor anything fetched at install time.report the OS, resources, virtualisation, tools, sudo and Docker, andFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.can write files the branch also adds, such as `AGENTS.md` and `CLAUDE.md`.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct./** Whether `get`'s output describes a stdio server that runs `npx -y message-cp`. */Fix: Pin versions and sources; vendor anything fetched at install time.…ile message-cp init was running; it was left as it is. To make it private, run: chmod 600 ${shellQuote(file)}, then run message-cp init again.`); } chmodS…Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.`npx -y message-cp init`, or `npm install -g message-cp@<version>`.Fix: Pin versions and sources; vendor anything fetched at install time.…TokenFile(publicUrl, account, name)}, privately: mkdir -p ~/.message-cp/wait && chmod 700 ~/.message-cp ~/.message-cp/wait, then rm -f ${file} && (umask 077 && printf…Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// `message-cp init`: adds the stdio server `npx -y message-cp` to one coding agent's user-level MCP configuration onFix: Pin versions and sources; vendor anything fetched at install time.const kill = setTimeout(() => child.kill("SIGKILL"), 5000);Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.… 0o777).toString(8).padStart(4, "0")} is wider than 0600; make it private with: chmod 600 ${shellQuote(file)}, then run message-cp init again`); } if (st.size…Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.…ers of this machine can read it; it was left as it is. To make it private, run: chmod 600 ${shellQuote(file)}, then run message-cp init again.`); } return ser…Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.… for (const m of repo .read(f) .matchAll( /process\.env\.([A-Z][A-Z0-9_]+)|process\.env\[['"]([A-Z][A-Z0-9_]+)|os\.environ(?:\.get)?\(?…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const json = JSON.stringify({ mcpServers: { "message-cp": { type: "http", url: endpoint.href, headers } } }, null, 2);Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.…iled; record the gap in the report. ## What to read Read `.cloud-launch/inputs.json` and require UUID `orgId` and `projectId`. Get the current UTC time with a tool. Look back 14 days; an optional `lookbackDays` input (integer 1 to 60) repl…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* `npx -y message-cp`), "differs" otherwise. Refuses, changing nothing, a file that is not a JSON object or whoseFix: Pin versions and sources; vendor anything fetched at install time.`reads ${names.size} environment variables but has no .env template`,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ded, with why; and every read that failed or was capped. 2. Write `launch-result.json` at the clone root. Use `status: succeeded` with a `summary` of two to four plain sentences: the window, how many pull requests and Code Review findings …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.7. A red check, a failing test or a broken build is never declined. Before youFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.`rm -rf /var/tmp/vmcheck && cp -r . /var/tmp/vmcheck && cd /var/tmp/vmcheckFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`sudo -n true && echo sudo-ok || echo no-sudo`;Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return `${file} would hold the token, and other users of this machine can read it; to make it private, run: chmod 600 ${shellQuote(file)}, then run message-cp init again.`;Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts./(^|\/)(\.env\.(example|sample|template|dist|defaults)|example\.env|env\.example)$/,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.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
15 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim colinhallett: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden instructions≈ +6 on the totalRemove HTML comments, zero-width characters and white-on-white text that carry instructions. Everything the agent is meant to read should be visible to the person reading the file.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.
- Destructive file system command detected≈ +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.