last-words@1.0.0
CAUTION· install onlyPublisher claims: "Auto-deliver final messages to loved ones after 30 days of inactivity. Use when user wants to record a final message, configure email delivery, manage voice..." 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
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-15 and scored it 74/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; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
subprocess.run(['mail', '-s', subject, config['contact']],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.help="Load configuration from environment variables or .env file")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Or create a .env file from .env.exampleFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run([player, "-nodisp", "-autoexit", str(audio_path)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.env_path = Path(__file__).parent.parent / ".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run([player, str(audio_path)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Enable debug mode to bypass the 30-day wait and test immediate delivery:Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.subprocess.run(['mail', '-s', subject, config['contact']],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["arecord", "-f", "cd", "-t", "wav", str(output)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.**Enable debug mode:**Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct."""Load environment variables from .env file if it exists."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.python3 scripts/debug_mode.py on # Enable debug modeFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.subprocess.run(["rec", str(output)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["ffmpeg", "-f", "alsa", "-i", "default", str(output)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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
6 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Text that tells the agent to ignore its instructions≈ +9 on the totalDelete phrases like "ignore previous instructions", "override", "bypass" from SKILL.md and tool descriptions. Describe what the skill does; do not instruct the agent about other rules.
- Unclaimed publisher≈ +8 on the totalClaim dilboy: 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.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.