hfa-mcp@3.0.0
VERIFIED· install onlyPublisher claims: "Enables AI hosts to retrieve, persist, and inspect local project memory through the recall_memory, remember_decision, and memory_health tools over stdio." 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: Verified 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
- no credential variables read in the code
- Where it talks to
- no vendor host named in the codeAlso huggingface.co — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it under the guard. Nothing executable in the bundle ran; the trace covers the install step only. The code names no credential variable; the guard pins the network to what the honeypot saw and logs every call.
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 88/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
process = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(cmd, capture_output=True, encoding="utf-8", timeout=10)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p=subprocess.run(cmd,capture_output=True,encoding='utf8',timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.recalled = subprocess.run([sys.executable, "-B", str(CLI), "recall", str(target),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.status = subprocess.run([sys.executable, "-B", str(CLI), "status", str(target), "--json"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.added = subprocess.run([sys.executable, "-B", str(CLI), "add-topic", str(target),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([sys.executable, "-B", str(CLI), "init", str(target)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p=subprocess.run([sys.executable,'-X','utf8','-B',str(ROOT/'scripts/hfa_manager.py'),'recall',str(self.root),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.output=Path(temp)/'report.json';output.write_text('{"passed":true}',encoding='utf8')Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.process = subprocess.run([sys.executable, "-B", str(ROOT / "scripts/hfa_manager.py"),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self._process = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([sys.executable, '-B', str(ROOT/'scripts/hfa_manager.py'), *map(str,args)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.doctor = subprocess.run([sys.executable, "-B", str(CLI), "doctor", str(target), "--json"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cfg=subprocess.run([sys.executable,'-B',str(ROOT/'scripts/hfa_mcp.py'),'--memory-dir',str(self.root),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p=subprocess.run([sys.executable,'-S','-B','-m','scripts.hfa_manager','recall',str(self.root),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc=subprocess.run([sys.executable,'-B',str(ROOT/'scripts/hfa_hook.py'),'--phase','pre',Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process = subprocess.run([sys.executable, '-B', str(ROOT/'scripts/hfa_manager.py'), 'recall', str(self.root),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result=subprocess.run([sys.executable,'-B','-m','scripts.hfa_manager','recall',str(memory),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self._process=subprocess.Popen([sys.executable,'-u','-c',ECHO],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.DEVNULL)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.added = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p=subprocess.run([sys.executable,'-B',str(ROOT/'scripts/hfa_hook.py'),'--phase','pre'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.call=subprocess.run(args,capture_output=True,encoding='utf8',timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.<summary>Token 预算:给记忆正文规定篇幅</summary><p>token 是模型处理文本的单位,不等于汉字数。计数方法可能是 tokenizer,也可能是保守上界;还要区分记忆正文和整个宿主请求。这里的“最多几段”只帮助看取舍。</p>Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([sys.executable, "-B", str(CLI), *args], env=child_env,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.def run(_):return subprocess.run(command,capture_output=True,encoding='utf8',timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result=subprocess.run([sys.executable,'-S','-B','-m','scripts.hfa_manager',*args],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process=subprocess.run([sys.executable,'-B',str(ROOT/'scripts/hfa_manager.py'),*map(str,args)],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc_zero = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process = subprocess.run([sys.executable, "-B", "-c", code, str(CLI), str(self.mem)], capture_output=True, timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.default=subprocess.run(args,capture_output=True,encoding='utf8',timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc=subprocess.run([sys.executable,'-B',str(ROOT/'scripts/hfa_manager.py'),'init',str(self.memory)],capture_output=True,encoding='utf8')Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cfg=subprocess.run([sys.executable,'-S','-B',str(ROOT/'scripts/hfa_mcp.py'),'--memory-dir',str(self.root),'--print-config'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process=subprocess.run([sys.executable,'-B','-m','scripts.hfa_download_model','--output',MODEL,'--verify'],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result=subprocess.run([sys.executable,'-S','-B',str(ROOT/'scripts/hfa_manager.py'),'recall',str(self.root),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([sys.executable, "-B", str(ROOT/"scripts/hfa_manager.py"), *args],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result=subprocess.run(args,capture_output=True,encoding='utf8',timeout=30)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process = subprocess.run([sys.executable, "-B", "-c", code, str(CLI), str(self.mem)],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.