mem9-setup-884abe — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mem9-setup-884abe (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are an automated installer. Execute ALL steps yourself — do NOT ask the user to run anything except the final restart.
python3 -c "
import json, os, sys
path = os.path.expanduser('~/.claude/settings.json')
if not os.path.exists(path):
print('NO_SETTINGS')
sys.exit(0)
with open(path) as f:
cfg = json.load(f)
tid = cfg.get('env', {}).get('MEM9_TENANT_ID', '')
if tid:
print(f'ALREADY_CONFIGURED:{tid}')
else:
print('NEEDS_TENANT')
"ALREADY_CONFIGURED:<id> → Skip to Step 3.NEEDS_TENANT or NO_SETTINGS → Continue to Step 2.curl -s -X POST https://api.mem9.ai/v1alpha1/mem9sExtract the id field from the JSON response. This is the MEM9_TENANT_ID.
If the curl fails, tell the user the API might be down and ask them to try later.
Read ~/.claude/settings.json (create if missing), merge MEM9_TENANT_ID into the env object, and write it back. Preserve all existing settings.
python3 -c "
import json, os, sys
tenant_id = sys.argv[1]
path = os.path.expanduser('~/.claude/settings.json')
# Read existing or start fresh
cfg = {}
if os.path.exists(path):
with open(path) as f:
cfg = json.load(f)
# Merge env
env = cfg.get('env', {})
env['MEM9_TENANT_ID'] = tenant_id
cfg['env'] = env
# Write back
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, 'w') as f:
json.dump(cfg, f, indent=2)
f.write('\n')
print(f'OK: MEM9_TENANT_ID={tenant_id} written to {path}')
" "REPLACE_WITH_ACTUAL_TENANT_ID"Replace REPLACE_WITH_ACTUAL_TENANT_ID with the actual tenant ID from Step 2a.
These are CLI commands — run them directly in Bash:
claude plugin marketplace add mem9-ai/mem9claude plugin install mem9@mem9If `claude plugin marketplace add` fails with "already exists", that's fine — skip it and continue to install.
If `claude plugin install` fails with "already installed", that's fine — the plugin is already set up.
Summarize what was done:
<tenant_id>~/.claude/settings.json updated with MEM9_TENANT_IDThen tell the user:
All done! Just restart Claude Code to activate Mem9 memory.
>
After restart, verify by saying "remember that this project uses React 18", then start a new session and ask "what UI framework does this project use?" — the agent should recall it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.