INNER CODE UNIT · Python
_start_campaign_run
0xSteph/pentest-ai · cli/main.py:1401
def _start_campaign_run(
targets: list[str], scope: str, intensity: str, ci: bool,
*, scope_allow: list[str] | None = None, scope_exclude: list[str] | None = None,
scope_file: str | None = None, strict_scope: bool = False,
) -> None:
"""Create a campaign with one engagement per target. Does not auto-run scans.
Persists the confirmed scope_json (and strict_scope) on every engagement so
resume / retest / live rebuild the exact scope the operator confirmed at
campaign start, rather than a possibly-broader scope from config (Bugbot #60).
Each engagement is bounded to ITS OWN target host plus only the explicit
--scope-allow / --scope-file / config extras (wildcards, CIDRs, allows) and
the exclusions — never the sibling targets. The per-target enforcer is seeded
from the single target string, so no normalization mismatch can leak one
engagement's host into another's scope_json (Bugbot: campaign scope leak)."""
import asyncio