pub struct RunConfig {Show 20 fields
pub replay_stable_check: bool,
pub allow_state_changing_live_probes: bool,
pub browser_checks_enabled: bool,
pub exploit_mode_enabled: bool,
pub exploit_dry_run: bool,
pub business_logic_templates_enabled: bool,
pub research_mode_enabled: bool,
pub unsafe_attack_agent_enabled: bool,
pub business_logic_template_ids: Vec<String>,
pub exploit_request_cap: Option<u32>,
pub exploit_requests_per_second: Option<u32>,
pub exploit_reset_after_state_changing: bool,
pub enable_zap_baseline: bool,
pub enable_nuclei: bool,
pub enable_trivy: bool,
pub enable_osv_scanner: bool,
pub enable_secret_scanning: bool,
pub enable_katana: bool,
pub enable_httpx: bool,
pub enable_aggressive_sqlmap: bool,
}Expand description
[run] section: verifier knobs.
Fields§
§replay_stable_check: boolWhen true, the deterministic payload runner re-executes each
(vuln, benign) pair a second time and stamps replay_stable on
the resulting VerifyResult. Adds ~2× cost per verify; default
is false so the verifier stays fast on the happy path.
allow_state_changing_live_probes: boolAllow live verification plans to send methods that are likely to
mutate target state (POST, PUT, PATCH, DELETE). Defaults
to false so Nyx Agent only runs safe probes unless the operator
explicitly opts in for their local app.
browser_checks_enabled: boolOpt in to browser-driven checks when a local Playwright runtime is available. When false, browser plans are recorded as skipped with an explicit reason.
exploit_mode_enabled: boolMaster opt-in for exploit mode. Defaults to false; when false,
live verification stays non-destructive even if an older config
sets allow_state_changing_live_probes = true.
exploit_dry_run: boolEvaluate guarded live probes and write audit records without sending HTTP/browser traffic. Static analysis and source-only scanners still run normally.
business_logic_templates_enabled: boolGenerate first-class business-logic pentest candidates from the route/auth model. The generated plans still pass through the normal live-verifier safety gates.
research_mode_enabled: boolEnable deeper authorized product-logic research. This adds invariant-focused candidate hypotheses and gives AI planning / exploration a broader product-logic brief. It does not relax live execution safety gates.
unsafe_attack_agent_enabled: boolEnable the pre-MVP unsafe local attack-agent phase. Once this final phase is invoked it does not route actions through the guarded live-verifier policy; it relies on the configured local development environment and CLI-backed sandbox boundary.
business_logic_template_ids: Vec<String>Optional allowlist of business-logic template ids. Empty means every registered template is considered.
exploit_request_cap: Option<u32>Per-candidate cap on guarded live HTTP/browser actions. None
falls back to RunConfig::DEFAULT_EXPLOIT_REQUEST_CAP; a
configured 0 is floored to 1.
exploit_requests_per_second: Option<u32>Per-candidate rate limit for guarded live requests/actions.
None falls back to
RunConfig::DEFAULT_EXPLOIT_REQUESTS_PER_SECOND; 0 floors
to 1.
exploit_reset_after_state_changing: boolAfter an allowed state-changing probe, ask the environment orchestration layer to reset/rollback when it supports that operation. Defaults true so opt-in exploit runs clean up after themselves when docker-compose orchestration is available.
enable_zap_baseline: boolOptional passive ZAP baseline orchestration. Enabled by default, but the binary is only used when present on PATH; findings become candidates.
enable_nuclei: boolOptional Nuclei orchestration. Enabled by default, but the binary is only used when present on PATH; findings become candidates.
enable_trivy: boolOptional Trivy repository/filesystem scan. Enabled by default, but the binary is only used when present on PATH; findings become source-context candidates for AI exploration.
enable_osv_scanner: boolOptional OSV-Scanner dependency scan. Enabled by default, but the binary is only used when present on PATH; findings become source-context candidates for AI exploration.
enable_secret_scanning: boolOptional secret scanning. Enabled by default; Nyx Agent prefers
gitleaks when present and falls back to detect-secrets.
enable_katana: boolOptional Katana crawler orchestration. Enabled by default, but the binary is only used when present on PATH; sensitive routes become live-test candidates.
enable_httpx: boolOptional ProjectDiscovery httpx probe orchestration. Enabled by default, but the binary is only used when present on PATH; interesting live metadata becomes candidates.
enable_aggressive_sqlmap: boolAggressive external tooling is off unless this explicit gate is true. Nyx Agent does not run sqlmap by default.
Implementations§
Source§impl RunConfig
impl RunConfig
Sourcepub const DEFAULT_EXPLOIT_REQUEST_CAP: u32 = 10
pub const DEFAULT_EXPLOIT_REQUEST_CAP: u32 = 10
Default request/action cap for one candidate live-verification attempt. This keeps malformed or model-generated workflows from fanning out indefinitely.
Sourcepub const DEFAULT_EXPLOIT_REQUESTS_PER_SECOND: u32 = 5
pub const DEFAULT_EXPLOIT_REQUESTS_PER_SECOND: u32 = 5
Default per-candidate live request/action rate. Optional scanners have their own CLI-level throttles; this cap covers the built-in verifier.
pub fn exploit_request_cap_resolved(&self) -> u32
pub fn exploit_requests_per_second_resolved(&self) -> u32
pub fn state_changing_live_probes_allowed(&self) -> bool
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RunConfig
impl<'de> Deserialize<'de> for RunConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for RunConfig
impl StructuralPartialEq for RunConfig
Auto Trait Implementations§
impl Freeze for RunConfig
impl RefUnwindSafe for RunConfig
impl Send for RunConfig
impl Sync for RunConfig
impl Unpin for RunConfig
impl UnsafeUnpin for RunConfig
impl UnwindSafe for RunConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more