offense@0.1.0
CAUTION· startup onlyPublisher claims: "Open-source security tools for coding agents. Provides dependency advisory audits and structured evidence for remediation through a local stdio MCP server, with optional hosted security tools." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
What this means for the label: Caution 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
OFFENSE_API_KEYOPENROUTER_API_KEYConfiguration, not credentials: OFFENSE_API_URL, OFFENSE_CONFIG_DIR, PURPLE_BROWSER, PURPLE_FIX_MODEL, PURPLE_SCAN_KEY- Where it talks to
- no vendor host named in the codeAlso offense.sh, purpleteam.sh, osv.dev, openrouter.ai, twitter.com — 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
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names offense.sh, purpleteam.sh, osv.dev, openrouter.ai, twitter.com as well as its own vendor. The guard injects OFFENSE_API_KEY, OPENROUTER_API_KEY only into requests to the host you bind (and its subdomains) and refuses the rest.
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 (3 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-11 and scored it 78/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: URL with embedded credentials; 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 · 46 s · 3 scenarios · 0 deviationsStatic findings
…nd must not be invoked when absent. Offense audit output is not the legacy `scan.json` input to those helpers; obtain a compatible Purple scan before running advanced triag…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…s://offense.sh/downloads/offense-sdk.tgz). The dashboard exports `offense.config.json`. An explicit enabled `pre_deploy`, `post_deploy` or `agent_run` event determines when the host should call it. Configure optional severity-based gates b…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."start": "node --env-file-if-exists=.env server/index.js",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(JSON.stringify({ directory: outputDir, counts: result.counts }, null, 2));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…production remain explicit. ### Function-level reachability Read `reachability.json` and the call paths in `triage.md`/`handoff.md`. Prioritize `static_path_found` findings: they have a source entry → caller → affected API path, file/line …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…y] [--output directory] [--plan-limit 0..10] [--max-pages 1..10] [--resume audit.json]', 'login [--no-browser]', 'logout', 'status', 'whoami', 'tools [list|show <tool>]', 'balance', 'topup', 'quote <tool> --input input.json', 'call <tool> …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…scripts/update.mjs` alongside the other helpers and read the package's `manifest.json`. Run `node /installed/purple/scripts/update.mjs --skill purple` after inspecting it to verify the files and record their hashes in `.skill-install.json`…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.throw new CliError('Use offense report --input audit.json|job.json --output report.pdf. This command is offline.');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ent, run `offense rehearse /clean/project --scan /absolute/report-directory/scan.json --sandboxed --output /absolute/evidence`. The flag acknowledges isolation; it does not create a sand…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… upgrade is incompatible. The HTTPS audit helper also saves a separate **`trace.json`** locally. Its fixed allowlist records observed stages, outcomes, bounded durations and aggregate counts, fixed error categories and freshly generated ru…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.const kill = () => { try { process.kill(-child.pid, 'SIGKILL'); } catch {} };Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.offense dependencies verify --report fix.json [--output directory]Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ent, run `offense rehearse /clean/project --scan /absolute/report-directory/scan.json --sandboxed --output /absolute/evidence`. The flag acknowledges isolation; it does not create a sand…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…it result. Help and preview do not write traces. Share only the returned `trace.json` when `traceStatus` is `saved`. Disabled or failed exports leave any older trace file unchanged; it is not evidence for the new run. The adjacent `audit.j…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if (options.action === 'scan') { console.log(JSON.stringify(await analyze(path.resolve(options.directory), { output: options.output }), null, 2)); return; }Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.'report --input audit.json|job.json --output report.pdf',Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… stay unknown until an affected API has been reviewed. Use `api-targets-template.json` to add mappings: inspect the advisory and the affected version's implementation using the agent's preferred connection; provide exported symbol paths, a…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ts, missing importers and provider errors visible. 2. **Prioritize.** Read `scan.json` and `remediation.md`. Advisory matches are candidates, not confirmed exploitable vulnerabilities. For a complete executable checkout, run `offense triag…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…s://offense.sh/downloads/offense-sdk.tgz). The dashboard exports `offense.config.json`. An explicit enabled `pre_deploy`, `post_deploy` or `agent_run` event determines when the host should call it. Configure optional severity-based gates b…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ts, missing importers and provider errors visible. 2. **Prioritize.** Read `scan.json` and `remediation.md`. Advisory matches are candidates, not confirmed exploitable vulnerabilities. For a complete executable checkout, run `offense triag…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.registry credentials, `.env` files or unrelated source. Package names and exactFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.node "$OFFENSE_HELPERS/cli.mjs" report --input /private/reports/audit.json --output /private/reports/audit.pdfFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."dev": "concurrently -k \"vite --host 127.0.0.1\" \"node --env-file-if-exists=.env --watch server/index.js\"",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…it result. Help and preview do not write traces. Share only the returned `trace.json` when `traceStatus` is `saved`. Disabled or failed exports leave any older trace file unchanged; it is not evidence for the new run. The adjacent `audit.j…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…each finding, read the advisory details, affected ranges and references in `scan.json`. Trace the affected API and configuration prerequisites through the actual callers to attacker-controlled input. If that cannot be established, keep `ne…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… upgrade is incompatible. The HTTPS audit helper also saves a separate **`trace.json`** locally. Its fixed allowlist records observed stages, outcomes, bounded durations and aggregate counts, fixed error categories and freshly generated ru…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim offense-research: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- 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.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.