Project Settings Registry

Every configurable parameter of a RedAmon project, with what it means, what it accepts and whether an external agent may write it. GENERATED from recon_settings/registry.yaml; a test fails the build when this page and the registry disagree, so it cannot go stale.

There are 714 parameters. 648 are settable over the MCP surface at any time, 19 are fixed when a project is created, and 47 are not pipeline parameters at all. 14 of the settable ones are the engagement's LIMITS - a rate ceiling, an exclusion list, a time window, the agent's denylists - which the form and the MCP surface reach alike and which the pipeline enforces at scan start whatever tuning says.

For the narrative version with screenshots, see Project Settings Reference.

How to read this

  • Accepts is the ENFORCED bound, not a suggestion. A value outside it is refused by name rather than clamped, and one bad key refuses a whole batch.
  • Written vs resolved. Several values are corrected at scan start rather than refused: a rate above the engagement ceiling comes down to the ceiling, a container image outside the shipped set is pinned back to the default, and a wordlist path outside the project directory is dropped. Each is logged with a [guardrail] line.
  • Zero is not always the slowest value. Several rate fields treat 0 as UNLIMITED, which makes it the most aggressive setting available. Those say so.
  • Two levels. scanModules decides which PHASES run; a per-tool *Enabled flag decides which tools run inside a phase. Setting one without the other is a silent no-op.
  • One capability surface. Every settable field has an input in the project form and is writable through update_recon_settings; neither door reaches something the other cannot. The exception is the engagement RECORD, which is deliberately UI-only.

Contents


