brainchain-worker@0.1.2
CAUTION· install onlyPublisher claims: "Earn USDG on BrainChain doing the tasks Jev hires this agent for, each one in a sandboxed turn." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Install scripts ran; no agent task scenario for this bundle.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · 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 (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-14 and scored it 75/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: Destructive file system command detected; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
`npx -y brainchain-worker bridge --eth 0.001`.Fix: Pin versions and sources; vendor anything fetched at install time.npx -y brainchain-worker join --name "<name>" --about "<what this agent does well>" --price 0.20Fix: Pin versions and sources; vendor anything fetched at install time."so a person claims it, and move it here with `npx brainchain-worker bridge --eth 0.001`. The gas drip serves each address once.",Fix: Pin versions and sources; vendor anything fetched at install time.const secretUrl = (path: string) => `http://user:PASSWORDSECRET9@${host}${path}`;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.npx -y brainchain-worker run --exec "sh '{baseDir}/scripts/engine.sh'" --timeout $(( ${OPENCLAW_WORKER_TIMEOUT:-1080} / 60 + 2 ))Fix: Pin versions and sources; vendor anything fetched at install time.`npx -y brainchain-worker bridge --eth 0.001`.Fix: Pin versions and sources; vendor anything fetched at install time.&& rm -rf /var/lib/apt/lists/*Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log("windows smoke: output, a native program, and a stop that reaches the whole tree all pass");Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.The worker starts on BrainChain testnet, where tasks pay test USDG. `npx -y brainchain-worker status` shows theFix: Pin versions and sources; vendor anything fetched at install time.npx -y brainchain-worker new-key --file ~/.brainchain/worker.keyFix: Pin versions and sources; vendor anything fetched at install time.const echoed = await createChain({ ...TESTNET, rpc: `http://user:PASSWORDSECRET9@${host}/rest` }, account).now().catch((error: unknown) => reason(error));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.npx -y brainchain-worker join --name "<name>" --about "<what this agent does well>" --price 0.20Fix: Pin versions and sources; vendor anything fetched at install time.npx -y brainchain-worker run --exec "sh '{baseDir}/scripts/engine.sh'" --timeout $(( ${OPENCLAW_WORKER_TIMEOUT:-1080} / 60 + 2 ))Fix: Pin versions and sources; vendor anything fetched at install time.The worker starts on BrainChain testnet, where tasks pay test USDG. `npx -y brainchain-worker status` shows theFix: Pin versions and sources; vendor anything fetched at install time.npx -y brainchain-worker new-key --file ~/.brainchain/worker.keyFix: Pin versions and sources; vendor anything fetched at install time.return { ...env, ...extra };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (!raw) throw new Error("Set BRAINCHAIN_WORKER_KEY to the worker's private key, or BRAINCHAIN_WORKER_KEY_FILE to a file that holds it. `npx brainchain-worker new-key` makes one.");Fix: Pin versions and sources; vendor anything fetched at install time.…rget} and is still open, and the contract takes one at a time. Follow it with \`npx brainchain-worker proposal ${open}\`.`); if (revert) throw new ProposalError(`${call.text} woul…Fix: Pin versions and sources; vendor anything fetched at install time."The appeal bond is 1.25 USDG, and this wallet holds 1. Bridge more with `npx brainchain-worker bridge --bounty <amount>`.",Fix: Pin versions and sources; vendor anything fetched at install time."the application with `npx brainchain-worker status`. New workers are offered house tasks first, which BrainChain pays for.",Fix: Pin versions and sources; vendor anything fetched at install time.throw new Error("The worker's key is not a valid private key. `npx brainchain-worker new-key` makes one.");Fix: Pin versions and sources; vendor anything fetched at install time."so a person claims it, and move it here with `npx brainchain-worker bridge --eth 0.001`",Fix: Pin versions and sources; vendor anything fetched at install time.const kill = () => {Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.… await expect(outcome({ withheld: true, payloadURI: "https://records.example/1.json", checks: [check("fetch", "ok"), check("record-hash", "skip"), check("input-hash", "skip"), check("levels", "skip")] }, { refetch })).resolves.toEqual({ fi…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.log(`Proposal ${id} is waiting for Jev (${tx}). Follow it with \`npx brainchain-worker proposal ${id}\`.`);Fix: Pin versions and sources; vendor anything fetched at install time./** Whether a supervisor started the npx above this process, as PID 1, as a child of PID 1 or as a systemd service. A stop from it can reach no further than npx. */Fix: Pin versions and sources; vendor anything fetched at install time.…board and is still open, and the contract takes one at a time. Follow it with \`npx brainchain-worker proposal 9\`.`); expect(chain.propose).not.toHaveBeenCalled(); } })…Fix: Pin versions and sources; vendor anything fetched at install time.expect(lines.at(-1)).toBe(`Proposal 2 is waiting for Jev (${TX}). Follow it with \`npx brainchain-worker proposal 2\`.`);Fix: Pin versions and sources; vendor anything fetched at install time.`warning: could not tell whether process group ${pgid} is the command an earlier run left running, so it was left alone. If it is still working, stop it with kill -- -${pgid}.`;Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.… open, and the contract takes one at a time. Nothing was sent. Follow it with \`npx brainchain-worker proposal ${taken}\`.`); } else if (name || about) { console.log("This wor…Fix: Pin versions and sources; vendor anything fetched at install time.…er run left running, so it was left alone. If it is still working, stop it with kill -- -${pgid}.`); delete store.state.command; store.save(); if (!leftover) r…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if (process.platform !== "win32" && stat.isFile() && (stat.mode & 0o077) !== 0) warn(`warning: other users can read ${file}; run chmod 600 on it`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.expect(logged(t.log)).toEqual(["task 7: paid 0.975 USDG", "task 8: refunded to its poster: the result was not delivered in time"]);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if (balance < bond && !claims) throw new Error(`${holds} Bridge more with \`npx brainchain-worker bridge --bounty <amount>\`.`);Fix: Pin versions and sources; vendor anything fetched at install time.if (last === undefined) return "no: run `npx brainchain-worker join` to apply";Fix: Pin versions and sources; vendor anything fetched at install time.const RUN = '`npx brainchain-worker run --exec "<command>"`';Fix: Pin versions and sources; vendor anything fetched at install time.expect(warn).toHaveBeenCalledWith(`warning: other users can read ${open}; run chmod 600 on it`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."so a person claims it, and move it here with `npx brainchain-worker bridge --eth 0.001`";Fix: Pin versions and sources; vendor anything fetched at install time.export const HIDDEN = /[\u00ad\u061c\u180e\u200b\u200e\u200f\u202a-\u202e\u2060-\u2064\u2066-\u2069\ufeff]/;Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.expect(r.log).toContain("Not enough ETH to send on to BrainChain beyond what stays for gas on Robinhood Chain.");Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.expect(logged(refunded.log)).toEqual(["task 7: refunded to its poster: Jev did not accept the work"]);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.`0.00002 ETH on BrainChain; join needs about 0.00008 ETH for gas. Send this address ETH on Robinhood Chain, then move it here with \`npx brainchain-worker bridge --eth 0.001\`.`,Fix: Pin versions and sources; vendor anything fetched at install time.* Calls `lost` once when what npx put above this process dies. npx passes a stopFix: Pin versions and sources; vendor anything fetched at install time.expect(logged(slashed.log)).toEqual(["task 46: refunded to its poster: Jev ruled for the poster; 100 tBRAIN of the worker's stake was slashed"]);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.gas: "Send this address ETH on Robinhood Chain, then move it here with `npx brainchain-worker bridge --eth 0.001`",Fix: Pin versions and sources; vendor anything fetched at install time.options.log(`${name}: stopping after the current task; ${signal === "SIGINT" ? "press Ctrl-C" : `send ${signal}`} again to stop now`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.expect(skill).toContain("npx -y brainchain-worker new-key --file ~/.brainchain/worker.key");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
5 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim usebrainchain: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Destructive file system command detected≈ +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.
- New publisher≈ +3 on the totalTime clears this on its own after 14 and 30 days. Claiming the handle (+50) is the fastest way past it.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- URL with embedded credentials≈ +2 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.