Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions agentic_security/probe_actor/fuzzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ async def perform_single_shot_scan(

yield ScanResult.status_msg("Scan completed.")
fuzzer_state.export_failures("failures.csv")
fuzzer_state.export_full_log("full_scan_log.csv")


async def perform_many_shot_scan(
Expand Down Expand Up @@ -558,6 +559,7 @@ async def perform_many_shot_scan(

yield ScanResult.status_msg("Scan completed.")
fuzzer_state.export_failures("failures.csv")
fuzzer_state.export_full_log("full_scan_log.csv")


def scan_router(
Expand Down
42 changes: 42 additions & 0 deletions agentic_security/probe_actor/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,45 @@ def export_failures(self, filename: str = "failures.csv"):
failure_data, columns=["module", "prompt", "status_code", "content"]
)
df.to_csv(filename, index=False)

def export_full_log(self, filename: str = "full_scan_log.csv"):
"""Export a complete log of all events (errors, refusals, and successful outputs)"""
log_data = []

# Add errors
for module_name, prompt, status_code, error_msg in self.errors:
log_data.append({
"event_type": "error",
"module": module_name,
"prompt": prompt,
"status_code": status_code,
"content": error_msg,
"refused": None,
})

# Add refusals
for module_name, prompt, status_code, response_text in self.refusals:
log_data.append({
"event_type": "refusal",
"module": module_name,
"prompt": prompt,
"status_code": status_code,
"content": response_text,
"refused": True,
})

# Add all outputs (including successful ones)
for module_name, prompt, response_text, refused in self.outputs:
# Skip if already logged as refusal to avoid duplicates
if not refused:
log_data.append({
"event_type": "success",
"module": module_name,
"prompt": prompt,
"status_code": 200,
"content": response_text,
"refused": False,
})

df = pd.DataFrame(log_data)
df.to_csv(filename, index=False)
Loading