Offense runs on-demand security assessments against a staging URL, a running app, or a source tree, and returns findings with evidence a person can check. It is a Cloudflare Worker app at app.offense.sh plus a sandbox runner that does the actual probing.

This site documents the shipped product. Where something is partial, simulated or manual, the page says so instead of implying it works.

How the pieces fit

  1. A person or an agent (CLI, MCP server, or API key) starts an assessment from the web app.
  2. The web app persists a durable job row and publishes it to the offense-assessments Cloudflare Queue. The consumer claims it with a lease and a per-attempt token.
  3. The web app dispatches to the runner over the RUNNER service binding. The runner creates a Boat sandbox from a saved offense-worker-v0-4-0 snapshot, allowlists only the target host, and runs the investigator (Strix or Shannon) through a per-job model gateway.
  4. The runner streams events, findings and usage back to the web app on POST /api/assessments/:id/{usage,findings,status} with a bearer token.
  5. On a terminal status the web app settles the budget reservation and refunds the unused portion. Findings carry checksummed evidence bundles.

What you can do today

Area Surface
Assessments Browser flow at /app/onboarding, or POST /api/v1/sandboxes
Code and dependency scans POST /api/v1/scans with a .tar.gz archive, or the GitHub App connection
Pre-merge checks POST /api/v1/checks, or the GitHub pull-request webhook
Dependency sweeps POST /api/v1/sweeps/plan, /synthesize, /run
Compromise / privesc sweeps POST /api/v1/compromise/plan, /synthesize, /run
Scheduled loops POST /api/v1/loops
Swarms POST /api/v1/swarms
Live sandboxes exec, files, egress, result routes on a sandbox

Read next

Honest limits

These are real gaps in the deployed product, not roadmap promises:

  • Clerk is mocked (an email session) unless CLERK_SECRET_KEY is configured.
  • The assessment engine is simulated by default. Real Boat sandboxes, Nuclei, Strix, Shannon and the BOLA probe require ASSESSMENT_RUNNER=external and a deployed runner.
  • There is no automated SSO, MFA or CAPTCHA login bot. The supported path is customer-provided Playwright browser session state.
  • Target-specific route and object discovery beyond the generic probe is limited.
  • There is no remote MCP endpoint. The MCP server runs locally over stdio.