/pentest command starts a full blackbox penetration test of a running web application or API, identified by its URL. It needs no source code and no Symbiotic account. The command switches the agent into pentest (attack) mode, where the pentester agent collects the engagement details, checks authorization, and then runs the audit with the pentest tool set.
The pentest plugin is enabled by default. Opt-out is documented in the plugin options.
Usage
question tool. See Intake.
The help text documents
/pentest <url>. The command template, however, tells the agent to collect the target from the operator and not to read it from the command arguments. In practice, the agent asks for the target even if you pass a URL. Enter the URL again when the intake question appears.Related command
/normal only switches the agent back. It does not stop a run that is already in progress.
How it works
When you run/pentest, the following happens:
- The command is registered by the pentest plugin (
commands.ts) and runs thepentesteragent with a fixed prompt template (blackbox/command.ts). - The agent calls the
questiontool once to collect the engagement details, and warns you that a full run can take tens of minutes and consume many requests and tokens. The run does not start until you confirm. - The agent loads the
blackbox-auditskill and runs the audit in phases, tracking progress with a live task list (todowrite). - The agent submits validated findings with
pentest_reportand writes the report files to disk.
Intake
The agent asks the following questions in a singlequestion call. You can type your own answer to any of them.
If the scope answer is
Not authorized, the agent stops and does not scan the target.
After intake, the agent asks one follow-up question when authentication is needed:
- Session cookie: the cookie as
name=value, or the wholeCookieheader if several are needed. - Bearer token in storage: the storage (
localStorageorsessionStorage), the key, and the value. - Username and password: both values. The agent logs in through the browser using
pentest_creds.
Scope
Every network tool takes ascope object built from the intake answers:
authorized: trueis required. Nothing runs against a target without it.allowHostsis empty by default, which means the target, its API, and its subdomains are in scope.egressdefaults toopen, so SSRF can be proven. Setegress: "allowlist"to confine traffic to the listed hosts and to block internal address ranges.rateLimitcaps the combined request rate. Set it tofalseto run at full speed.wordlistselects the ffuf wordlist:quick,thorough, orexhaustive.
Phases
Theblackbox-audit skill drives the run through these phases:
Report
pentest_report writes the results to ~/.local/share/symbiotic/pentest/ by default. The data home can be changed with the PENTEST_DATA_DIR environment variable (or XDG_DATA_HOME), and the files go to <data home>/symbiotic/pentest/. Each run produces these files:
Credentials are never written to the report.