Agent

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
agentActivatePostExplPhasetrue / falsetruesettableWhether the post-exploitation phase is available to the agent at all.
agentBindPortOnTarget1–65535 countsettableLeave empty if unsure (agent will ask)
agentBruteForceMaxWordlistAttempts0–1000 count3settableThe attempt ceiling for one credential attack, which is what keeps it from running a whole wordlist against a live account.
agentBruteforceSpeed0–10 count5settableHow aggressively the agent's credential attacks run, which trades attempts per second against lockout risk.
agentChiselTunnelEnabledtrue / falsefalsesettableWhether the agent may stand up a chisel tunnel, which gives it network reach beyond its own container.
agentCreateGraphImageOnInittrue / falsefalsesettableRenders a picture of the graph when a session starts, so the agent begins with a view of the estate.
agentCypherMaxRetries0–10 count3settableHow many times agent retries a failed request before giving up on it.
agentExecutionTraceMemorySteps1–10000 count100settablePast steps kept in context
agentExplSystemPromptfree_text(empty)settableInjected during the exploitation phase. Leave empty for default.
agentGuardrailEnabledtrue / falsetruesettableThe agent's own scope guardrail, which refuses a tool call aimed outside the project's targets.
agentInformationalSystemPromptfree_text(empty)settableInjected during the informational phase. Leave empty for default.
agentKaliInstallAllowedPackagesfree_text(empty)settableComma-separated whitelist. If non-empty, ONLY these packages can be installed.
agentKaliInstallEnabledtrue / falsefalsesettableWhether the agent may install additional packages inside its Kali sandbox.
agentKaliInstallForbiddenPackagesfree_text(empty)settableComma-separated blacklist. These packages must NEVER be installed.
agentLatsBranching2–10 count6settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsEnabledtrue / falsefalsesettableWhether agent runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
agentLatsMaxDepth2–10 depth6settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsMaxRollouts4–300 count50settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsMaxTreeNodes10–1000 count120settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsMinHypotheses2–4 count2settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsPhaseExploitationtrue / falsetruesettableWhether the LATS search runs during the exploitation phase as well as reconnaissance.
agentLatsPhasePostExpltrue / falsefalsesettablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsPruneFloor0–1 ratio0.15settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLatsShadowModetrue / falsefalsesettableRuns the LATS search without acting on its choices, so its behaviour can be observed before it is trusted.
agentLatsUctC0–10 ratio1.4settablePart of the agent's LATS search configuration, which is how it explores several candidate actions before committing to one.
agentLhostfree_text(empty)settableYour host machine's LAN IP that the target can reach (not the container's 172.x address). Leave empty for bind mode.
agentLlmParseMaxRetries0–20 count3settableHow many times agent retries a failed request before giving up on it.
agentLogBackupCount0–100 count5settableRotated backups to keep
agentLogMaxMb1–1024 count10settableThe size at which the agent's log file rolls, in megabytes.
agentLport1–65535 portsettableLeave empty for bind mode
agentMaxIterations1–1000 count100settableLLM reasoning iterations limit
agentNgrokTunnelEnabledtrue / falsefalsesettableWhether the agent may expose a local listener through ngrok, which makes it reachable from the public internet.
agentOpenaiModelfree_textclaude-opus-4-6settableModel used by the agent. Configure providers in Global Settings.
agentPayloadUseHttpstrue / falsefalsesettableWhether a generated payload calls back over HTTPS rather than plain HTTP.
agentPlanMaxParallelTools1–50 count10settableConcurrent tools per plan wave (root + fireteam); extras queue
agentPostExplPhaseTypefree_textstatefullsettableStateful keeps Meterpreter/shell sessions between turns
agentPostExplSystemPromptfree_text(empty)settableInjected during the post-exploitation phase. Leave empty for default.
agentRequireApprovalForExploitationtrue / falsetruesettableWhether the agent must be approved before it moves from reconnaissance into exploitation.
agentRequireApprovalForPostExploitationtrue / falsetruesettableWhether the agent must be approved before it acts on a host it has already compromised.
agentRequireToolConfirmationtrue / falsetruesettableWhether every agent tool call waits for a human to approve it.
agentToolOutputMaxChars1000–100000 count40000settableTruncation limit for tool output
agentToolPhaseMapjson_object{"query_graph":["informational","exploitation","post_exploitation"],"proxy_brainsettablePer-project overrides for which engagement phase each agent tool belongs to.
attackSkillConfigjson_object{"builtIn":{"cve_exploit":true,"brute_force_credential_guess":true,"phishing_socsettablePer-project enable state for the built-in attack skills. Rewritten across every project when a user deletes one of their own skills.
triageReviewBudget0–10000 count150settableHow many findings one triage job may review before it stops and reports what it got through.

AI attack-surface recon

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
aiSurfaceReconCacheEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconChatShapeProbeEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconJuliusProbePackEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconLatencyBaselineEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconMaxWorkers1–500 threads5settableHow many AI attack-surface recon operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 2.
aiSurfaceReconMcpHandshakeEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconMcpListToolsEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
aiSurfaceReconMcpYaraEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconModelListEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconOpenapiDiscoveryEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
aiSurfaceReconProbePackVersionfree_textlatestsettablePinned probe-pack identifier recorded on every annotation (default "latest").
aiSurfaceReconTimeout1–86400 seconds10settableHow long AI attack-surface recon may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
aiSurfaceReconUserAgentfree_textRedAmon-AISurfaceRecon/1.0settableUser-Agent sent on every probe.
aiSurfaceReconVectorDbReadEnabledtrue / falsetruesettableWhether AI attack-surface recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.

AlienVault OTX

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
otxEnabledtrue / falsetruesettableWhether otx runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
otxWorkers1–20 threads5settableHow many otx operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

Amass

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
amassActivetrue / falsefalsesettableAmass active probing mode In stealth mode this is forced to false.
amassBrutetrue / falsefalsesettableAmass DNS brute-force In stealth mode this is forced to false.
amassBruteWordlistsjson_object["default"]settableWordlists amass brute-forces with. Only the shipped list names are accepted.
amassDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestcaffix/amass:latestsettableThe container image spawned for amass. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
amassEnabledtrue / falsefalsesettableWhether amass runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
amassMaxResults1–50000 count50000settableMaximum subdomains taken from an amass run. In stealth mode this is lowered to at most 100; a quieter value is kept.
amassTimeout1–120 minutes10settableHow long amass may run, in MINUTES rather than seconds. The name reads like every other timeout in the model and the unit does not match it.

Arjun

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
arjunChunkSize10–5000 count500settableParameters tested per request batch. Lower = more requests, higher accuracy
arjunCustomHeadershttp_header(empty)settableAdd auth tokens or custom headers for authenticated parameter testing
arjunDisableRedirectstrue / falsefalsesettableDisable following redirects
arjunEnabledtrue / falsetruesettableWhether arjun runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
arjunMaxEndpoints1–50000 count50000settableThe most results arjun accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
arjunMethodsfree_text["GET","POST"]settableHTTP methods: ["GET", "POST", "PUT", "DELETE", "PATCH"]
arjunPassivetrue / falsefalsesettablePassive mode (no requests) In stealth mode this is forced to true.
arjunRateLimit0–100000 rps0settableRequests per second arjun sends while probing for parameters. ZERO MEANS UNLIMITED, so 0 is the most aggressive value available and not the safest. Under an engagement ceiling a 0 here is rewritten to the ceiling at scan start. 0 means UNLIMITED here, so it is the fastest value and not the safest. Capped to the engagement rate ceiling at scan start.
arjunScanTimeout60–86400 seconds600settableHow long arjun may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
arjunStabletrue / falsefalsesettableStability mode (slower but more reliable)
arjunThreads1–20 threads2settableHow many arjun operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
arjunTimeout1–86400 seconds15settableHow long arjun may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

BadDNS

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
baddnsDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestredamon-baddns:latestsettableThe container image spawned for baddns. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
baddnsEnabledtrue / falsefalsesettableWhether baddns runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
baddnsModulesfree_text["cname","ns","mx","txt","spf"]settableSubset of BadDNS modules to run. Valid: cname, ns, mx, txt, spf, dmarc, wildcard, nsec, references, zonetransfer. (MTA-STS exists in baddns 2.1.0 but is not CLI-addressable due to an upstream validator regex bug -- omit.) Default: ["cname","ns","mx","txt","spf"]
baddnsNameserversfree_text(empty)settableOptional custom DNS resolvers (e.g. ["1.1.1.1","8.8.8.8"]). Empty = system resolvers.
baddnsRunTimeout1–86400 seconds1800settableHow long baddns may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

phase port_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
bannerGrabEnabledtrue / falsetruesettableWhether Banner grab runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
bannerGrabMaxLength100–5000 bytes1000settableTruncate banners longer than this (chars)
bannerGrabThreads1–500 threads20settableHow many Banner grab operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
bannerGrabTimeout1–86400 seconds5settableHow long Banner grab may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Capture proxy

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
captureProxyEnabledtrue / falsefalsesettableWhether the HTTP capture proxy records the scan's traffic. Capture runs off the scan's critical path, so a capture failure never fails the scan.

Censys

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
censysEnabledtrue / falsefalsesettableWhether censys runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
censysWorkers1–20 threads5settableHow many censys operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

CriminalIP

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
criminalIpEnabledtrue / falsefalsesettableWhether CriminalIP runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
criminalIpWorkers1–20 threads5settableHow many CriminalIP operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

crt.sh

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
crtshEnabledtrue / falsetruesettableWhether crtsh runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
crtshMaxResults1–50000 count5000settableMaximum certificate-transparency records read from crt.sh in one pass. In stealth mode this is lowered to at most 100; a quieter value is kept.

CVE lookup

phase vuln_scan · passive traffic

FieldAcceptsDefaultMCPMeaning
cveLookupEnabledtrue / falsetruesettableWhether CVE lookup runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
cveLookupMaxCves1–100 count20settableMaximum CVEs attached to one service before enrichment stops adding more.
cveLookupMinCvss0–10 ratio0settableMinimum CVSS score (0-10)
cveLookupSourcefree_textnvdsettableWhich vulnerability database CVE enrichment queries.

CypherFix

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
cypherfixBranchPrefixfree_textcypherfix/settablePrefix for fix branch names (e.g., cypherfix/rem-abc123).
cypherfixDefaultBranchfree_textmainsettableBase branch for creating fix branches (default: main).
cypherfixDefaultRepofree_text(empty)settableGitHub repository to fix (owner/repo format). Can be overridden per remediation.
cypherfixGithubTokenfree_text(empty)closedPersonal access token with Withheld from every read on the MCP surface.
cypherfixLlmModelfree_text(empty)settableOverride the LLM model for CypherFix agents, including the Priority Board pass that explains and groups the top-ranked findings. Leave empty to use the model selected in Agent Behaviour.
cypherfixRequireApprovaltrue / falsetruesettableWhether a CypherFix patch must be approved by a human before it is pushed.

Denial of service

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
dosAssessmentOnlytrue / falsefalsesettableOnly check for availability vulnerabilities (nmap scripts, nuclei) without active testing.
dosConcurrentConnections10–10000 threads1000settableHow many dos operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
dosMaxAttempts1–10 count3settableMax different vectors to try before reporting service is resilient.
dosMaxDuration10–300 seconds60settableThe longest one denial-of-service attempt may run, in seconds. It is only reachable at all when roeAllowDos permits the technique.

DNS

phase domain_discovery · active traffic at the target

FieldAcceptsDefaultMCPMeaning
dnsEnabledtrue / falsetruesettableWhether dns runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
dnsMaxRetries1–10 count3settableHow many times dns retries a failed request before giving up on it.
dnsMaxWorkers1–200 threads80settableHow many dns operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 5.
dnsRecordParallelismtrue / falsetruesettableHow many dns operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to false.

Domain recon AI hints

phase domain_discovery · sends no traffic

FieldAcceptsDefaultMCPMeaning
domainReconAiNsHintEnabledtrue / falsetruesettableWhether Domain recon AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
domainReconAiTxtHintEnabledtrue / falsetruesettableWhether Domain recon AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Engagement

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
engagementIdentityHeaderhttp_header(empty)settableA header every request carries so the target's operators can attribute the traffic to this engagement, for example 'X-Bug-Bounty: your-handle'. Empty sends none. Many programs require one, and it is the difference between a scan that gets a question and one that gets a block. Validated like any other header: no CR or LF, and not Host, Authorization, Cookie or Proxy-*.
engagementKindinternal, third_partyinternalcreate-onlyWho the target belongs to, and therefore what has to be true before a scan may start. 'internal' is your own estate. 'third_party' is somebody else's, and such a project MUST carry a non-zero rate ceiling and an authorization record or start_recon refuses it. Set at creation and immutable afterwards: converting a project after the fact would either claim an authority nobody granted or drop a ceiling a human put there. Every project created before this field existed reads as 'internal', so an old project with no ceiling is flagged rather than blocked. Fixed at project creation; refused on an existing project.

ffuf

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
ffufAiExtensionstrue / falsefalsesettableWhen true, FFuf file extensions are picked per-target by AI from response headers (requires aiInPipeline=true). The static ffufExtensions list is ignored.
ffufAutoCalibratetrue / falsetruesettableLearns what a 'not found' response looks like on this target before filtering, which removes most soft-404 noise.
ffufCustomHeadershttp_header(empty)settableOne header per line. Sent with every request
ffufEnabledtrue / falsefalsesettableWhether ffuf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
ffufExtensionsfree_text(empty)settableFile extensions to fuzz, e.g. [".php", ".asp"]
ffufFilterCodesstatus_codes(empty)settableHTTP status codes to filter out
ffufFilterSizefree_text(empty)settableFilter responses by size
ffufFollowRedirectstrue / falsefalsesettableFollows a redirect rather than recording it, which can turn one request into several.
ffufMatchCodesstatus_codes[200,201,204,301,302,307,308,401,403,405]settableHTTP status codes to match, e.g. [200, 301, 403]
ffufMaxTime60–86400 seconds1800settableMax total time in seconds
ffufParallelism1–50 threads20settableHow many ffuf operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
ffufRate0–100000 rps0settableRequests per second ffuf sends. ZERO MEANS UNLIMITED, so 0 is the most aggressive value available and not the safest, and it is also the shipped default. Under an engagement ceiling a 0 here is rewritten to the ceiling at scan start. 0 means UNLIMITED here, so it is the fastest value and not the safest. Capped to the engagement rate ceiling at scan start.
ffufRecursiontrue / falsefalsesettableFollows a discovered directory down into its own contents, which multiplies the request count.
ffufRecursionDepth1–5 depth2settableHow many directories deep recursion goes before it stops.
ffufSmartFuzztrue / falsetruesettablePicks extensions and wordlist entries from what the target has already revealed rather than fuzzing blind.
ffufThreads1–200 threads40settableHow many ffuf operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
ffufTimeout1–86400 seconds10settableHow long ffuf may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
ffufWordlistproject_file/usr/share/seclists/Discovery/Web-Content/common.txtsettablePath to wordlist file

Fireteam

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
fireteamAllowedPhasesfree_text["informational","exploitation","post_exploitation"]settableEngagement phases in which the fireteam may operate.
fireteamConfirmationTimeoutSec0–86400 count600settableHow long a fireteam member waits for confirmation before giving up on a step.
fireteamEnabledtrue / falsetruesettableWhether the agent may split work across a fireteam of sub-agents.
fireteamMaxConcurrent1–8 count5settable1-8. Upper limit on members in-flight at once.
fireteamMaxMembers2–8 count5settable2-8. Hard cap on fireteam size the LLM can request.
fireteamMemberMaxIterations5–50 count10settable5-50. Each member's ReAct budget before it exits.
fireteamPropensity0–10 count3settableHow strongly the agent leans toward deploying a fireteam over single-agent or plan_tools. Injected into the system prompt as a directive the LLM must follow.
fireteamTimeoutSec60–7200 count3600settable60-7200. Hard wall-clock ceiling for the whole fireteam.

FOFA

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
fofaEnabledtrue / falsefalsesettableWhether fofa runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
fofaMaxResults1–10000 count1000settableThe most results fofa accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here. An empty value is replaced by the default rather than honoured.
fofaWorkers1–20 threads5settableHow many fofa operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

gau

phase resource_enum · passive traffic

FieldAcceptsDefaultMCPMeaning
gauBlacklistExtensionsfree_text(empty)settableFile extensions to skip, e.g. [".jpg", ".css"]
gauDetectMethodstrue / falsetruesettableDetect allowed HTTP methods
gauDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestsxcurity/gau:latestsettableThe container image spawned for gau. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
gauEnabledtrue / falsefalsesettableWhether gau runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to true.
gauFilterDeadEndpointstrue / falsetruesettableDrops archived URLs that no longer respond, so the result reflects the live surface.
gauMaxUrls1–100000 count50000settableThe most results gau accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
gauMethodDetectRateLimit1–100000 rps50settableRequests per second the gau method-detection pass sends to the target. Active traffic despite gau's passive reputation, so the engagement ceiling caps it. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 2.
gauMethodDetectThreads1–500 threads25settableHow many gau operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
gauMethodDetectTimeout1–86400 seconds5settableHow long gau may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
gauProvidersfree_text["wayback","commoncrawl","otx","urlscan"]settableSources: "wayback", "commoncrawl", "otx", "urlscan"
gauThreads1–20 threads5settableHow many gau operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
gauTimeout10–86400 seconds60settableHow long gau may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
gauVerbosetrue / falsefalsesettableEmits per-URL progress, which is useful while debugging and noisy otherwise.
gauVerifyAcceptStatusstatus_codes[200,201,301,302,307,308,401,403]settableStatus codes that indicate a live URL. Include 401/403 for auth-protected endpoints
gauVerifyDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/httpx:latestsettableThe container image spawned for gau. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
gauVerifyRateLimit1–100000 rps100settableRequests per second the gau verification pass sends. gau itself only reads public archives, but verification dials the target, so this is active traffic and the engagement ceiling caps it. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 2.
gauVerifyThreads1–100 threads50settableHow many gau operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
gauVerifyTimeout1–86400 seconds5settableHow long gau may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
gauVerifyUrlstrue / falsetruesettableVerify discovered URLs are alive
gauWorkers1–20 threads10settableHow many gau operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
gauYearRangefree_text(empty)settableFilter Wayback Machine by year (e.g., 2020, 2024)

GitHub secret hunt

standalone · passive traffic

FieldAcceptsDefaultMCPMeaning
githubMaxCommits1–1000 count100settableThe most results github accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
githubOutputJsontrue / falsetruesettableEmits machine-readable output alongside the human-readable report.
githubScanCommitstrue / falsetruesettableWalks commit history as well as the working tree, which is where most leaked secrets actually live.
githubScanGiststrue / falsetruesettableIncludes the organisation members' public gists in the hunt.
githubScanMemberstrue / falsefalsesettableIncludes the organisation members' own repositories in the hunt.
githubTargetOrgfree_text(empty)create-onlyThe GitHub organisation the secret hunt scans. It points a scanner at someone else's assets, so it is scope by another name: settable when the project is created and immutable afterwards. Fixed at project creation; refused on an existing project.
githubTargetReposfree_text(empty)create-onlyComma-separated list. Leave empty to scan all repositories. Fixed at project creation; refused on an existing project.

GraphQL Cop

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
graphqlCopDebugtrue / falsefalsesettable-d flag: adds X-GraphQL-Cop-Test header per request
graphqlCopDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestdolevf/graphql-cop:1.14settableThe container image spawned for GraphQL Cop. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
graphqlCopEnabledtrue / falsefalsesettableWhether GraphQL Cop runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
graphqlCopForceScantrue / falsefalsesettable-f flag: scan even if endpoint doesn't look GraphQL-like
graphqlCopTestAliasOverloadingtrue / falsetruesettableHIGH DoS, 101-alias rate-limit bypass (default true, disabled in stealth) In stealth mode this is forced to false.
graphqlCopTestBatchQuerytrue / falsetruesettableHIGH DoS, array-based batch queries (default true, disabled in stealth) In stealth mode this is forced to false.
graphqlCopTestCircularIntrospectiontrue / falsetruesettableHIGH DoS, deep nested introspection (default true, disabled in stealth) In stealth mode this is forced to false.
graphqlCopTestDirectiveOverloadingtrue / falsetruesettableHIGH DoS (default true, disabled in stealth) In stealth mode this is forced to false.
graphqlCopTestFieldSuggestionstrue / falsetruesettableLOW info-leak check (default true)
graphqlCopTestGetMethodtrue / falsetruesettableMEDIUM CSRF, GET-method queries allowed (default true)
graphqlCopTestGetMutationtrue / falsetruesettableMEDIUM CSRF, GET-based mutations (default true)
graphqlCopTestGraphiqltrue / falsetruesettableLOW info-leak, detects GraphiQL/Playground UI (default true)
graphqlCopTestIntrospectiontrue / falsefalsesettableHIGH info-leak check (default false, dedupes with native scanner)
graphqlCopTestPostCsrftrue / falsetruesettableMEDIUM CSRF, url-encoded POST (default true)
graphqlCopTestTraceModetrue / falsetruesettableINFO, Apollo tracing extension disclosure (default true)
graphqlCopTestUnhandledErrortrue / falsetruesettableINFO info-leak, exception stack traces (default true)
graphqlCopTimeout10–600 seconds120settableHow long GraphQL Cop may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

GraphQL security

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
graphqlAuthHeaderfree_text(empty)settableHeader name when graphqlAuthType = "custom"
graphqlAuthTypefree_text(empty)settable"", "bearer", "basic", "cookie", "custom"
graphqlAuthValuefree_text(empty)settableAuth credential (token / user:pass / cookie string) Withheld from every read on the MCP surface.
graphqlConcurrency1–20 threads5settableHow many graphql operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
graphqlDepthLimit1–50 depth10settableMax introspection query nesting depth (default 10)
graphqlEndpointsfree_text(empty)settableComma-separated custom GraphQL endpoints (empty = auto-discover)
graphqlIntrospectionTesttrue / falsetruesettableProbe __schema to detect exposed introspection (default true) In stealth mode this is forced to true.
graphqlRateLimit0–100 rps10settableRequests per second graphql sends. Capped to the engagement ceiling at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 2.
graphqlRetryBackoff0–60 ratio2settableExponential backoff base seconds between retries (default 2.0)
graphqlRetryCount0–10 count3settableHow many times graphql retries a failed request before giving up on it.
graphqlSecurityEnabledtrue / falsefalsesettableWhether graphql runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to true.
graphqlTimeout1–600 seconds30settableHow long graphql may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan. In stealth mode this is forced to 60.
graphqlVerifySsltrue / falsetruesettableReject invalid / self-signed TLS certs (default true)

GVM vulnerability scan

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
gvmCleanupAfterScantrue / falsetruesettableRemoves the GVM task and its target after the scan, which keeps the appliance from accumulating state.
gvmPollInterval5–300 count30settableSeconds between scan status checks. Lower values give faster log updates.
gvmPortListfree_textAll TCP and Nmap top 100 UDPsettableWhich ports GVM probes on every target. The full IANA UDP range is the single biggest driver of scan time: closed UDP ports answer with silence and must each be timed out, and GVM reports no progress percentage until that finishes.
gvmScanConfigfree_textFull and fastsettableGVM scan configuration preset. “Full and fast” is recommended for most targets.
gvmScanTargetsfree_textbothcreate-onlyWhich targets from recon data to scan. “Both” provides the most thorough coverage. Fixed at project creation; refused on an existing project.
gvmTaskTimeout0–86400 seconds14400settableHow long gvm may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

HackerTarget

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
hackerTargetEnabledtrue / falsetruesettableWhether hackertarget runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
hackerTargetMaxResults1–50000 count5000settableMaximum subdomains taken from the HackerTarget API in one pass. In stealth mode this is lowered to at most 100; a quieter value is kept.

hakrawler

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
hakrawlerCustomHeadershttp_header(empty)settableOne header per line (e.g., Cookie: value). Sent with every request
hakrawlerDepth1–10 depth2settableHow many links deep to follow
hakrawlerDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestjauderho/hakrawler:latestsettableThe container image spawned for hakrawler. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
hakrawlerEnabledtrue / falsetruesettableWhether hakrawler runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
hakrawlerIncludeSubstrue / falsetruesettableFollows links onto subdomains of the target rather than staying on one host.
hakrawlerInsecuretrue / falsetruesettableSkip TLS verification
hakrawlerMaxUrls1–100000 count50000settableThe most results hakrawler accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
hakrawlerParallelism1–10 threads5settableHow many hakrawler operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
hakrawlerThreads1–20 threads5settableHow many hakrawler operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. Capped to the engagement rate ceiling at scan start.
hakrawlerTimeout5–86400 seconds30settableHow long hakrawler may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

HTTP probe AI hints

phase http_probe · sends no traffic

FieldAcceptsDefaultMCPMeaning
httpProbeAiFaviconHashEnabledtrue / falsetruesettableWhether HTTP probe AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
httpProbeAiHeaderScanEnabledtrue / falsetruesettableWhether HTTP probe AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
httpProbeAiTitleDetectionEnabledtrue / falsetruesettableWhether HTTP probe AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
httpProbeAiWappalyzerEnabledtrue / falsetruesettableWhether HTTP probe AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

httpx

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
httpxCustomHeadershttp_header(empty)settableExtra headers sent with every httpx request. Validated: a header may not contain CR or LF, and Host, Authorization, Cookie and Proxy-* are refused, because each would change where the request goes or what it carries rather than annotating it.
httpxDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/httpx:latestsettableThe container image spawned for httpx. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
httpxEnabledtrue / falsetruesettableWhether httpx runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
httpxFilterCodesstatus_codes(empty)settableHide responses with these status codes
httpxFollowRedirectstrue / falsetruesettableFollows a redirect to its destination rather than recording the redirect itself.
httpxIncludeResponsetrue / falsetruesettableStore full response body
httpxIncludeResponseHeaderstrue / falsetruesettableRecords the full response headers, which later checks read and which make the output much larger.
httpxMatchCodesstatus_codes(empty)settableOnly show responses with these status codes
httpxMaxRedirects1–50 count10settableMaximum redirect chain depth to prevent loops
httpxPathsfree_text(empty)settableAdditional URL paths to probe
httpxProbeAsntrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeCdntrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeCnametrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeContentLengthtrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeContentTypetrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeFavicontrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is. In stealth mode this is forced to false.
httpxProbeHashfree_textsha256settableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeIptrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeJarmtrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is. In stealth mode this is forced to false.
httpxProbeLineCounttrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeResponseTimetrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeServertrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeStatusCodetrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeTechDetecttrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeTitletrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeTlsGrabtrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeTlsInfotrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxProbeWordCounttrue / falsetruesettableWhether httpx records this attribute while probing. Each probe adds work per host, and several add requests beyond the first, so the set of probes decides both how much the scan learns and how loud it is.
httpxRateLimit1–100000 rps50settableRequests per second httpx sends while probing. Capped by the engagement ceiling at scan start. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 2.
httpxRetries0–10 count2settableHow many times httpx retries a failed request before giving up on it.
httpxThreads1–200 threads50settableHow many httpx operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
httpxTimeout1–86400 seconds10settableHow long httpx may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Hydra

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
hydraConnectionTimeout5–120 seconds32settableHow long hydra may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
hydraEnabledtrue / falsetruesettableWhether hydra runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
hydraExtraChecksfree_textnsrsettableAdditional protocol-specific checks run alongside the credential attempts.
hydraMaxWordlistAttempts1–10 count3settableHow many wordlist strategies to try before giving up.
hydraStopOnFirstFoundtrue / falsetruesettableStop immediately when valid credentials are found.
hydraThreads1–64 threads16settableHow many hydra operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
hydraVerbosetrue / falsetruesettableShow each login attempt in output for progress tracking.
hydraWaitBetweenConnections0–300 threads0settableHow many hydra operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.

JS recon

phase js_recon · active traffic at the target

FieldAcceptsDefaultMCPMeaning
jsReconAiSdkDetectionEnabledtrue / falsetruesettableWhether JS recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
jsReconConcurrency1–30 threads10settableHow many JS recon operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
jsReconCustomEndpointKeywordsfree_text(empty)closedThe uploaded custom endpoint-keyword list. Written only by the custom-files endpoint.
jsReconCustomFrameworksfree_text(empty)closedThe uploaded custom framework-signature list. Written only by the custom-files endpoint.
jsReconCustomPackagesfree_text(empty)closedThe uploaded custom package list. Written only by the custom-files endpoint.
jsReconCustomPatternsfree_text(empty)closedThe uploaded custom secret-pattern file. Written only by the custom-files endpoint, which also places it on disk.
jsReconCustomSourcemapPathsfree_text(empty)closedThe uploaded custom source-map path list. Written only by the custom-files endpoint.
jsReconDependencyChecktrue / falsetruesettableChecks the packages a bundle names against known-vulnerable versions.
jsReconDevCommentstrue / falsetruesettableExtract developer comments
jsReconDomSinkstrue / falsetruesettableDetect DOM XSS sinks
jsReconEnabledtrue / falsefalsesettableWhether JS recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
jsReconEndpointAcceptStatusstatus_codes[200,201,204,301,302,307,308,401,403,405]settableHTTP status codes treated as live during endpoint verification An empty value is replaced by the default rather than honoured.
jsReconEndpointConcurrency1–20 threads10settableHow many JS recon operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
jsReconEndpointCustomHeadershttp_header(empty)settableHeader lines used when verifying extracted endpoints
jsReconExtractEndpointstrue / falsetruesettableExtracts API endpoints referenced in JavaScript, which is the main reason to read it at all.
jsReconFrameworkDetecttrue / falsetruesettableIdentifies the framework a bundle was built with, which decides which later checks apply.
jsReconIncludeArchivedJstrue / falsetruesettableIncludes JavaScript recovered from web archives, which can reveal endpoints the live site no longer exposes.
jsReconIncludeChunkstrue / falsetruesettableIncludes lazily-loaded chunks, which multiplies the file count on a modern bundler's output. In stealth mode this is forced to false.
jsReconIncludeFrameworkJstrue / falsetruesettableIncludes framework bundles, which are large, mostly third-party, and occasionally where a key is embedded. In stealth mode this is forced to false.
jsReconMaxFiles10–10000 count10000settableThe most results JS recon accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here. In stealth mode this is forced to 50.
jsReconMinConfidencefree_textlowsettable"low", "medium", "high"
jsReconRegexPatternstrue / falsetruesettableAdditional regular expressions applied to retrieved JavaScript, on top of the shipped set.
jsReconSourceMapstrue / falsetruesettableRetrieves source maps when they are published, which recovers the original source rather than the bundle.
jsReconStandaloneCrawlDepth0–50 depth3settableHow many links deep a standalone JS recon run crawls from its seed.
jsReconStandaloneCrawlScopefree_textsubdomainsettableHow far a standalone JS recon run may crawl from its seed: same host, same domain, or anywhere.
jsReconTimeout60–86400 seconds900settableHow long JS recon may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
jsReconUploadedFilesfree_text(empty)closedJavaScript files uploaded for analysis rather than fetched from the target. Written only by the upload endpoint, which also places each file on disk.
jsReconValidateEndpointstrue / falsefalsesettableProbe extracted endpoints and drop confirmed-dead ones before graph ingestion (default off)
jsReconValidateKeystrue / falsetruesettableValidate discovered API keys In stealth mode this is forced to false.
jsReconValidationTimeout1–30 seconds5settableHow long JS recon may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

jsluice

phase js_recon · active traffic at the target

FieldAcceptsDefaultMCPMeaning
jsluiceConcurrency1–20 threads5settableHow many jsluice operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
jsluiceEnabledtrue / falsetruesettableWhether jsluice runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
jsluiceExcludePatternsfree_text(empty)settableDeny-list patterns. Extensions like ".js" match the path suffix only; everything else is a substring match against the URL path and query. An empty value is replaced by the default rather than honoured.
jsluiceExtractSecretstrue / falsetruesettableWhether jsluice reports secret-shaped strings it finds in JavaScript. A feature toggle, not a credential: it decides what the tool looks for, and any secret found belongs to the target.
jsluiceExtractUrlstrue / falsetruesettableExtracts URLs jsluice finds in JavaScript.
jsluiceMaxFiles1–10000 count10000settableThe most results jsluice accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here. In stealth mode this is forced to 20.
jsluiceParallelism1–10 threads5settableHow many jsluice operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
jsluiceTimeout30–86400 seconds300settableHow long jsluice may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
jsluiceVerifyAcceptStatusstatus_codes[200,201,301,302,307,308,401,403]settableHTTP status codes treated as "live" by the verifier An empty value is replaced by the default rather than honoured.
jsluiceVerifyDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/httpx:latestsettableThe container image spawned for jsluice. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
jsluiceVerifyRateLimit1–1000 rps50settableRequests per second jsluice sends. Capped to the engagement ceiling at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start.
jsluiceVerifyThreads1–500 threads50settableHow many jsluice operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
jsluiceVerifyTimeout1–60 seconds5settableHow long jsluice may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
jsluiceVerifyUrlstrue / falsetruesettableAfter extraction, run extracted URLs through httpx and a deny-list filter so only live, non-asset URLs reach the graph. Disable to keep all extracted URLs (legacy behavior).

Katana

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
katanaConcurrency1–50 threads15settableHow many katana operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
katanaCustomHeadershttp_header(empty)settableCustom HTTP headers for crawler
katanaDepth1–10 depth2settableHow many links deep the crawl goes from each seed URL. In stealth mode this is forced to 1.
katanaDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/katana:latestsettableThe container image spawned for katana. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
katanaEnabledtrue / falsetruesettableWhether katana runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
katanaExcludePatternsfree_text(empty)settableRegex patterns to exclude from crawling
katanaJsCrawltrue / falsetruesettableRenders JavaScript with a headless browser, which finds routes a static crawl cannot and costs far more per page. In stealth mode this is forced to false.
katanaMaxUrls1–1000000 count300000settableThe crawl stops after this many URLs, which is what bounds a crawl on a large site. In stealth mode this is forced to 50.
katanaParallelism1–50 threads8settableHow many katana operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
katanaParamsOnlytrue / falsefalsesettableOnly extract parameterized URLs
katanaRateLimit1–100000 rps50settableRequests per second katana sends. Capped to the engagement ceiling at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 2.
katanaScopefree_textdnsettableScope filter: "dn" (domain), "rdn" (root domain), etc.
katanaTimeout60–86400 seconds3600settableHow long katana may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Kiterunner

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
kiterunnerBruteforceMethodsfree_text["POST","PUT","DELETE","PATCH"]settable["GET", "POST", "PUT", "DELETE", "PATCH"]
kiterunnerConnections1–500 threads100settableHow many kiterunner operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
kiterunnerDetectMethodstrue / falsetruesettableEstablishes which HTTP methods each discovered route accepts, at the cost of extra requests per route.
kiterunnerEnabledtrue / falsefalsesettableWhether kiterunner runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
kiterunnerHeadershttp_header(empty)settableAdd auth tokens for authenticated API scanning
kiterunnerIgnoreStatusfree_text(empty)settableBlacklist: filter out noise from common errors
kiterunnerMatchStatusfree_text[200,201,204,301,302,401,403,405]settableWhitelist: only show endpoints with these status codes (includes auth-protected)
kiterunnerMethodDetectionModefree_textbruteforcesettableHow kiterunner establishes which HTTP methods a discovered route accepts.
kiterunnerMethodDetectRateLimit1–100000 rps50settableRequests per second the kiterunner method-detection pass sends. Capped by the engagement ceiling at scan start. Capped to the engagement rate ceiling at scan start.
kiterunnerMethodDetectThreads1–500 threads25settableHow many kiterunner operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
kiterunnerMethodDetectTimeout1–86400 seconds5settableHow long kiterunner may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
kiterunnerMinContentLength0–100000 count0settableIgnore responses smaller than this (bytes)
kiterunnerParallelism1–5 threads3settableHow many kiterunner operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
kiterunnerRateLimit1–100000 rps100settableRequests per second kiterunner sends. Capped to the engagement ceiling at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start.
kiterunnerScanTimeout60–86400 seconds1000settableHow long kiterunner may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
kiterunnerThreads1–500 threads50settableHow many kiterunner operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
kiterunnerTimeout1–86400 seconds10settableHow long kiterunner may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
kiterunnerWordlistsfree_text["routes-large"]settableWordlists: "routes-small", "routes-large"

knockpy

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
knockpyReconEnabledtrue / falsetruesettableWhether knockpy runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
knockpyReconMaxResults1–50000 count5000settableMaximum subdomains taken from a knockpy run. In stealth mode this is lowered to at most 100; a quieter value is kept.

masscan

phase port_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
masscanAiPortCatalogEnabledtrue / falsetruesettableWhether masscan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
masscanBannerstrue / falsefalsesettableWhether masscan grabs a service banner as well as recording the open port, which turns a SYN scan into a connecting one.
masscanCustomPortsfree_text(empty)settableOverrides Top Ports if set. Use ranges: 8080-8090
masscanEnabledtrue / falsetruesettableWhether masscan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
masscanExcludeTargetsfree_text(empty)settableComma-separated targets to exclude
masscanRate1–100000 rps1000settablePackets per second masscan sends. Masscan is the fastest port scanner here and the one most likely to be noticed; the engagement ceiling caps it at scan start. Capped to the engagement rate ceiling at scan start.
masscanRetries0–10 count1settableHow many times masscan retries a failed request before giving up on it.
masscanTopPortsfree_text1000settableUse “100”, “1000”, or “full” for all 65535 ports
masscanWait0–86400 seconds10settableWait time in seconds

MITRE ATT&CK enrichment

phase vuln_scan · sends no traffic

FieldAcceptsDefaultMCPMeaning
mitreAutoUpdateDbtrue / falsetruesettableWhether the MITRE dataset is refreshed before enrichment runs.
mitreCacheTtlHours1–168 count24settablePart of MITRE ATT&CK enrichment, which annotates findings with the technique they correspond to. Enrichment reads existing findings and sends no traffic.
mitreEnabledtrue / falsetruesettableWhether mitre runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
mitreEnrichGvmtrue / falsetruesettableAttaches MITRE ATT&CK technique references to GVM findings.
mitreEnrichRecontrue / falsetruesettableAttaches MITRE ATT&CK technique references to recon findings.
mitreIncludeCapectrue / falsetruesettableIncludes the CAPEC attack-pattern reference alongside each technique.
mitreIncludeCwetrue / falsetruesettableIncludes the CWE weakness reference alongside each technique.

naabu

phase port_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
naabuCustomPortsfree_text(empty)settableCustom port list, e.g. "80,443,8080"
naabuDisplayCdntrue / falsetruesettableReports CDN-fronted hosts rather than dropping them silently, so the operator can see what was skipped.
naabuDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/naabu:latestsettableThe container image spawned for naabu. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
naabuEnabledtrue / falsetruesettableWhether naabu runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
naabuExcludeCdntrue / falsefalsesettableSkips hosts that resolve to a CDN, where a port result describes the CDN rather than the target.
naabuPassiveModetrue / falsefalsesettableUse Shodan InternetDB instead of active scan In stealth mode this is forced to true.
naabuRateLimit1–100000 rps1000settablePackets per second naabu sends, across all hosts combined. The engagement ceiling caps it at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 10.
naabuRetries0–10 count1settableHow many times naabu retries a failed request before giving up on it.
naabuScanTypefree_textssettable"s" (SYN) or "c" (connect) In stealth mode this is forced to "c".
naabuSkipHostDiscoverytrue / falsetruesettableSkips the ping sweep and scans every listed host directly, which is slower but finds hosts that do not answer ICMP. In stealth mode this is forced to true.
naabuThreads1–100 threads25settableHow many naabu operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
naabuTimeout1000–3600000 milliseconds10000settableHow long naabu waits for a port to answer, in MILLISECONDS. At the default of 10000 a full sweep of an unresponsive host is slow; below about 1000 a distant host starts reading as closed.
naabuTopPortsfree_text1000settableTop N ports, e.g. "1000"
naabuVerifyPortstrue / falsetruesettableRe-probes each discovered port before reporting it, which removes the false positives a fast SYN scan produces.

Netlas

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
netlasEnabledtrue / falsefalsesettableWhether netlas runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
netlasWorkers1–20 threads5settableHow many netlas operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

Nmap

phase port_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
nmapAiVersionRegexEnabledtrue / falsetruesettableWhether nmap runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
nmapEnabledtrue / falsetruesettableWhether nmap runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
nmapHostTimeout30–86400 seconds300settableHow long nmap may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
nmapParallelism1–10 threads5settableHow many nmap operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.
nmapScriptScantrue / falsetruesettableRun NSE vuln scripts In stealth mode this is forced to false.
nmapTimeout60–86400 seconds600settableHow long nmap may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
nmapTimingTemplatefree_textT3settableNmap's timing template, T0 to T5. Higher is faster and noisier; the stealth pass forces T2. Not a wordlist despite once being classified with them. In stealth mode this is forced to "T2".
nmapVersionDetectiontrue / falsetruesettableDetect service versions

Nuclei

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
nucleiAiResponseFiltertrue / falsefalsesettableUse AI to classify Nuclei response bodies as WAF/rate-limit block pages when the static keyword list misses (requires aiInPipeline=true). Augments is_false_positive(); kicks in only on suspicious status codes (403/406/418/429/503) so cost stays bounded. Default false.
nucleiAiTagstrue / falsefalsesettableUse AI to prune the Nuclei tag list based on detected tech stack (requires aiInPipeline=true). Replaces the static nucleiTags list with a tech-aware subset chosen by the LLM at scan time. Default false.
nucleiAutoUpdateTemplatestrue / falsetruesettableWhether nuclei refreshes its template set before scanning. It fetches from the public template repository, so it is an egress decision as well as a freshness one.
nucleiBulkSize1–500 threads25settableNumber of hosts to process in parallel In stealth mode this is forced to 5.
nucleiConcurrency1–500 threads25settableHow many nuclei operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 2.
nucleiCustomTemplatesproject_file(empty)settableCustom template paths
nucleiDastModetrue / falsefalsesettableDynamic testing mode In stealth mode this is forced to false.
nucleiDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/nuclei:latestsettableThe container image spawned for nuclei. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
nucleiEnabledtrue / falsetruesettableWhether nuclei runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
nucleiExcludeTagsfree_text["dos","fuzz"]settableTemplate tags to exclude, e.g. ["dos", "fuzz"]
nucleiExcludeTemplatesfree_text(empty)settableTemplate paths to exclude
nucleiFollowRedirectstrue / falsetruesettableFollows a redirect while running a template rather than matching on the redirect itself. A template that expects its payload to land on the final page needs this; one matching a redirect header does not.
nucleiHeadlesstrue / falsefalsesettableBrowser-based testing In stealth mode this is forced to false.
nucleiInteractshtrue / falsetruesettableOut-of-band interaction detection In stealth mode this is forced to false.
nucleiMaxRedirects0–50 count10settableMaximum redirect chain to follow
nucleiNewTemplatesOnlytrue / falsefalsesettableRestricts the run to templates added since the last template update, for a fast re-check.
nucleiRateLimit1–100000 rps100settableRequests per second nuclei sends, across all templates and all targets combined rather than per template. Capped by the engagement ceiling at scan start. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 5.
nucleiRetries0–10 count1settableHow many times nuclei retries a failed request before giving up on it.
nucleiScanAllIpstrue / falsefalsesettableScans every IP a host resolves to rather than the first, which matters behind round-robin DNS.
nucleiSelectedCustomTemplatesproject_file_name(empty)settableWhich of this project's uploaded custom templates to run. Each entry is a path a scan container opens, so it is validated against the project's own upload directory.
nucleiSeverityinfo, low, medium, high, critical, unknown["critical","high","medium","low"]settableSeverity filter: "critical", "high", "medium", "low"
nucleiSystemResolverstrue / falsetruesettableUses the container's own DNS resolvers rather than nuclei's defaults.
nucleiTagsfree_text["cve","xss","sqli","rce","lfi","ssrf","xxe","ssti"]settableTemplate tags to include
nucleiTakeoverRunTimeout1–86400 seconds1800settableHow long nuclei may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
nucleiTakeoversEnabledtrue / falsetruesettableWhether nuclei runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
nucleiTemplatesfree_text(empty)settableSpecific template paths to include
nucleiTimeout1–86400 seconds10settableHow long nuclei may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Origin discovery

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
originDiscoveryEnabledtrue / falsefalsesettableWhether Origin discovery runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
originDiscoveryKeylesstrue / falsetruesettableNon-CDN subdomains + SPF/MX + crt.sh (no key needed)
originDiscoveryMaxCandidates1–200 count25settableThe most results Origin discovery accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
originDiscoveryMaxSearchCalls0–500 count50settablePer-scan budget of keyed scanner-search calls
originDiscoveryPassiveDnstrue / falsetruesettableSecurityTrails + ViewDNS DNS history
originDiscoveryScannerstrue / falsetruesettableFavicon/cert pivots via Shodan/Censys/FOFA/ZoomEye/OTX/VirusTotal (each uses its own key) In stealth mode this is forced to false.
originDiscoveryThreshold0–100 percent60settableWeighted-similarity confidence (0-100) needed to confirm an origin
originDiscoveryTimeout1–60 seconds10settableHow long Origin discovery may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
originDiscoveryWorkers1–30 threads10settableHow many Origin discovery operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

OSINT enrichment

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
osintEnrichmentEnabledtrue / falsefalsesettableWhether OSINT enrichment runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

ParamSpider

phase resource_enum · passive traffic

FieldAcceptsDefaultMCPMeaning
paramspiderEnabledtrue / falsefalsesettableWhether paramspider runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to true.
paramspiderPlaceholderfree_textFUZZsettableReplacement value for parameter values (e.g., FUZZ for fuzzing tools)
paramspiderTimeout10–86400 seconds120settableHow long paramspider may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
paramspiderWorkers1–10 threads8settableHow many paramspider operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

Path traversal

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
pathTraversalArchiveExtractionEnabledtrue / falsefalsesettableWhether Path traversal runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
pathTraversalOobCallbackEnabledtrue / falsetruesettableWhether Path traversal runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
pathTraversalOobProviderfree_textoast.funsettableinteractsh-client server. Use a self-hosted instance if oast.fun is blocked. Only used when the OOB callback workflow is enabled.
pathTraversalPayloadReferenceEnabledtrue / falsetruesettableWhether Path traversal runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
pathTraversalPhpWrappersEnabledtrue / falsetruesettableWhether Path traversal runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
pathTraversalRequestTimeout1–120 seconds10settableHow long Path traversal may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Phishing

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
phishingSmtpConfigfree_text(empty)settableFree-text SMTP settings injected into the agent prompt for social engineering email delivery. The agent reads this as-is when the social engineering simulation skill is active. Withheld from every read on the MCP surface.

Pipeline

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
scanModulesdomain_discovery, port_scan, http_probe, resource_enum, vuln_scan, js_recon["domain_discovery","port_scan","http_probe","resource_enum","vuln_scan"]settablePipeline phases to run. Values: "domain_discovery", "port_scan", "http_probe", "resource_enum", "vuln_scan", "js_recon"
stealthModetrue / falsefalsesettableThe engagement's PASSIVE switch. On, every recon tool is forced to its passive, low-noise profile and the noisiest ones are switched off outright (apply_stealth_overrides in recon/project_settings.py, driven by the registry's own stealth profile). This is the setting a rule of engagement means by "passive only", "no active scanning", "observation only" or "do not send probes to the target": it is one switch rather than the dozens of per-tool flags such a rule would otherwise have to name.
updateGraphDbtrue / falsetrueclosedWhether results are stored in the graph database. Off, the scan still runs and still reaches the target, and writes nothing, so every later read reports "nothing found" where the truth is "nothing was written". That is the scanned-and-clean versus never-scanned confusion, so it is a debug switch rather than a pipeline parameter.
useBruteforceForSubdomainstrue / falsefalsesettableEnable DNS brute-force for subdomain discovery In stealth mode this is forced to false.

Pipeline AI master switch

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
aiInPipelinetrue / falsefalsesettableMaster toggle that enables AI-powered enhancements across all recon modules that support them. Cascades on/off to per-tool AI flags (ffufAiExtensions, nucleiAiTags, wafAiClassifier, nucleiAiResponseFilter, takeoverAiClassifier).
aiPipelineModelfree_textclaude-opus-4-6settableModel identifier for the AI hooks in recon (e.g. "claude-opus-4-6", "claude-haiku-4-5-20251001"). Independent of agentOpenaiModel.

Port scan AI catalog

phase port_scan · sends no traffic

FieldAcceptsDefaultMCPMeaning
portScanAiPortCatalogEnabledtrue / falsetruesettableWhether Port scan AI catalog runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Project identity

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
activationStartedAtfree_textclosedWhen the current version activation took the lock. Used to detect a stale lock left by a crashed activation.
activationStatefree_textidleclosedThe version-activation lock. Taken while a saved scan version rewrites the graph and released afterwards; it is a lock flag the application owns, not a setting.
activationVersionIdfree_textclosedThe scan version currently being activated. Written by the activation state machine.
createdAtfree_textnullclosedWhen the project row was created. Written by the database.
createdByIdfree_textclosedThe user who created the project. Populated going forward only; may be null on older rows.
descriptionfree_textsettableFree-text notes about the engagement, shown beside the project name.
idfree_textnullclosedThe project's primary key. Row identity, not configuration.
mcpKaliExecEnabledtrue / falsefalseclosedWhether MCP tokens on this project may run shell commands in the Kali sandbox. It decides what a credential can do rather than how the pipeline scans, so it is closed on the MCP surface: a token that could set it would be granting itself shell access.
namefree_textsettableThe project's display name. Ordinary metadata, shown in every list and header.
reconPresetIdfree_textclosedThe preset last applied to this project, recorded so the UI can show which one it came from. Written by the apply path, not configured directly.
updatedAtfree_textclosedWhen the project row last changed. Written by the database on every update.
updatedByIdfree_textclosedThe user who last updated the project. Populated going forward only; may be null on older rows.
userIdfree_textclosedThe owning user. Writing it reassigns the project to someone else and configures nothing, which is why it is closed on every surface. Withheld from every read on the MCP surface.

puredns

phase domain_discovery · active traffic at the target

FieldAcceptsDefaultMCPMeaning
purednsDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestfrost19k/puredns:latestsettableThe container image spawned for puredns. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
purednsEnabledtrue / falsetruesettableWhether puredns runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
purednsRateLimit0–100000 rps0settableDNS queries per second puredns sends to its resolvers. ZERO MEANS UNLIMITED, so 0 is the most aggressive value available and not the safest. Under an engagement ceiling a 0 here is rewritten to the ceiling at scan start. 0 means UNLIMITED here, so it is the fastest value and not the safest. Capped to the engagement rate ceiling at scan start.
purednsSkipValidationtrue / falsefalsesettableSkips the wildcard-validation pass, which is much faster and lets wildcard DNS flood the results.
purednsThreads0–1000 threads0settableHow many puredns operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
purednsWildcardBatch0–100000 count0settableWildcard filtering batch size

Remote code execution

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
rceAggressivePayloadstrue / falsefalsesettableWhether the RCE technique uses payloads that can leave a running process or a changed file behind, rather than proof-of-concept ones that only echo.
rceDeserializationEnabledtrue / falsetruesettableWhether rce runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
rceOobCallbackEnabledtrue / falsetruesettableWhether rce runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Resource enum AI hints

phase resource_enum · sends no traffic

FieldAcceptsDefaultMCPMeaning
resourceEnumAiClassifierEnabledtrue / falsetruesettableWhether Resource enum AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
resourceEnumAiParamInjectableFlagEnabledtrue / falsetruesettableWhether Resource enum AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
resourceEnumAiPathClassifierEnabledtrue / falsetruesettableWhether Resource enum AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
resourceEnumAiRagPathFlagEnabledtrue / falsetruesettableWhether Resource enum AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
resourceEnumAiToolArgPathEnabledtrue / falsetruesettableWhether Resource enum AI hints runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Rules of Engagement

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
roeAllowAccountLockouttrue / falsefalsesettableWhether a technique that can lock a real account out is permitted. Off keeps credential attacks to a single attempt per account and withholds the lockout-capable skills from the agent's options. An engagement LIMIT: enforced at scan start whatever tuning says.
roeAllowDataExfiltrationtrue / falsefalseclosedWhether a finding may be proven by moving data off the target. Part of the engagement RECORD: it is injected into the agent's prompt and read by a model, and no code refuses an exfiltration path on it. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeAllowDostrue / falsefalsesettableWhether denial-of-service techniques are permitted. Off means the DoS path is refused before it runs and the DoS skill is withheld from the agent's options, whatever their own toggles say. An engagement LIMIT: enforced at scan start whatever tuning says.
roeAllowPhysicalAccesstrue / falsefalseclosedWhether the engagement covers physical access. Recorded for the report; the pipeline has no physical capability. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeAllowProductionTestingtrue / falsetrueclosedWhether production systems are in scope. Off is a statement the operator makes about the estate, not something the scanner can verify, so it constrains what an agent may choose rather than what a tool can reach. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeAllowSocialEngineeringtrue / falsefalsesettableWhether techniques aimed at people rather than systems are permitted. Off withholds the social-engineering skills from the agent's options. An engagement LIMIT: enforced at scan start whatever tuning says.
roeClientContactEmailfree_text(empty)closedWhere to reach the client contact by email. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeClientContactNamefree_text(empty)closedThe named client contact for this engagement. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeClientContactPhonefree_text(empty)closedWhere to reach the client contact by phone. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeClientNamefree_text(empty)closedThe client the engagement is for, as it should appear in the report. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeComplianceFrameworksPCI-DSS, HIPAA, SOC2, GDPR, ISO27001(empty)closedCompliance frameworks the engagement is conducted under, recorded for the report. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeCriticalFindingNotifytrue / falsetrueclosedWhether a critical finding triggers an immediate notification rather than waiting for the report. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeDataRetentionDays0–3650 count90closedHow many days findings and captured data may be kept after the engagement ends. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeDocumentDatafree_textclosedThe uploaded Rules of Engagement document itself, stored so the engagement carries its own authority. A Bytes column written only by the project create and import endpoints, which receive the file. The MCP surface records the document's SHA-256 through attach_engagement_authorization instead; it never carries the bytes. Withheld from every read on the MCP surface.
roeDocumentMimeTypefree_text(empty)closedThe media type of the uploaded Rules of Engagement document. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeDocumentNamefree_text(empty)closedThe filename of the uploaded Rules of Engagement document. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeEmergencyContactfree_text(empty)closedWho to reach out of hours if a scan causes an incident. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeEnabledtrue / falsefalseclosedDERIVED, never written. Engagement limits apply when there is a limit to apply: a non-zero roeGlobalMaxRps, OR a non-empty roeExcludedHosts, OR roeTimeWindowEnabled. The column is kept so old rows and old exports still load, and every service computes the value through recon_settings.engagement.derive_roe_enabled instead of reading it. A writable master switch would be a bypass shipped as a checkbox: one write of false and the ceiling, the exclusions and the window all stop applying at once while every other field still shows its configured value. An engagement LIMIT: enforced at scan start whatever tuning says. DERIVED, never written.
roeEngagementEndDatefree_text(empty)closedThe last date the engagement authorises any activity. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeEngagementStartDatefree_text(empty)closedThe first date the engagement authorises any activity. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeEngagementTypeexternal, internal, web_app, api, mobile, physical, social_engineering, red_teamexternalclosedHow the engagement is classified in the report: pentest, bug bounty, red team and so on. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeExcludedHostReasonsfree_text(empty)settableWhy each excluded host is excluded, parallel to roeExcludedHosts. Read by the report; it does not itself exclude anything. An engagement LIMIT: enforced at scan start whatever tuning says.
roeExcludedHostsfree_text(empty)settableHosts that must never be touched even though they fall inside the target scope. Enforced in three places in recon/main.py: expanded IPs, discovered subdomains and the target domain itself. A non-empty list is one of the three things that make the engagement limits live at all. An engagement LIMIT: enforced at scan start whatever tuning says.
roeForbiddenCategoriesbrute_force, dos, social_engineering, physical, exploitation(empty)settableTechnique categories the agent may not run on this engagement. Each token is expanded to the tools that perform it and refused before the tool executes (CATEGORY_TOOL_MAP in agentic/orchestrator_helpers/nodes/execute_plan_node.py), and the list is also withheld from the classifier's options. What each token covers: brute_force is any credential guessing, including brute forcing, password spraying and credential stuffing; dos is anything aimed at availability, including denial of service, resource exhaustion and volumetric or high-volume testing; social_engineering is anything aimed at a person rather than a system, including phishing, vishing, smishing and pretexting; physical is physical premises, hardware or tailgating; exploitation is taking a confirmed finding further than proving it. The vocabulary is closed because the gate matches these tokens EXACTLY: a free-text category such as "Denial of Service" reaches the agent's prompt as advice and never reaches the gate, so the refusal the UI promises silently does not happen. An engagement LIMIT: enforced at scan start whatever tuning says.
roeForbiddenToolscve_intel, execute_amass, execute_arjun, execute_code, execute_curl, execute_ffuf, execute_gau, execute_guarddog, execute_httpx, execute_hydra, execute_jsluice, execute_katana, execute_naabu, execute_nmap, execute_nuclei, execute_osv_scanner, execute_playwright, execute_subfinder, execute_wpscan, google_dork, kali_shell, metasploit_console, msf_restart, proxy_brain, query_graph, shodan, tradecraft_lookup, web_search(empty)settableTools the agent may not run on this engagement, by name, whatever their own enable flag says. Refused before the tool executes, in agentic/orchestrator_helpers/nodes/execute_plan_node.py. The vocabulary is closed to the agent's real tool names because that gate is an exact string match: a near-miss like "hydra" for execute_hydra never matches, and the tool runs with the ban recorded and unenforced. An engagement LIMIT: enforced at scan start whatever tuning says.
roeGlobalMaxRps0–10000 count0settableThe engagement's request-rate ceiling, in requests per second. Every per-tool rate is capped to it at scan start, including the ones whose own value means 'unlimited'. ZERO MEANS NO CEILING, so this at 0 is not a slow engagement, it is an unlimited one. A non-zero value is also one of the three things that make the engagement limits live at all. An engagement LIMIT: enforced at scan start whatever tuning says.
roeIncidentProcedurefree_text(empty)closedWhat to do if the engagement causes an outage or a security incident. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeMaxSeverityPhaseinformational, exploitation, post_exploitationpost_exploitationsettableThe most severe phase the engagement permits, which bounds how far an attack chain may be taken: informational, exploitation or post_exploitation. An engagement LIMIT: enforced at scan start whatever tuning says.
roeNotesfree_text(empty)closedFree-text engagement notes that did not fit another field. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeParsedJsonjson_objectclosedThe structured form extracted from the uploaded document, which populated the fields above. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeRawTextfree_text(empty)closedThe Rules of Engagement document as plain text, kept so the report can quote it. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it. Withheld from every read on the MCP surface.
roeRequireDataEncryptiontrue / falsetrueclosedWhether engagement data must be encrypted at rest. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeSensitiveDataHandlingno_access, prove_access_only, limited_collection, full_accessno_accessclosedThe agreed handling rule for sensitive data encountered during the engagement. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeStatusUpdateFrequencydaily, weekly, on_finding, nonedailyclosedHow often the client expects a progress update during the engagement. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeThirdPartyProvidersfree_text(empty)closedThird-party providers hosting in-scope assets, who may need their own notification. Part of the engagement RECORD. A person writes it, a model reads it, nothing enforces it; the MCP surface never touches it.
roeTimeWindowDaysfree_text["monday","tuesday","wednesday","thursday","friday"]settableDays of the week on which scanning is permitted, lower-case English names. Empty means every day, once the window is switched on. An engagement LIMIT: enforced at scan start whatever tuning says.
roeTimeWindowEnabledtrue / falsefalsesettableWhether scanning is restricted to an agreed time window. The recon pipeline and the orchestrator both enforce it, and the orchestrator refuses a scan start outside the window with HTTP 403 rather than queueing it. Switching it on is one of the three things that make the engagement limits live at all. An engagement LIMIT: enforced at scan start whatever tuning says.
roeTimeWindowEndTimefree_text18:00settableLocal end of the permitted scanning window, as HH:MM. An end before the start is read as a window that crosses midnight. An engagement LIMIT: enforced at scan start whatever tuning says.
roeTimeWindowStartTimefree_text09:00settableLocal start of the permitted scanning window, as HH:MM. An engagement LIMIT: enforced at scan start whatever tuning says.
roeTimeWindowTimezonefree_textUTCsettableThe IANA timezone the scanning window's times are read in. An engagement LIMIT: enforced at scan start whatever tuning says.

Security checks

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
securityCheckAdminPortExposedtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckBasicAuthNoTlstrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckCacheControlMissingtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckCspUnsafeInlinetrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckDatabaseExposedtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckDirectIpHttptrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckDirectIpHttpstrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckDmarcMissingtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckDnssecMissingtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckEnabledtrue / falsetruesettableWhether Security checks runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
securityCheckInsecureFormActiontrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckIpApiExposedtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckKubernetesApiExposedtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckLoginNoHttpstrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckMaxWorkers1–50 threads10settableHow many security checks run concurrently.
securityCheckMissingCoeptrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckMissingCooptrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckMissingCorptrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckMissingPermissionsPolicytrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckMissingReferrerPolicytrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckNoRateLimitingtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckRedisNoAuthtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckSessionNoHttponlytrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckSessionNoSecuretrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckSmtpOpenRelaytrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckSpfMissingtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTimeout1–86400 seconds10settableHow long Security checks may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
securityCheckTlsExpiredtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsExpiringSoontrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsExpiryDays1–365 count30settableHow many days before expiry a certificate starts being reported as expiring soon.
securityCheckTlsHostnameMismatchtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsSelfSignedtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsWeakCiphertrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsWeakVersiontrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckTlsWildcardOverbroadtrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest.
securityCheckWafBypasstrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.
securityCheckZoneTransfertrue / falsetruesettableWhether this individual check runs during the security-check pass. Each check is one condition tested against what the earlier phases already found; turning it off removes that finding class without affecting the rest. In stealth mode this is forced to false.

Server-side request forgery

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
ssrfCloudMetadataEnabledtrue / falsetruesettableWhether ssrf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
ssrfCloudProvidersfree_textaws,gcp,azure,digitalocean,alibabasettableComma-separated cloud providers to include in the metadata-pivots section. Filters which provider endpoint tables ship in the prompt. Ignored when cloud metadata is disabled.
ssrfCustomInternalTargetsfree_text(empty)settableOne hostname or IP[:port] per line. Injected into the prompt so the agent prioritizes these alongside the generic loopback / RFC1918 sweep.
ssrfDnsRebindingEnabledtrue / falsetruesettableWhether ssrf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
ssrfGopherEnabledtrue / falsetruesettableWhether ssrf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
ssrfInternalRangesfree_text127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16settableComma-separated CIDR blocks the agent treats as internal. Adjust for orgs using non-standard internal addressing (e.g., 100.64.0.0/10 carrier-grade NAT).
ssrfOobCallbackEnabledtrue / falsetruesettableWhether ssrf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
ssrfOobProviderfree_textoast.funsettableinteractsh-client server. Use a self-hosted instance if oast.fun is blocked.
ssrfPayloadReferenceEnabledtrue / falsetruesettableWhether ssrf runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
ssrfPortScanPortsfree_text22,80,443,2375,3306,5432,6379,8080,8500,9200,27017settableComma-separated ports to probe via SSRF. Trim for quieter scans, extend for thorough coverage.
ssrfRequestTimeout1–120 seconds10settableHow long ssrf may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Shodan

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
shodanDomainDnstrue / falsefalsesettablePulls Shodan's own DNS record set for the domain.
shodanEnabledtrue / falsetruesettableWhether shodan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
shodanHostLookuptrue / falsetruesettableLooks each discovered IP up in Shodan, which costs one API credit per host.
shodanPassiveCvestrue / falsetruesettablePassive CVE lookup via Shodan
shodanReverseDnstrue / falsetruesettableAsks Shodan for the names an IP is known by, which often reveals hosts DNS enumeration missed.
shodanWorkers1–20 threads5settableHow many shodan operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

SQL injection

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
sqliLevel1–5 count1settableHigher levels test more injection points (headers, cookies). Default: 1.
sqliRisk1–3 count1settableHigher risk uses more aggressive payloads (e.g., OR-based). Default: 1.
sqliTamperScriptsfree_text(empty)settableComma-separated SQLMap tamper scripts for WAF bypass. Leave empty for auto-detection.

Subdomain discovery

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
subdomainDiscoveryEnabledtrue / falsetruesettableWhether Subdomain discovery runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Subdomain takeover

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
subdomainTakeoverEnabledtrue / falsefalsesettableWhether takeover runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
takeoverAiClassifiertrue / falsefalsesettableUse AI to disambiguate takeover findings from WAF "no host" block pages that match the same static fingerprint (requires aiInPipeline=true). For each finding the scanner probes the host, short-circuits on third-party vendor tokens, and otherwise asks the LLM to classify the body. AI-flagged collisions get score -40 (lands in manual_review). Default false.
takeoverCertValidationEnabledtrue / falsetruesettableWhether takeover runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
takeoverConfidenceThreshold0–100 percent60settable0..100. Findings >= threshold+10 are confirmed, >= threshold are likely, otherwise manual_review
takeoverManualReviewAutoPublishtrue / falsefalsesettablePublish manual_review findings into the main Vulnerability stream (default false)
takeoverRateLimit1–500 rps50settableRequests per second takeover sends. Capped to the engagement ceiling at scan start, so a value above the ceiling is rewritten rather than refused. Capped to the engagement rate ceiling at scan start. In stealth mode this is forced to 10.
takeoverSeverityinfo, low, medium, high, critical, unknown["critical","high","medium"]settableSeverity filter for Nuclei takeover templates (e.g. ["critical","high","medium"])

subfinder

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
subfinderDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/subfinder:latestsettableThe container image spawned for subfinder. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
subfinderEnabledtrue / falsetruesettableWhether subfinder runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
subfinderMaxResults1–50000 count5000settableMaximum subdomains taken from a subfinder run. In stealth mode this is lowered to at most 100; a quieter value is kept.

subjack

phase vuln_scan · active traffic at the target

FieldAcceptsDefaultMCPMeaning
subjackAlltrue / falsefalsesettableTest every URL, not just identified CNAMEs - slower (default false) In stealth mode this is forced to false.
subjackCheckArtrue / falsefalsesettableDetect stale A records pointing to dead cloud IPs (manual review)
subjackCheckMailtrue / falsefalsesettableCheck SPF include + MX takeovers In stealth mode this is forced to true.
subjackCheckNstrue / falsefalsesettableDetect NS takeovers (expired nameservers / dangling cloud DNS delegations) In stealth mode this is forced to true.
subjackEnabledtrue / falsetruesettableWhether subjack runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
subjackRunTimeout1–86400 seconds900settableHow long subjack may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
subjackSsltrue / falsetruesettableForce HTTPS probing for higher accuracy (default true)
subjackThreads1–100 threads10settableHow many subjack operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 3.
subjackTimeout1–86400 seconds30settableHow long subjack may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.

Supply chain recon

standalone · passive traffic

FieldAcceptsDefaultMCPMeaning
supplyChainReconDeepAnalysisEnabledtrue / falsefalsesettableWhether Supply chain recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
supplyChainReconEcosystemsfree_textnpmsettableComma-separated OSV ecosystems to report (default "npm"). Matched EXACTLY against the harvested package ecosystem, so use these names verbatim, case included: npm, PyPI, Go, Maven, crates.io, Packagist, RubyGems, NuGet. Empty string means no filter (report every ecosystem)
supplyChainReconEnabledtrue / falsefalsesettableWhether Supply chain recon runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Supply chain scan

standalone · passive traffic

FieldAcceptsDefaultMCPMeaning
scaIntelCorrelationEnabledtrue / falsetruecreate-onlyWhether supply-chain findings are correlated against the wider intelligence set. It reaches beyond this project's own assets, so it moves with the scope. Fixed at project creation; refused on an existing project.
supplyChainDeepAnalysisEnabledtrue / falsefalsesettableWhether Supply chain scan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
supplyChainEcosystemsfree_textnpm,PyPI,Go,Maven,crates.io,Packagist,RubyGems,NuGetsettablePackage ecosystems the supply-chain scan analyses, such as npm, pypi or go.
supplyChainInputModeupload, github, orguploadsettableWhether the supply-chain scan reads an uploaded SBOM, a repository, or an organisation.
supplyChainOrgDeepAnalysisEnabledtrue / falsefalsesettableWhether Supply chain scan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
supplyChainOrgIncludeArchivedtrue / falsefalsesettableWhether archived repositories are included when scanning an organisation.
supplyChainOrgIncludeForkstrue / falsefalsesettableWhether forked repositories are included when scanning an organisation.
supplyChainOrgMaxRepos0–10000 count50settableMaximum repositories walked when scanning an organisation.
supplyChainOrgNamefree_text(empty)create-onlyThe GitHub organisation whose repositories the supply-chain scan walks. Points the scanner at someone else's assets, so it is write-once. Fixed at project creation; refused on an existing project.
supplyChainOrgReffree_text(empty)settableThe git ref checked out in each organisation repository, when one is pinned.
supplyChainRepoReffree_text(empty)create-onlyThe git ref checked out in the scanned repository. Write-once with the repository it belongs to. Fixed at project creation; refused on an existing project.
supplyChainRepoScopefree_text(empty)create-onlyWhich parts of the repository the scan reads. Write-once with the repository it belongs to. Fixed at project creation; refused on an existing project.
supplyChainRepoUrlfree_text(empty)create-onlyThe repository the supply-chain scan clones. It becomes a git clone argument against a third party's infrastructure, so it is write-once like the scope. Fixed at project creation; refused on an existing project.
supplyChainSbomFilefree_text(empty)closedThe uploaded SBOM this project analyses. Written only by the upload endpoint, which also places the file on disk; a second writer could name a file the project never uploaded.
supplyChainTyposquatEnabledtrue / falsefalsesettableWhether Supply chain scan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.

Targeting and scope

standalone · sends no traffic

FieldAcceptsDefaultMCPMeaning
domainBatchGroupsjson_objectclosedGroups derived from the list at save time: [{ rootDomain, prefixes[], hosts[] }]. Persisted rather than re-derived so the grouping rule has exactly ONE implementation, and so what the operator approved in the preview is literally what the pipeline runs. Always recomputed server-side; never trusted from a body.
domainBatchHostsfree_text(empty)create-onlyRaw hostname list as entered or uploaded. What the operator edits. Fixed at project creation; refused on an existing project.
domainBatchModetrue / falsefalsecreate-onlyDomain batch: the third targeting mode. Mutually exclusive with ipMode. One full recon walks the derived groups in order, appending to one graph. Fixed at project creation; refused on an existing project.
ipModetrue / falsefalsecreate-onlySwitches targeting from a domain to the explicit IP list. Mutually exclusive with domainBatchMode, and part of the scope, so it is write-once. Fixed at project creation; refused on an existing project.
ownershipTokenfree_textyour-secret-token-herecreate-onlyThe secret published in the ownership TXT record. Compared against what DNS returns, so it proves the scope rather than configuring a tool. Fixed at project creation; refused on an existing project. Withheld from every read on the MCP surface.
ownershipTxtPrefixfree_text_redamon-verifycreate-onlyThe label the ownership TXT record is looked up under, prepended to the target domain. Moves with the scope. Fixed at project creation; refused on an existing project.
subdomainListfree_text(empty)create-onlyHosts seeded into the scan in addition to whatever discovery finds. Part of the engagement scope, so it is write-once. Empty entries are dropped and every entry is whitespace-stripped at load. Fixed at project creation; refused on an existing project.
targetDomainfree_text(empty)create-onlyThe single root domain this engagement covers. THE scope column: every phase derives its hosts from it and the target guardrail measures against it. Set once at creation and immutable afterwards, because changing it on an existing project turns a rescan credential into one aimed at a third party. Leading and trailing whitespace is stripped at load. Fixed at project creation; refused on an existing project.
targetGuardrailEnabledtrue / falsetruecreate-onlyThe hard guardrail that refuses to scan a host outside the declared scope. Turning it off removes the control that keeps the pipeline inside its engagement, which is why it moves with the scope and cannot change on an existing project. Fixed at project creation; refused on an existing project.
targetIpsfree_text(empty)create-onlyThe IP addresses or CIDR ranges scanned when ipMode is on. Part of the engagement scope, so it is write-once. Empty entries are dropped and every entry is stripped at load. Fixed at project creation; refused on an existing project.
verifyDomainOwnershiptrue / falsefalsecreate-onlyRequires a DNS TXT record proving control of the target before any active phase runs. Part of the scope's proof, so it is write-once. Fixed at project creation; refused on an existing project.

tlsx

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
tlsxCipherConcurrency1–500 threads10settableHow many tlsx operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
tlsxCipherEnumtrue / falsefalsesettableEnumerate weak supported ciphers (extra connections per target). Default false. In stealth mode this is forced to false.
tlsxConcurrency1–300 threads50settableHow many tlsx operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 5.
tlsxDelayfree_text(empty)settableOptional -delay between connections (e.g. "200ms"); stealth only. Default "".
tlsxDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/tlsx:latestsettableThe container image spawned for tlsx. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
tlsxEnabledtrue / falsetruesettableWhether tlsx runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
tlsxIncludeHttpPortstrue / falsefalsesettableAlso grab certs on HTTP/HTTPS ports httpx already covers (duplicate handshakes). Default false.
tlsxInjectHostnamestrue / falsetruesettableMerge in-scope certificate SAN hostnames into dns.subdomains as new probe targets. Default true.
tlsxMaxHostnamesPerIp0–1000 count1settableWhen one IP serves several known hostnames, how many to scan (each may present a different cert). Default 1.
tlsxMaxInjectedHostnames0–10000 count200settableCap on in-scope certificate SAN hostnames merged back into dns.subdomains as scan targets. Default 200.
tlsxMaxTargets1–100000 count2000settableHard cap on ip:port pairs tlsx scans. Default 2000.
tlsxProbeJarmtrue / falsefalsesettableCompute JARM + JA3 fingerprints (~10 extra handshakes per target, loud). Default false. In stealth mode this is forced to false.
tlsxRetries0–10 count1settableHow many times tlsx retries a failed request before giving up on it.
tlsxRevPtrSnitrue / falsefalsesettableReverse-PTR to derive an SNI for bare IPs (extra DNS lookups). Default false.
tlsxRunTimeout1–86400 seconds900settableHow long tlsx may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
tlsxScanModefree_textautosettableTLS stack: ctls|ztls|openssl|auto. Default auto.
tlsxTimeout1–60 seconds5settableHow long tlsx may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
tlsxVersionEnumtrue / falsefalsesettableEnumerate every supported TLS version (extra connections per target). Default false. In stealth mode this is forced to false.

TruffleHog

standalone · passive traffic

FieldAcceptsDefaultMCPMeaning
trufflehogAllowVerificationOverlaptrue / falsefalsesettableWhether several detectors may verify the same candidate, which costs requests but catches more.
trufflehogArchiveMaxDepth0–50 depth0settableHow many nested archives are extracted before the scan stops descending.
trufflehogArchiveMaxSizefree_text(empty)settableThe largest archive extracted, in bytes. A larger one is skipped rather than exhausting the container.
trufflehogArchiveTimeoutfree_text(empty)settableSeconds one archive extraction may take before it is abandoned.
trufflehogConcurrency1–500 threads8settableHow many sources trufflehog scans at once.
trufflehogDetectorTimeoutfree_text(empty)settableSeconds one detector may spend verifying a candidate before it is abandoned.
trufflehogDropUnverifiedJwttrue / falsefalsesettableDiscards JWTs that could not be verified, which are the bulk of the false positives in this class.
trufflehogEnabledtrue / falsefalsesettableWhether trufflehog runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
trufflehogExcludeDetectorsfree_text(empty)settableDetectors that never run, whatever the include list says.
trufflehogFilterEntropyfree_text(empty)settableThe Shannon entropy below which a candidate string is discarded before detection runs.
trufflehogForceSkipArchivestrue / falsefalsesettableSkips archives entirely rather than extracting them, which is faster and misses anything inside.
trufflehogForceSkipBinariestrue / falsefalsesettableSkips binary files rather than scanning them for embedded strings.
trufflehogIncludeDetectorsfree_text(empty)settableRestricts the run to these detectors. Empty means every detector runs.
trufflehogMaxDecodeDepth0–50 depth5settableHow many nested encodings are unwrapped before giving up on a candidate.
trufflehogNoVerificationtrue / falsefalsesettableSkip live verification entirely. When set, every finding lands unverified (never checked), which is NOT the same as "not live".
trufflehogResultTypesfree_textverified,unverified,unknownsettableWhich result statuses to report: a comma-separated subset of verified,unverified,unknown,filtered_unverified. Replaces the old trufflehogOnlyVerified boolean, which combined with trufflehogNoVerification asked TruffleHog to report only verified results while forbidding it to verify — zero findings, no error.

uncover

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
uncoverDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestprojectdiscovery/uncover:latestsettableThe container image spawned for uncover. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
uncoverEnabledtrue / falsefalsesettableWhether uncover runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
uncoverMaxResults1–50000 count50000settableThe most results uncover accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here. An empty value is replaced by the default rather than honoured.

urlscan.io

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
urlscanEnabledtrue / falsetruesettableWhether urlscan runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
urlscanMaxResults1–50000 count50000settableThe most results urlscan accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here. In stealth mode this is lowered to at most 100; a quieter value is kept.

Vhost / SNI enumeration

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
vhostSniBaselineSizeTolerance0–10000 bytes50settableBody size deltas within this many bytes are not flagged (suppresses Set-Cookie / timestamp jitter). Default 50.
vhostSniConcurrency1–100 threads20settableHow many Vhost / SNI enumeration operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
vhostSniCustomWordlistproject_file(empty)settableOptional newline-separated custom prefixes/hostnames (per-project file/text). Bare prefixes expand as {prefix}.{target_apex}; full hostnames are used as-is. Default "".
vhostSniEnabledtrue / falsefalsesettableWhether Vhost / SNI enumeration runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
vhostSniInjectDiscoveredtrue / falsetruesettableWhen a hidden vhost is confirmed, create a BaseURL node so a follow-up partial recon (Katana, Nuclei) can scan it. Default true.
vhostSniMaxCandidatesPerIp10–50000 count2000settableHard cap on candidates per IP to bound run time. Default 2000.
vhostSniTestL4true / falsetruesettableRun the TLS SNI trick via curl --resolve (catches modern reverse proxies, k8s ingress, Cloudflare). Default true.
vhostSniTestL7true / falsetruesettableRun the HTTP Host header trick (catches classic Apache/Nginx vhosts). Default true.
vhostSniTimeout1–30 seconds3settableHow long Vhost / SNI enumeration may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
vhostSniUseDefaultWordlisttrue / falsetruesettableUse the bundled vhost-common.txt wordlist (~2,300 admin/dev/staging/internal/modern-stack prefixes, expanded as {prefix}.{target_apex}). Default true.
vhostSniUseGraphCandidatestrue / falsetruesettablePull hostnames from existing Subdomain, ExternalDomain, TLS SAN list, CNAME targets and reverse-DNS PTR records resolving to each target IP. Highest signal source. Default true.

VirusTotal

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
virusTotalEnabledtrue / falsefalsesettableWhether virustotal runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
virusTotalWorkers1–10 threads3settableHow many virustotal operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.

WAF detection

phase http_probe · sends no traffic

FieldAcceptsDefaultMCPMeaning
wafAiClassifiertrue / falsefalsesettableUse AI to classify WAF/CDN presence from response headers/body/latency when the static check misses (requires aiInPipeline=true). Augments _has_cdn_markers and check_waf_bypass; AI-detected bypasses are tagged detection_method=ai_classifier. Default false.

Wappalyzer

phase http_probe · active traffic at the target

FieldAcceptsDefaultMCPMeaning
wappalyzerAutoUpdatetrue / falsetruesettableWappalyzer package version for tech database
wappalyzerCacheTtlHours1–8760 count24settableHow long to cache tech database (0 = always fresh)
wappalyzerEnabledtrue / falsetruesettableWhether wappalyzer runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
wappalyzerMinConfidence0–100 percent50settableThe confidence percentage below which a Wappalyzer technology match is discarded.
wappalyzerNpmVersionfree_text6.10.56settableThe npm version of Wappalyzer the scan container installs at run time. It is fetched from the public registry during the scan, so it decides what code runs inside the container.
wappalyzerRequireHtmltrue / falsetruesettableWhether a technology match requires an HTML response, which suppresses matches on JSON and binary endpoints.

Web cache poisoning

standalone · active traffic at the target

FieldAcceptsDefaultMCPMeaning
webCachePoisonAllowCpdostrue / falsefalsesettableCache-poisoned DoS tests (oversized/meta-char). Only honored in research profile. Default false. In stealth mode this is forced to false.
webCachePoisonAllowDeceptiontrue / falsetruesettableWeb cache deception (path-confusion .css tricks). Default true.
webCachePoisonAllowFrameworkPackstrue / falsetruesettableFire Next.js/Nuxt/Remix-specific vectors only when the tech fingerprint matches. Default true.
webCachePoisonBehavioralDelay1–10 seconds1.1settableSeconds to wait between the two frozen-Date probes. Larger = more reliable on slow origins, but adds latency per silent URL. Default 1.1.
webCachePoisonBehavioralOracletrue / falsetruesettableDetect silent caches (no cache-status headers, common with default Varnish/nginx or hardened CDNs) via a frozen-Date probe: fetch twice across a short delay; a frozen Date header + identical body implies a cache. Catches caches header detection alone would miss. Default true.
webCachePoisonCacheBusterParamfree_textrdmncbsettableQuery param name used to isolate every test into its own cache slot. Default "rdmncb".
webCachePoisonCacheHeaderfree_text(empty)settableOverride the cache hit/miss header if the target uses a non-standard one. Default "".
webCachePoisonConcurrency1–50 threads10settableHow many Web cache poisoning operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
webCachePoisonConfirmWorkers1–16 threads6settableHow many Web cache poisoning operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
webCachePoisonCrossVantagetrue / falsefalsesettableRe-confirm from a second network vantage (requires extra egress infra). Default false.
webCachePoisonDifferentialtrue / falsetruesettableNon-reflective detection. Beyond looking for a benign canary echoed back, also flag a poison that changes the response behaviour (a persisted status code / Location redirect / body) with no echoed marker, guarded against false positives by requiring the affected response dimension to be stable across two clean baselines. Catches CPDoS-style status flips, scheme/redirect poisoning, and cache-key confusion. Adds one extra baseline request per vector. Default true.
webCachePoisonDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestredamon-wcvs:latestsettableThe container image spawned for Web cache poisoning. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
webCachePoisonEnabledtrue / falsefalsesettableWhether Web cache poisoning runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
webCachePoisonMaxRpsPerHost0–1000 rps0settableRequests per second the web-cache-poisoning scan sends to any ONE host. ZERO MEANS UNLIMITED, so 0 is the most aggressive value available and not the safest. Under an engagement ceiling a 0 here is rewritten to the ceiling at scan start. 0 means UNLIMITED here, so it is the fastest value and not the safest. Capped to the engagement rate ceiling at scan start.
webCachePoisonMinConfidence0–1 ratio0.8settableOnly findings scoring at or above this (0-1) become Vulnerability nodes. 0.8 keeps Confirmed + Strong. Default 0.8.
webCachePoisonScanProfilefree_textsafe-confirmsettable"safe-confirm" (production, benign canaries, always isolated), "extended" (owned test targets), or "research" (lab only, enables CPDoS if allowed). Default "safe-confirm".
webCachePoisonTimeout1–86400 seconds1800settableHow long Web cache poisoning may spend before it is abandoned, in seconds. A run that hits it contributes whatever it found so far rather than failing the scan.
webCachePoisonTimeoutPerReq1–86400 seconds10settableNative confirmation per-request timeout in seconds. Default 10.
webCachePoisonVerifySsltrue / falsetruesettableVerify TLS certificates during native confirmation. Default true.

WHOIS

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
whoisEnabledtrue / falsetruesettableWhether whois runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
whoisMaxRetries1–20 count6settableHow many times whois retries a failed request before giving up on it.

ZAP Ajax Spider

phase resource_enum · active traffic at the target

FieldAcceptsDefaultMCPMeaning
zapAjaxSpiderBrowserIdfree_textfirefox-headlesssettableZAP browser id, such as "firefox-headless"
zapAjaxSpiderClickDefaultElemstrue / falsetruesettableClick default clickable elements
zapAjaxSpiderClickElemsOncetrue / falsetruesettableClick each element only once
zapAjaxSpiderCustomHeadershttp_header(empty)settableHeader/cookie lines for authenticated crawling
zapAjaxSpiderDockerImagecaffix/amass:latest, dolevf/graphql-cop:1.14, frost19k/puredns:latest, ghcr.io/zaproxy/zaproxy:stable, jauderho/hakrawler:latest, projectdiscovery/httpx:latest, projectdiscovery/katana:latest, projectdiscovery/naabu:latest, projectdiscovery/nuclei:latest, projectdiscovery/subfinder:latest, projectdiscovery/tlsx:latest, projectdiscovery/uncover:latest, redamon-baddns:latest, redamon-wcvs:latest, sxcurity/gau:latestghcr.io/zaproxy/zaproxy:stablesettableThe container image spawned for zap. Any value outside the shipped allowlist is silently pinned back to the default at scan start, with a [guardrail] line recording it, so the field is open and the runtime is the control.
zapAjaxSpiderEnabledtrue / falsefalsesettableWhether zap runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op. In stealth mode this is forced to false.
zapAjaxSpiderEventWait0–3600000 milliseconds1000settableHow long the Ajax Spider waits after firing a DOM event, in MILLISECONDS. Too low and a single-page app has not rendered its new state before the crawler reads it.
zapAjaxSpiderExcludePatternsfree_text(empty)settableRegex patterns to exclude from Ajax crawling
zapAjaxSpiderLogoutAvoidancetrue / falsetruesettableAvoid actions likely to log out
zapAjaxSpiderMaxCrawlDepth1–50 depth5settableMax crawl depth per seed
zapAjaxSpiderMaxCrawlStates0–100000 count0settableMax crawl states, or 0 for unlimited
zapAjaxSpiderMaxDuration1–1440 minutes10settableHow long the ZAP Ajax Spider may crawl one seed, in MINUTES rather than seconds.
zapAjaxSpiderMaxUrls1–100000 count1000settableThe most results zap accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
zapAjaxSpiderNumberOfBrowsers1–10 threads1settableBrowser instances used by Ajax Spider
zapAjaxSpiderParallelism1–10 threads3settableHow many zap operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here.
zapAjaxSpiderRandomInputstrue / falsefalsesettableFill inputs with random values
zapAjaxSpiderReloadWait0–3600000 milliseconds1000settableHow long the Ajax Spider waits after a page reload, in MILLISECONDS.
zapAjaxSpiderScopeCheckfree_textStrictsettableAjax Spider scope check mode
zapAjaxSpiderSeedModefree_textbase_urlssettable"base_urls" or "base_urls_and_endpoints" seed selection

ZoomEye

phase domain_discovery · passive traffic

FieldAcceptsDefaultMCPMeaning
zoomEyeEnabledtrue / falsefalsesettableWhether ZoomEye runs. Configuration is two levels: this flag decides whether the tool runs INSIDE its phase, and scanModules decides whether the phase runs at all. Setting one without the other is a silent no-op.
zoomEyeMaxResults1–10000 count1000settableThe most results ZoomEye accumulates in one pass. The memory governor budgets it against available RAM, so the effective value can be below what is written here.
zoomEyeWorkers1–20 threads5settableHow many ZoomEye operations run at once. The memory governor scales it down when the host is short of RAM, so the effective value can be below what is written here. In stealth mode this is forced to 1.