Skip to main content

Daily environment report

Available in CLI 5.0.0, backed by SDK 0.26.0. The exported report model is schema 2.

:::danger Legacy scan-logs is broken and under refactor

ScanLogsClient and airs runtime scan-logs query are not reliable historical retrieval paths. Empty HTTP 200 responses are not evidence of zero activity. CLI 5.0.0 disables that command with an explicit exit-1 migration message. This report now uses the verified SCM session workflow; it does not call the broken route.

:::

airs runtime report retrieves AI Runtime Security activity and configuration through the SDK and produces a deliverable for a human review. It does not submit scans, change profiles, rotate keys, or modify your credential file.

# Self-contained HTML in your current working directory (default)
airs runtime report

# Markdown in your current working directory
airs runtime report --output markdown

# Choose a new destination and a title
airs runtime report --title "Production daily review" --output-file ./production-daily.html

# Explicitly stream the deliverable for a pipeline
airs runtime report --output markdown --output-file - > daily.md

# Generate the report, but return exit 1 if any evidence source is incomplete
airs runtime report --strict --max-pages 20

Default files are named airs-runtime-report-<UTC timestamp>-<unique suffix>.html or .md. The destination is the directory you run the command from, not ~/.prisma-airs/. Use --output-file - for stdout; progress goes to stderr and --quiet suppresses progress. Existing files and symlinks are never overwritten. File output is atomically published with mode 0600; an explicitly named parent directory must already exist. Redirection with > uses your shell's own overwrite and permission rules instead.

The HTML includes all CSS and JavaScript inline. There are no CDNs, fonts to download, browser API calls, or external assets. Open it directly from disk, search application buckets, filter findings by priority, or use Print / save PDF. Printing includes all rows, even ones hidden by filters. The full report remains readable with JavaScript disabled.

Example deliverables

These download samples are synthetic fixtures, not customer data:

The sample has 1,300 application-bucket sessions and 51 violating sessions, plus an explicit configuration review findings. Session inventory, chart measurements and detector events are displayed separately, not forced into application-bucket totals.

What the report tells you

SectionEvidence and interpretation
At a glanceAPI-reported sessions, violating sessions, a defensible violation rate, and source completeness
What needs attentionObserved violating sessions and scan failures; explicit inactive profiles, allow-on-timeout settings, disabled storage masking; collection gaps
Daily application activityRolling one-day application buckets, ranked by violating sessions
Current security profilesLatest returned revision by name, active state, timeout action, storage masking, modification timestamp
Registered application inventoryCurrent names, environment, cloud, model, and counts of key associations—not key values
Collected session observationsStatus counts from timestamp-eligible session inventory entries; no scan text
Daily session chartIndependently measured sessions, violating sessions, and detector violations by time bucket
Top applications by detector violationsAPI-ranked subset with detector counts; not a complete inventory
Daily detector severity trendCritical/high/medium/low detector events from the one-day trend endpoint
Evidence and collection coverageSDK method, window, page count, record count, and complete/partial/unavailable status for every source

Findings are review guidance, not an invented numeric health score. A violating session is not proof of a successful attack or of successful blocking. Inactive profiles and allow-on-timeout settings may be deliberate. Missing policy settings remain Unknown, never silently “disabled.”

Authentication and safety

Only Management API credentials are required: PANW_MGMT_CLIENT_ID, PANW_MGMT_CLIENT_SECRET, and PANW_MGMT_TSG_ID, or mgmtClientId, mgmtClientSecret, and mgmtTsgId in the existing ~/.prisma-airs/config.json. Normal environment-over-file precedence applies. The config is read, not written; it can remain on a read-only mount. Endpoint overrides use the normal Management API configuration. mgmtDashboardEndpoint / PANW_MGMT_DASHBOARD_ENDPOINT defaults to https://api.apps.paloaltonetworks.com/aisec, independently of mgmtEndpoint for profiles and registered applications. Scanner API keys are not needed.

The report projects only approved fields. It omits raw API responses, prompts, responses, user identities/IP addresses, API keys, auth codes, tenant IDs, and raw exception text. Strings are escaped for HTML/Markdown, and HTML uses a restrictive content-security policy with hash-pinned inline scripts and styles. Names and configuration metadata can still be confidential. Review the artifact before distributing it. Debug logging (--debug or enabled PANW_AI_SEC_DEBUG) is refused for this command so traffic content is not persisted alongside a shareable report. Session transaction and stored-content APIs are never fetched by this report.

Windows, limits, and incomplete evidence

The default is a rolling last 24 hours, not “yesterday at midnight.” The report displays an anchored UTC start/end and collection timestamps. The application API evaluates a relative one-day window separately on each request, so pages can drift during collection and telemetry can arrive late. Historical date selection and previous-day comparisons are not claimed.

The collector uses seven independent sources: application overview, profiles, registered applications, session inventory, session chart, top application violations, and severity trend. It requests 25 sessions per page and 100 records per page for application/configuration inventories, with a default 40-page budget per source. --max-pages accepts 1–100. It stops repeated/non-advancing pagination, deduplicates identities, and preserves earlier pages when a later request fails. A full page without pagination metadata is followed by another page to avoid silent truncation. The SDK enforces request deadlines (PANW_AI_SEC_TIMEOUT_MS, default 60,000 milliseconds); automatic retries are disabled for this bounded report collection.

The application's daily session data is kept separate from session inventory and current configuration. Session inventory uses 1 day; only entries with usable last_session_activity timestamps inside the anchored half-open interval [start, end) contribute to its summary. Session pagination also checks stable totals, exact offsets, early empty pages and overlapping composite identities. No tenant-wide totals are inferred from a capped collection. Missing or inconsistent counters suppress the affected rate/total.

