Reports
Read scores, findings, boundary evidence, secrets-in-context results, and tool traces from agent and prompt scan reports.
Runtime and endpoint scans return an agent report with the scan result. Prompt scans have their own report shape, retrieved through the reports namespace.
Agent reports
const { report } = await zeroleaks.runtimeScans.run(target);
// or: const { report } = await zeroleaks.endpointScans.get(scanId);
console.log(report.overallScore); // 0-100, higher is safer
console.log(report.overallVulnerability); // "critical" | "high" | "medium" | "low" | "secure"
console.log(report.components);
console.log(report.recommendations);| Field | Contents |
|---|---|
overallScore, overallVulnerability | Combined score and rating |
components | promptSecurity, toolSafety, multiTurnResilience, and dataLeakage, each with score, vulnerability, findingsCount, and findings |
attacksRun | Probes sent across all tracks |
summary, recommendations | Plain-text summary and up to 10 recommendations |
conversationLog | Every probe and response, tagged by phase |
toolTrace | Runtime scans only: observed tool arguments, results, errors, provider execution state, the attack prompt, and the isolated session |
boundaryAssurance | Invariants, verification cases, attack quality, strategy, defense fingerprint, and the secrets-in-context summary (below) |
containment | payloadRewrites and sanitizedPayloads: how many outbound payloads containment rewrote |
target | Runtime scans only: the target definition, with credential-shaped values scrubbed |
createdAt | Epoch milliseconds |
ZeroLeaks scrubs a report before storing it. In findings, conversationLog, recommendations, and boundaryAssurance, credential-shaped strings are replaced with a marker such as [redacted provider_api_key], and your planted canary with [planted canary]. Runtime toolTrace entries get the same credential scrub.
promptSecurity contains secrets-in-context and injection findings. Tool hijacking, indirect injection, authority and protocol exploits, and boundary violations appear in toolSafety. Each finding (AgentFinding) includes the technique, severity, evidence, attack prompt, and agent response. Secrets-in-context findings add leakClass and evidenceStrength. An evidenceStrength of deterministic_effect or observed_tool_call means ZeroLeaks observed the effect or tool call. The indicator and semantic values describe evidence based on the response text.
Boundary assurance
report.boundaryAssurance explains what the scan tested and why:
invariants: the rules derived from the target profile. Each has anid,title,dimension(such as authorization, data access, or tool use),protectedAsset, the allowed and forbidden behavior, anapprovalRequirement, the relevant tools, and a severity.verificationCases: each boundary probe with its turns, the expected safe behavior, whether itviolatedthe invariant, the evidence, andevidenceStrength,confidence, andjudgeVoteswhere available.initialProbes,mutatedProbes,multiAgentProbes,artifactProbes,violations,promotedProbes: counts for the boundary track. Promotion into the reusable probe library stays inside your account.attackQuality: success rate, deterministic evidence rate, queries to first success, longest campaign, novelty, andcoveragewith the attack surfacesrequested,exercised, andunsupported(with a reason).limitationslists anything that reduced coverage.longHorizonCampaigns: multi-turn campaigns against a single invariant, withturnsUsed,budget, and astatusofin_progress,crossed, orexhausted.campaignStatesholds the full state of each one, transcript included.strategy: the phase plan (reconnaissance,escalation,persistence) that ordered the probe groups, with per-phase budgets and when a stalled conversation is reset.fingerprint: the defenses observed during the scan: refusal style, output-filter signals, whether tool gating held, refusal rate, and sample size. The next scan of the same target in your account starts from this fingerprint.priorFingerprintis the one this scan started from, when there was one.secretsInContext: probes run, leaks by class, what reconnaissance observed, and whether a planted canary was configured. See secrets in context.
Older reports may lack some fields. The types mark those fields optional; check that they exist before reading them. @zeroleaks/sdk 0.3.0 or later types all of boundaryAssurance as BoundaryAssurance, with SecretsInContextSummary, DefenseFingerprint, and CampaignState for its parts.
Remediation
Recommendations and findings describe what to change. A scan does not apply a fix or rerun exploits against the fixed agent. Scan again after you change the agent, and the same attacks run against the new version.
Prompt scan reports
const report = await zeroleaks.reports.getByScan(scanId);
const byId = await zeroleaks.reports.get(reportId);
const page = await zeroleaks.reports.list({ limit: 20 });reports only covers prompt scans (the retired hosted prompt-scan flow). A prompt scan report can include:
- Leakage and injection scores
- Severity-ranked findings
- Attack-family statistics
- Tool logs and exposed canaries
- Kill-chain detections
- Remediation guidance
- Knowledge and corpus version metadata
- A truncation notice when verbose evidence exceeds storage limits
- Runtime tool-call and tool-result traces
- Target provider, model, tool schemas, and adapter metadata
Treat report evidence as sensitive security data. Avoid logging complete reports or exposing them to unauthenticated clients.