auto-research-claw@1.0.0
BLOCKED· static onlyPublisher claims: "Automates research by conducting literature searches, running experiments, and generating LaTeX papers from detailed research topics." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-15 and scored it 39/100 (Blocked). Do not install it: the sandbox observed behaviour consistent with credential theft, exfiltration or persistence. Notable findings: Auto-update or dynamic fetch configuration; Auto-update or dynamic fetch configuration; Access to sensitive file paths. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
auto_update: bool = TrueFix: Pin versions and sources; vendor anything fetched at install time.auto_update=bool(data.get("auto_update", True)),Fix: Pin versions and sources; vendor anything fetched at install time.# 1. HOME override — prevents reading ~/.ssh, ~/.bashrc, etc.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# key_path: "~/.ssh/id_rsa"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.<summary>💡 Was unter der Haube passiert</summary> 1. OpenClaw liest `RESEARCHCLAW_AGENTS.md` → lernt die Forschungs-Orchestrator-Rolle 2. OpenClaw liest `READMFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self.remote_config: SshRemoteConfig = config.ssh_remoteFix: Pin versions and sources; vendor anything fetched at install time.ssh_remote: SshRemoteConfig = field(default_factory=SshRemoteConfig)Fix: Pin versions and sources; vendor anything fetched at install time.<summary>💡 内部で何が起きているか</summary> 1. OpenClawが`RESEARCHCLAW_AGENTS.md`を読み取り → 研究オーケストレーターの役割を学習 2. OpenClawが`README.md`を読み取り → インストールとパイプライン構造を理解 3. OpenClawが`cFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.# key_path: "~/.ssh/id_rsa"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.key_path: "" # Path to private key (default: ~/.ssh/id_rsa)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<summary>💡 ماذا يحدث خلف الكواليس</summary> 1. يقرأ OpenClaw ملف `RESEARCHCLAW_AGENTS.md` → يتعلم دور منسّق البحث 2. يقرأ OpenClaw ملف `README.md` → يفهم التثبFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.<summary>💡 내부 동작 과정</summary> 1. OpenClaw이 `RESEARCHCLAW_AGENTS.md`를 읽고 → 연구 오케스트레이터 역할을 학습 2. OpenClaw이 `README.md`를 읽고 → 설치 및 파이프라인 구조를 이해 3. OpenClaw이 `confFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.# 1. HOME override — prevents reading ~/.ssh, ~/.bashrc, etc.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.print(" Install: sudo apt install texlive-full (or equivalent)")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.<summary>💡 底层发生了什么</summary> 1. OpenClaw 读取 `RESEARCHCLAW_AGENTS.md` → 学习研究编排器角色 2. OpenClaw 读取 `README.md` → 理解安装方式和流水线结构 3. OpenClaw 复制 `config.researchclaw.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.<summary>💡 What happens under the hood</summary> 1. OpenClaw reads `RESEARCHCLAW_AGENTS.md` → learns the research orchestrator role 2. OpenClaw reads `README.mFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.<summary>💡 Ce qui se passe en coulisses</summary> 1. OpenClaw lit `RESEARCHCLAW_AGENTS.md` → apprend le role d'orchestrateur de recherche 2. OpenClaw lit `READFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.<summary>💡 Que sucede internamente</summary> 1. OpenClaw lee `RESEARCHCLAW_AGENTS.md` → aprende el rol de orquestador de investigacion 2. OpenClaw lee `README.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.# key_path: "~/.ssh/id_rsa"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<summary>💡 O que acontece por baixo dos panos</summary> 1. O OpenClaw lê `RESEARCHCLAW_AGENTS.md` → aprende o papel de orquestrador de pesquisa 2. O OpenClaw lFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.# key_path: "~/.ssh/id_rsa"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.key_path: "" # Path to private key (default: ~/.ssh/id_rsa)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.def __init__(self, config: SshRemoteConfig, workdir: Path) -> None:Fix: Pin versions and sources; vendor anything fetched at install time.<summary>💡 Что происходит под капотом</summary> 1. OpenClaw читает `RESEARCHCLAW_AGENTS.md` → принимает на себя роль исследовательского оркестратора 2. OpenClaFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.<summary>🖼️ <b>Auto-Generated Framework Diagram</b> — FAME Architecture</summary> <br> <p align="center"> <img src="thumbnails/framework_VII_fame_token_mergingFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.subprocess.run(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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.completed = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(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.completed = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.completed = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = 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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["bash", str(setup_sh)], cwd=str(run_dir),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = 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.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.1. ``results.json`` — structured JSON output (recommended for all domains)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(cmd, check=True, capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.r = subprocess.run(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.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.cp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.2. ``results.csv`` — tabular outputFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# Force-kill the container on timeoutFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.r = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- Colab session timeouts only kill the current experiment, not the pipelineFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = sandbox.run_project(project, entry_point="/etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Subprocess stdout may not flush before kill on some platformsFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell." validated metric reporting, and results.json output. NOT using it\n"Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.which cause ``UnicodeDecodeError`` with ``text=True`` and kill theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.system: You are a literature mining assistant.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.The pipeline will execute all 23 stages autonomously. Output will be saved to the <code>output/</code> directory including the paper PDF, LaTeX source, experimeFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.system: You are a computational scientist who writes real, runnable experiments. Your code implements actual algorithmsFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.result = sandbox.run_project(project, entry_point="/etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.system: You are a publication formatting editor.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.result = asyncio.run(crawler.crawl("http://10.0.0.1:9200"))Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.2. ``experiment_summary_best.json`` at run root (repair cycle output)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.proc.kill = AsyncMock()Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.system: You are a strict domain-aware reviewer. Reject off-topic papers aggressively.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.assert "verification_report.json" in contract.output_filesFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.assert result.issues[0].message == "Dangerous call: os.system()"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.err = check_url_ssrf("http://10.0.0.1")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.system: You are a principal investigator designing ML experiments.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.err = check_url_ssrf("file:///etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.err = check_url_ssrf("http://192.168.1.1")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.err = validate_entry_point("src/../../etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.err = validate_entry_point("../../../etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cfg = SshRemoteConfig(host="nonexistent-host-12345.invalid")Fix: Pin versions and sources; vendor anything fetched at install time.err = check_url_ssrf("http://169.254.169.254/latest/meta-data")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.err = validate_entry_point("/etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Install: npm i -g opencode-ai@latest (or use `researchclaw setup`)Fix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = crawler.crawl_sync("file:///etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cfg = SshRemoteConfig(host="server", key_path="~/.ssh/my_key")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.``subprocess.run(text=True)`` and prevents the bibtex + multi-passFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Requires: npm i -g opencode-ai@latestFix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = sandbox.run_project(project, entry_point="/etc/passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.err = check_url_ssrf("http://172.16.0.1")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.# Read queries.json from Stage 3 (F1.5 output)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.kill -0 "$pid" 2>/dev/nullFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# --- 2. experiment_summary_best.json (repair cycle output) ---Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.print(" 2. Run: npm i -g opencode-ai@latest")Fix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.ssh_remote=SshRemoteConfig(host="nonexistent.invalid"),Fix: Pin versions and sources; vendor anything fetched at install time.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
41 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Reads credential paths from the home directory≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unclaimed publisher≈ +8 on the totalClaim donwrightdesigns: 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.
- 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.
- Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- 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.