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
- A person or an agent (CLI, MCP server, or API key) starts an assessment from the web app.
- The web app persists a durable job row and publishes it to the
offense-assessmentsCloudflare Queue. The consumer claims it with a lease and a per-attempt token. - The web app dispatches to the runner over the
RUNNERservice binding. The runner creates a Boat sandbox from a savedoffense-worker-v0-4-0snapshot, allowlists only the target host, and runs the investigator (Strix or Shannon) through a per-job model gateway. - The runner streams events, findings and usage back to the web app on
POST /api/assessments/:id/{usage,findings,status}with a bearer token. - 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
- Getting started — an account, a verified target, a first run
- Connect a codebase — the GitHub App and archive scans
- Assessments and findings — evidence, verification, retests
- API keys and scopes —
assessments:createversusloops:write
Honest limits
These are real gaps in the deployed product, not roadmap promises:
- Clerk is mocked (an email session) unless
CLERK_SECRET_KEYis configured. - The assessment engine is
simulatedby default. Real Boat sandboxes, Nuclei, Strix, Shannon and the BOLA probe requireASSESSMENT_RUNNER=externaland 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.