The SDK's per-application consumption and detector/severity breakdown endpoints require 7/30/60-day windows; their figures are not presented as daily metrics. The new one-day session chart and detector trend are independent sources. Their counters are retained, and chart/inventory disagreements are flagged for review without inventing a cause or correcting the data. Application overview buckets are not used to reconstruct their top-level totals. Configuration snapshots are not configuration-change audit logs, and this report is not an availability SLA or compliance attestation.

ExitMeaning
0Deliverable generated, possibly with clearly disclosed partial/unavailable sources or findings
1Generation failed, every source was unavailable, or --strict found an incomplete source; inspect any generated artifact
2Invalid options, unsupported output format, or debug logging requested

General terminal output preferences (such as PANW_CLI_OUTPUT=json) do not change the default HTML deliverable. Explicit global --output is honored if it is html or markdown; an explicit command-local --output wins.

Validated live output

Latest installed verification — CLI 5.0.1 / SDK 0.26.0, 2026-09-07 at 19:32 UTC: the complete live suite passed 8/8 against the published package installed as airs. All seven sources were complete: 6 application buckets, 19 profiles, 17 registered applications, 822 sessions across 33 pages, 10 chart buckets, 3 ranked applications, and 10 severity-trend buckets. Application activity reported 822 sessions / 79 violating. The endpoint workflow completed 15 checks, including rejected week and successful seven-day YAML retrieval. HTML/Markdown, default CWD delivery, strict completeness status, no-clobber protection, and private body-free session debug checks passed. Credential bytes were unchanged. These figures are dated observations, not fixed expected totals.

One earlier 5.0.1 packed-candidate attempt passed 7/8 and failed during full session pagination; the failure's cause was not established. A traced rerun returned 822 unique sessions across 33 stable HTTP-200 pages, and the unchanged full candidate suite then passed 8/8 before publication. The failed capture remains in the release assessment; it is not relabeled as successful. Broader generic-error diagnostics remain a separate known issue.

CLI 5.0.0 / SDK 0.26.0 candidate, 2026-09-07 at 17:39 UTC: all seven read-only report workflow tests pass. Every source is complete: 6 daily application buckets, 19 profiles, 17 registered applications, 677 session entries across 28 pages, 10 session-chart buckets, 3 ranked applications, and 10 severity-trend buckets. Application activity reports 677 sessions and 81 violating sessions. These are timestamped observations, not constants or a guarantee that separately fetched counters always agree.

Validation covers direct SDK collection; built CLI HTML/Markdown; strict completeness status; atomic no-clobber files; default CWD deliverables; the replacement session debug command (HTTP 200, body-free private log in CWD); and credential/raw-field exclusion. The credential file's hash is unchanged. Private live artifacts are not included in these downloads.

:::warning Earlier CLI 5.0.0 authentication failures

At 18:15 UTC, the complete eight-test live suite was rerun through the user's installed, published CLI 5.0.0 with registry SDK 0.26.0: 2 passed / 6 failed. Most fresh OAuth attempts timed out before returning HTTP. The strict-mode request did succeed, returning all seven sources complete and 709 session entries across 29 pages; no-clobber also passed. Authentication is therefore intermittent, not completely unavailable. The protected content check also could not run to completion because the earlier generation test did not produce its Markdown input. Independent credential scans still pass. Curl and published SDK 0.25.0 reproduced the same failure, while the dashboard API remained reachable with unauthenticated HTTP 401. The earlier successful tests are retained as dated evidence, not relabeled as a passing latest run. No credentials, DNS or tenant configuration were changed.

Publication itself is verified: registry and installed payloads match all seven package files and 23 exports; both pass eleven native checks. All remote CI jobs pass. The published site and both linked downloads pass nine browser checks. A separate unavailable-source check confirms a diagnostic report is written and strict mode exits 1; unknown activity is not zero.

:::

Migrating from CLI 4.5

CLI 5.0 is a major version because the exported RuntimeDailyReport changes from schema 1 to schema 2. Replace report.logs / ReportLogSummary with report.sessions / ReportSessionSummary; use report.dailyTelemetry for chart/ranking/severity evidence. Injected RuntimeReportClient implementations must provide the five dashboard reads in the new interface, plus profiles/customer-app inventory. HTML remains the default and Markdown, private CWD destinations, no-clobber behavior and strict completeness exits remain supported.

Historical CLI 4.5 validation

Read-only validation on 2026-09-07 at 15:19 UTC used the existing config without changing it, through both the published-registry installation and the user's installed CLI 4.5.0. Neither final run needed the host DNS bootstrap used during earlier investigations. The SDK collection returned 7 daily application buckets, 19 profiles, and 17 registered applications. Across the collected daily buckets it reported 705 sessions and 91 violating sessions. These are a point-in-time observation, not expected constants for a future run.

The scan-log endpoint returned an empty object rather than a record array. The report marked it unavailable, produced both deliverables, and returned exit 1 for the strict run. It did not convert that response into “zero threats.” All seven live workflow checks passed, including default CWD output and the debug-path regression. The 128-hour debug query reached the API and received HTTP 400, with its private log successfully written in CWD; API acceptance is not claimed. Real Chromium checks passed for offline rendering, filtering, printing, mobile layout, JavaScript-disabled reading, hostile metadata, live HTML opening, and zero external requests/browser errors. A ninth check verified the documentation guide and exact bytes of both linked example downloads. The HTML download uses .htm (standard HTML) to avoid the preview server's .html clean-URL redirect bug; CLI-generated report files still use .html.

The public samples above remain synthetic; the live environment artifacts stay private.