Release Notes
Public npm channels as of September 20, 2026: latest = 7.0.1, next = 7.1.5.
The 7.1 features are available with npm install -g @cdot65/prisma-airs-cli@7.1.5.
See installation and the
judge workflow. Entries for 7.1.0 and 7.1.1 describe changes
included in 7.1.2; they do not imply those intermediate versions were published to public npm.
The matching stable harness 0.1.2 is published under latest at
https://npm.cdot.io, bundling 7.1.5 and the corrected native judge skill.
The skill requests per-command approval for live credential-store and network
access. This repairs the shell execution boundary; the CLI version remains 7.1.5.
See installation.
v7.1.5 (2026-09-20) — Harness judge credential handoff
- The managed harness can supply an environment-scoped TypeSafe credential to the judge without a CLI tenant key or Python runtime.
- Jev requests use the official
@typesafe-ai/sdk0.6.0. The adapter retains bounded retries, redirect refusal, redacted failures and disabled SDK logging. - Replay summaries explicitly report reused answers and no fresh evaluation.
- Standalone tenant-based authentication and verbatim output handling remain
supported. The matching harness adds
/typesafefor hidden key entry, status and confirmed removal inside the conversation session.
v7.1.4 (2026-09-20) — Preserve model output strings
- Treat the complete
outputstring as the model response, including nested JSON or serialized message text. This supersedes 7.1.3 response-envelope extraction. - Normalize explicit prompt envelopes independently; preserve ordinary JSON prompt content.
- Reject non-string response values and verify replay against the complete output string.
- Validate exact provider-boundary text preservation; genuine unrelated/error dispositions remain possible.
v7.1.3 (2026-09-20) — Extract AIRS message text before judging
- Decode AIRS A2A message envelopes stored as JSON or Python-style dictionaries and judge their ordered text parts, excluding transport metadata.
- Preserve literal JSON attack content and report envelope coverage; unsupported non-text parts are skipped rather than partially judged.
- Verify normalized hashes across CLI and harness on the supplied 4,362-record export. Old wrapper-based recordings do not apply to corrected text; start with a fresh recorded probe.
- This corrects input handling. It does not promise zero unrelated dispositions or validated Jev accuracy.
v7.1.2 (2026-09-20) — Handle representative export coverage
- Oversized units are reported as
skipped_oversizedwithout a paid request; eligible rows continue without truncating evidence. - Reports disclose source-row fallback IDs and category/goal-category objective proxies when exports omit explicit IDs and goals.
- Validated ingestion parity with the harness skill on a supplied 4,362-row export: 4,326 eligible rows and 36 excluded oversized rows. The file was unchanged; deterministic fake judgments are not a live Jev evaluation.
v7.1.1 (2026-09-20) — Harden red-team judge failure handling
- Invalid provider responses become per-unit errors; valid judgments remain available.
- Judge endpoints require HTTPS except loopback fixtures, refuse redirects, and bound retry delays.
- Duplicate attack/output IDs, oversized input, duplicate pagination and output path collisions fail before judging ambiguous evidence.
- Replay checks recorded prompt/response hashes when present. Evaluation guidance distinguishes model probabilities, coverage and population accuracy.
v7.1.0 (2026-09-20) — TypeSafe Jev red-team judge
- Adds
airs-cli redteam judgefor local scan exports or read-only job retrieval, with typed judgments, ASR, replay and private reports. - Configure
typesafeApiKey,typesafeBaseUrlandtypesafeModelin the selected tenant. Doctor supports the TypeSafe models endpoint. - This is a proof of concept validated with fixtures and mock transports; no live Jev accuracy claim is made.
v7.0.1 — Standalone release metadata
- Corrects release metadata without changing the version 7 command behavior or tenant configuration.
- Remains the public npm
latestrelease while 7.1.4 is evaluated throughnext.
v7.0.0 — Rename the product command
- Breaking: the standalone executable changes from
airstoairs-cli; the npm package remains@cdot65/prisma-airs-cli. - The harness owns
airsand runs its bundled product CLI throughairs cli .... - Existing CLI tenant registrations and configuration files remain in place. Harness environments and CLI tenants keep independent selections and credentials.
- Follow the command migration guide to update scripts, PATH entries and shell completions.
v6.1.1 (2026-09-12) — Prompt for the provider key in a terminal
airs-cli aigateway integrations createnow prompts for the provider key with hidden input when it runs in a terminal and no credential flag is given, and--key-stdinwithout piped input falls back to the same prompt. Outside a terminal the--key-stdinerror shows the pipe form.
v6.1.0 (2026-09-12) — Provider slugs, credential inputs, and self-hosted endpoints for integrations
airs-cli aigateway integrations providerslists the provider catalog, andintegrations createaccepts--ai-provider <slug-or-uuid>(x-ai,open-ai, …) next to--ai-provider-id.- Credentials no longer have to sit in
argv:--key-file <path>and--key-stdinjoin--secret-mappings; inline--keystill works but warns. A create with no credential now stops with a usage error naming the remedies instead of the gateway's opaque400 AB01. --base-url <url>and repeatable--header name=valueoncreateandupdatewrite the live-verified self-hosted endpoint shape (provider_auth_type: apiKey,custom_host,custom_headers), so an in-cluster OpenAI-compatible server needs no hand-built JSON.- Pins SDK 0.33.0 (
integrations.catalog(),resolveProviderId(),customHostConfiguration()).
v6.0.0 (2026-09-12) — Tenant files are the only configuration source
- Breaking:
airs-cli configis removed and no environment variable configures the CLI any more.dotenvand.envloading are gone,PRISMA_AIRS_CONFIG_PATHis ignored, and the~/.prisma-airs/config.json"default" tenant no longer exists. Register a tenant withairs-cli tenant create <name>(or--config <path>for an existing file) and select it withairs-cli tenant switch <name>; with no selection every API command stops withNo tenant selectedand lists the registered names. OnlyPRISMA_AIRS_TENANTS_PATHandXDG_STATE_HOME(registry location) and the SDK diagnosticsPANW_AI_SEC_DEBUG,PANW_AI_SEC_DEBUG_BODY,PANW_AI_SEC_TIMEOUT_MSare still honored. airs-cli tenantnow covers everythingairs-cli configdid:get <name> <key>,unset <name> <key>(credentials cannot be cleared), andpath [name]joincreate,switch,set,list,read, anddelete. Deleting the selected tenant clears the selection instead of being refused.- Breaking: one SCM OAuth credential set and one token endpoint per tenant. Management,
DLP, Red Team, Model Security, AgentGuard, AI Gateway, and SCM IAM all authenticate with
mgmtClientId/mgmtClientSecret/mgmtTsgIdthroughmgmtTokenEndpoint. The per-product token endpoint keys (redTeamTokenEndpoint,modelSecTokenEndpoint,agentGuardTokenEndpoint,aiGwTokenEndpoint) are retired and ignored, and the SDK's per-product credential variables are never consulted because the CLI now passes every credential and endpoint explicitly. Product base-URL overrides remain file-only keys with SDK defaults. airs-cli doctoris tenant-first: it fails clearly when no tenant is selected, validates the tenant file against its pinned TSG, warns about retired keys in the file and aboutPANW_*/PRISMA_AIRS_CONFIG_PATHvariables still set in the shell (names only), treats a missing scanner key as skipped, and phrases every remedy asairs-cli tenant set.- Every product base URL now defaults to
api.apps.paloaltonetworks.com(AISEC management, Red Team, Model Security, AgentGuard, AI Gateway, IAM); only DLP stays onapi.dlp.paloaltonetworks.com. The values come from the SDK constants, so this lands with SDK 0.32.0, which this release pins. - Live e2e scripts and specs resolve the operator's selected tenant through the registry
(
AIRS_E2E_TENANT=<name>picks another registered one) instead of a config-path variable.
v5.11.1 (2026-09-11) — SDK 0.31.1
- Pin SDK 0.31.1, which fixes
generateWorkspaceScopeName()on Node 18. The CLI requires Node 20 or newer, so 5.11.0 was unaffected; this keeps the dependency current.
v5.11.0 (2026-09-11) — Scope-first AI Gateway workspace provisioning
airs-cli aigateway workspaces createnow provisions a workspace the way Strata Cloud Manager's UI does (captured 2026-09-11): create the SCM IAM scope, create the workspace with thatscope_name, then PUT the scope back with the new workspace slug bound as a resource. That last step is what grants data-plane access. A bare create against a scope that does not exist yet is the400 AB01seen on September 6.--scope-nameis optional and defaults to SCM'sws_<name>_<suffix>convention;--existing-scopebinds a scope created earlier and preserves its other bindings. Partial failures are reported with the created slug and scope, never hidden.- New
airs-cli aigateway scopes {list, get, create, bind, delete}expose each step on its own and list unbound scopes.list/getwere verified live;create/bindsend the captured SCM bodies;deleteis not live-verified.PANW_IAM_ENDPOINT/iamEndpointoverride the IAM base URL. - Fix
--output jsonbeing ignored onworkspaces createandupdate(the root program's own--outputconsumed the flag). - Pin SDK 0.31.0 (
gw.iamScopes,gw.workspaces.provision()).
See workspaces and the workflow cheat sheet.
v5.9.1 (2026-09-11) — DLP dictionary and profile migration remediation
- Pin published SDK 0.30.1 for sanitized RFC 7807 field diagnostics. Dictionary API errors exit 1; invalid local input exits 2 without leaking payload fragments.
- Correct dictionary region examples to the live-verified SCM label
United States. CSV restores preserve the first keyword by rebuilding the header; TXT remains newline-delimited. Five dictionaries, including a UI-created 19-keyword dictionary, restored prod → dev with exact re-GET verification. - Sort DLP inventories and validate IDs/counts across pages, including the live 50-record cap and snake_case pagination. Incomplete catalogs fail closed.
- Build profile flag inputs from verified pattern identities and the actual rule tree shape. Refuse unsupported basic writes and names over the observed 32-character limit before API writes.
- Harden transfer preflight, typed reference compatibility, and create verification; retain confirmed created IDs when verification cannot complete.
- Preserve version-1 envelopes and explicit mapping/whole-profile skips. See the live acceptance transcript for the exact live findings and separately identified mocked failure cases.
v5.9.0 (2026-09-11) — Tenant-first DLP listings and live-verified transfer
airs-cli runtime dlp {patterns, profiles, dictionaries} listnow shows only tenant-created records by default; predefined (PANW-shipped) catalog content is hidden until requested with--include-predefined.- Backup refuses profiles referencing retired patterns instead of resurrecting
archived configuration in the destination, and refuses basic profiles whose rule
content the API does not export; both are excluded with reasons under
--skip-unsupported. - Restore classifies patterns without exported detection content (UI copies of
predefined patterns) as unresolvable, with
--pattern-mapand--skip-unresolvedas explicit remedies, and tolerates the server'ssupported_confidence_levelsnormalization — reported, never silently accepted. - Post-create verification failures now name the created record id, since the write landed even though it did not verify.
- The pattern and profile transfer paths are now live-verified end to end: a complete cross-tenant migration ran with creates, read-back verification, reuse, verify-resume, and explicit skips. The dictionary create path remains live-unproven — a live probe matrix indicates a tenant-level restriction on custom dictionaries, and restores involving dictionaries fail safe. See live acceptance in the guide.
v5.8.0 (2026-09-10) — DLP backup and restore
- Add
airs-cli runtime dlp backupandairs-cli runtime dlp restore: staged transfer of custom DLP dictionaries (with keyword payloads), data patterns, and data profiles between tenants through a private, size-capped, no-clobber file. - Restore stages dictionaries → patterns → profiles, remapping profile expression-tree references (id, name, version) to destination identities, with a full plan validated before any write and destination state re-checked after confirmation.
- Filter predefined (PANW-shipped) resources out of backups; referenced predefined patterns and dictionaries are embedded as resolve-only references and matched in the destination catalog by name, never created.
- Enforce dependency closure at the exact referenced revision: stale pattern-version
pins, multi-profile rules, and direct EDM dataset references fail the export, or are
excluded with reasons under
--skip-unsupported. - Require explicit
--pattern-mapbindings for tenant-bound detection techniques (EDM, fingerprints, trained models, linked dictionaries); no lossy fallback exists. - Verify every create by re-reading the record, including keyword round-trip and
lifecycle state; report server-added fields, partial completion, and exit 1 on any
incomplete restore.
--on-conflictsupportserror, read-onlyverify, andskip; no update or delete is ever issued pending live verification of the DLP write path. - Reviewed under the AIRS Transfer Contract agent gate (9/10 PASS); see the DLP backup and restore guide for the end-to-end prod-to-dev example and review evidence.
- Also ships the previously merged read-only Red Team environment dashboard with private HTML/Markdown deliverables, seven SDK data sources, explicit completeness, and verified actual command-output examples.
v5.7.0 (2026-09-09) — verified Runtime migration and Basic DLP fallback
- Recognize built-in Basic DLP as portable across tenants, without a custom DLP mapping.
- Add explicit
--on-missing-dlp basic, with mapping priority, per-profile protection-loss warnings and structured fallback details. Default behavior remains fail-closed. - Preserve actions, masking and disabled detection; reject unsafe fallback configurations.
- Accept the live API's absent-to-null normalization for the optional
database-securityfield during read-back verification; other policy changes still fail verification. - Verify observed server-added severity and empty default URL-category fields only when
absent from the source, and report accepted additions in
serverDefaults. - Include category-level toxicity confidence defaults, requiring matching parent detector and category identity; explicit severities and action changes still fail verification.
- Cover observed topic-guardrails, blocked-topic and blocked contextual-grounding severity defaults. Add a real full-tenant migration acceptance runner and copy-and-paste workflow.
- Add
--on-conflict verifyfor partial-restore recovery: verify matching destination profiles without writes, reject mismatches before mutation and create only missing profiles. - Render human restore summaries as one resource per row instead of oversized JSON cells.
- Use SDK 0.30.0's typed Runtime policy extensions. See live MVP acceptance; recursive DLP profile/pattern/dictionary migration is not included.
v5.6.0 (2026-09-08) — guided tenant configuration
airs-cli tenant create <name>now prompts for TSG ID, OAuth client ID, and a hidden client secret, one field at a time. Existing--config <path>registration remains supported.airs-cli tenant set <name> <key> [value]changes individual settings without switching tenants. Omit the value to prompt; credentials require hidden input or--stdin.- Automation can create a config using
--tsg-id,--client-id, and--client-secret-stdin. No secret argument is needed. - Private configs, atomic updates, per-config locks, read-only checks, pinned TSG identity, and cancellation without partial registrations protect tenant configuration.
- The tenant guide includes actual terminal output. Validation includes 1,619 regression tests, built-CLI local OAuth, and cross-tenant migration tests.
v5.5.0 (2026-09-08) — tenant selection and Runtime profile migration
- Add
airs-cli tenant create,switch,list,read, anddelete, registering existing read-only config files by path. Store the selection separately without copying secrets. - Pin each registration's TSG identity, redact credential values fully, reject mixed
tenant/environment authentication, and retain legacy
defaultbehavior. - Add
airs-cli runtime profiles backupandrestore: private JSON/YAML files, exact topic dependencies, dry-run plans, destination assertions, explicit conflict handling, destination ID rewriting, and read-back verification. - Require explicit mapping to existing destination DLP data profiles for cross-tenant migration; never silently reuse source IDs or update shared topic definitions.
- Preserve existing files and report partial restore failures without automatic rollback.
The migration guide contains live backup output and the verified synthetic restore workflow. Two isolated OAuth tenants exercise the actual CLI's cross-tenant path; live cloud verification uses the single configured tenant. SDK remains 0.29.0; its existing Management APIs provide the required operations.
v5.4.1 (2026-09-08) — AgentGuard reports and navigation repair
Version 5.4.0 was withheld from npm after the release gate found a test-only dependency on the separately installed Docusaurus toolchain. Version 5.4.1 isolates that sidebar regression test; no release tag was rewritten.
- Add
airs-cli agentguard scans list,scans vulnerabilities,stats,rules listandreport, backed by SDK 0.29.0 and the existing Management OAuth credentials. - Deliver private, no-clobber HTML or Markdown reports in the current directory. Reports contain aggregates only; raw finding content requires explicit opt-in.
- Handle nullable scan outcomes and page-count rule metadata without reporting false zero activity or silently truncating the rule catalog.
- Expose captured Model Security time-window and model-version filters.
- Make the AI Gateway sidebar category expand its nested pages instead of navigating to the workflow page and switching sidebars. The workflow remains its first child.
The AgentGuard command guide includes actual live output from the 26-check read-only acceptance workflow and documents data limitations.
v5.3.0 (2026-09-08) — consistent report commands
- Use
airs-cli runtime report,airs-cli redteam report, andairs-cli aigateway report --workspace devfor HTML (default) or Markdown environment deliverables. - Keep
dashboardas a compatibility alias for Red Team and AI Gateway. Runtime'sdashboardAPI-query group is unchanged. - Preserve
airs-cli redteam report <jobId>for individual scan results. Scan-only and environment-only options cannot be mixed.
Verified against the npm-installed CLI: 16/16 live E2E tests across Runtime, Red Team and AI Gateway; 11/11 native DLP checks; exact seven-file package payload match. The full unit/integration suite passes 1,479 tests. Credentials remain unchanged. Updated Gateway examples and Red Team examples contain actual 5.3.0 stdout. SDK remains the published 0.28.0; no SDK change was required.
v5.1.0 (2026-09-07) — Red Team environment dashboard
- Add
airs-cli redteam dashboardwith HTML (default) and Markdown deliverables. Preserveredteam report <jobId>for individual scans. - Pin SDK 0.27.0 and collect seven read-only Red Team feeds, including GET quota. Explicit pagination budgets and source completeness prevent missing evidence from becoming zero activity.
- Keep server-default statistics separate from the local 24-hour scan-creation window. Do not infer broker outages or quota exhaustion from incomplete or unlimited counters.
- Produce private, atomic, no-clobber files in CWD. Refuse debug logging and exclude raw configuration, credentials, scripts, prompts and scan identities from deliverables.
- Provide inline CSS/JS, hash-based CSP, offline/mobile/no-JS rendering, priority filters and print support. Include actual CLI stdout in the command examples.
The local implementation passed 1,406 tests and four built-CLI live E2E tests; release validation also exercises the registry SDK and package consumer rather than relying on a local dependency link.
v5.0.1 (2026-09-07)
Runtime dashboard/session commands reject unsupported time units before config loading,
debug-file creation, authentication, or API requests. --unit week now exits 2 with a
clear hint to use --interval 7 --unit days, instead of a generic HTTP 400 error. Session
queries retain hour, hours, day, and days; application-specific commands retain
their narrower existing constraints. Units are not silently converted.
Command help and session examples describe the accepted units. Validation: 1,375 regression tests, 45 focused command tests, and 8/8 live E2E tests pass. The endpoint workflow includes 15 checks, including rejected week and successful seven-day YAML retrieval. An instrumented built-CLI rejection probe confirms zero fetch calls, even with invalid configuration and debug enabled. The SDK remains pinned to 0.26.0.
The npm publication, release CI, docs deployment, and container publication pass, including both native architectures and guarded container aliases. Fresh registry and global CLI installations match the tested payload and each pass eleven native checks. The installed published CLI passes the full live suite 8/8 at 19:32 UTC, including both the rejected week and working seven-day YAML commands. An earlier candidate pagination failure and subsequent passing reruns are retained in the dated evidence.
v5.0.0 (2026-09-07)
- Pin SDK 0.26.0. Add
runtime dashboardapplication summaries andruntime sessionsinventory, chart, session, transaction and explicit stored-content access across all eleven supplied SCM routes. Reuse Management OAuth with a separately configurable dashboard host; no browser token or Scanner key is required. - Replace the broken legacy scan-log source in daily reports with verified session inventory, chart, ranking and daily severity data. All seven sources expose completeness, window and collection evidence. Keep session counts distinct from detector events and surface inconsistencies instead of forcing reconciliation.
- Breaking library change: report schema 2 replaces
logs/ReportLogSummarywithsessions/ReportSessionSummaryand addsdailyTelemetry. Custom report clients now need five dashboard methods plus profile/application inventories. The default per-source page budget is 40; session pages request 25 rows. - Breaking command behavior:
runtime scan-logs querynow exits 1 with an explicit broken/refactor warning. Useruntime sessions list; this is a workflow migration, not a compatible wire-schema substitution. - Keep stored content opt-in (
--show-contentor private no-clobber--output-file). Suppress dashboard/content bodies in CLI debug logs as well as SDK logs. Reports never fetch transaction attributes or stored content. - Preserve self-contained HTML/Markdown, private CWD output, no-clobber publication and offline interactions. Update references, migration instructions and synthetic downloads; keep historical E2E failures clearly dated.
See daily report validation and migration, dashboard commands, and session commands. The candidate passes all 1,354 regression tests against registry SDK 0.26.0, exact packed/installed payload checks and eleven native checks. Earlier live workflows pass; a later fresh installed run encounters an independently reproduced OAuth connection timeout. See the dated availability warning in the guide; this is not an all-green current service-availability claim.
The npm publication, CI, docs deployment, and container publication/amd64+arm64 checks pass. Registry and user-prefix CLI 5.0.0 match the verified seven-file payload and 23 exports, with eleven native checks each and an unchanged credential file. Public browser/download checks pass 9/9. The full installed live suite at 18:15 UTC reports 2 passed / 6 failed, blocked by OAuth connectivity and its missing-artifact consequence; it is not counted as a passing latest E2E run.
v4.5.0 (2026-09-07)
- Add
airs-cli runtime report: read-only daily AI Runtime Security activity and current configuration, with evidence-backed attention/review findings and explicit complete/partial/unavailable sources. Self-contained HTML is the default; Markdown is also supported. No numeric health score or unsupported daily severity/token metrics are invented. - Deliver dashboards and
--debuglogs in the current working directory, not beside read-only credentials. Unique default names, private permissions, no overwriting, no automatic pruning. Reports support--output-file -for stdout and--strictfor completeness-sensitive automation. - Add offline application search, priority filtering, mobile/print layouts, CSP-pinned inline assets and hostile-metadata escaping. Raw prompts, responses, credentials, tenant/user identifiers and upstream errors are excluded from report artifacts.
- Handle debug-log initialization failures with a friendly error. Mask OAuth form secrets and auth codes; omit non-JSON debug bodies. A live 128-hour scan-log query now writes its log successfully, but the service still rejects that interval with HTTP 400.
- Keep SDK 0.25.0 pinned; no SDK runtime changes are required. Scan-log detail remains explicitly unavailable when the service returns an empty object. The new command does not change the scope or state of AI Gateway.
See the daily report guide and downloadable examples for the read-only live capture, source limitations, and human review workflow. Samples published with the documentation are synthetic; live deliverables remain private.
The published package and the upgraded user installation each pass all seven live report/debug workflows at 15:19 UTC with unchanged credentials. Both match all seven package files and 23 exports from the verified build. CI, npm publication, docs deployment, and container publication with both native architecture checks pass. Public browser/download verification passes 9/9.
v4.4.0 (2026-09-07)
- Pin published SDK 0.25.0. Extend the nine verified analytics filters to
group-by ai_service|model|api_key|provider|status_code|users. - Use the SDK's dimension/column lists and semantic filter schema. Invalid dimensions, unsupported user columns, malformed CSV/JSON and unsafe or reversed numeric bounds exit 2 before client creation.
- Preserve all existing chart behavior, units and group JSON/YAML envelopes. Non-user columns remain supported; user grouping does not gain unverified column options.
- Add 95 failing-first public CLI/registry-SDK transport regressions. All 1,268 tests pass; native, installed-package and live candidate workflows are verified separately before publication.
- Keep the full-scope assessment at 5/10: direct Gateway coverage remains 138/242 (57.02%). Existing service/model/entitlement failures are not resolved by this release.
The published npm package passes 103/103 grouped-filter checks, 54/54 chart contracts, 8/8 inference checks, 3/3 empty-window checks and 11/11 native DLP checks. The upgraded user-prefix CLI passes 12/12 cross-service reads/benign scan and 11/11 native DLP checks. All 36 historical release keys are independently confirmed retired. Both installations match all seven payload files and 19 exports. The container workflow passes 11/11 native checks on each actual architecture before verifying minor/latest aliases. The earlier 102/103 group, 53/54 registry-chart and 10/11 DNS-affected browser attempts remain disclosed; complete subsequent suites pass without changes to validation, retries or infrastructure. See actual grouped output and current inference capture.
v4.3.1 (2026-09-07)
- Fix
runtime dlp generate --output json, including global, config-file and environment selection. Unsupported formats and malformed or unsafe integer counts/seeds now exit 2 before generating files. Quiet pretty output preserves per-format counts. - Upgrade production
js-yamlto 4.3.2,nanoidto 5.1.16 (including the DOCX dependency), and optionalsharpto 0.35.4. The frozen production audit reports zero known advisories; CI, npm publication and container publication now enforce that audit instead of treating functional tests as security verification. - Correct Node engine metadata and
airs-cli doctorto the actual existing dependency intersection:^20.17.0 || ^22.13.0 || >=23.5.0. Add native CLI smoke checks at Node 20.17, 22.13 and 24; SDK Node 18 support is unchanged. - Publish exact container version tags first, verify the digest on amd64 and arm64 without runtime network access, then serialize and guard minor/
latestpromotion against the current stable tag list. Older tagged builds cannot advance aliases owned by newer versions. Branch/prerelease dispatches are rejected; do not rerun legacy workflows from tags predating this safeguard. - Include fontconfig/DejaVu in the minimal Alpine runtime and allow only required build inputs into the Docker context. The native smoke verifies all five DLP formats, 26 file signatures, manifest counts and structured-output/validation behavior. Local validation uses an existing process-only font configuration because this host has no system fonts.
- Keep SDK 0.24.0 pinned. The full-spec assessment remains 5/10: direct AI Gateway coverage is still 138/242 (57.02%), and the documented upstream service/model limitations are not fixed by this patch.
The release CI passes all seven jobs, including Node 20.17/22.13/24 native consumers. The container workflow passes 11/11 native checks on each architecture and verifies 4.3/latest at digest sha256:c113c58d457e0152b5f51c1cab850d771b7ddeac9ca88d8020b74442791cfadf. Registry and user-installed packages independently match all seven payload files and 19 exports; registry production audit and 11/11 native checks pass. The exact native output is captured after registry installation, not copied from a mock.
v4.3.0 (2026-09-07)
- Add verified trace, string-metadata, status-code, API-key-ID, provider/model, total-token and cost-range filters to
aigateway telemetry requests,cost,tokensandlatency. Lists use OR; different filters use AND; numeric bounds are inclusive. Cost bounds are in cents, including fractional cents. - Pin published SDK
0.24.0and use its exported filter schema before creating a CLI client or resolving a cost workspace. Malformed input exits 2 without authenticated requests or input values in diagnostics. - Reject partially parsed day counts such as
7junk; resolve cost workspace UUIDs to telemetry slugs. Existing pretty-dollar and explicit JSON/YAML cents/USD fields remain compatible. The cost command retains its rolling-day window. - These verified query options do not establish full upstream analytics equivalence. Direct gateway coverage remains 138/242 (57.02%); provider/service limitations remain in the SDK assessment.
- Registry-installed checks pass 54/54 chart contracts, 8/8 inference and 3/3 empty-window checks; upgraded user-install checks pass 12/12. The separate production lockfile audit still flags
js-yaml,nanoidand optionalsharp; fresh npm resolution leaves thesharpadvisory and its package-level propagation. This is not a clean security sign-off; dependency remediation remains a focused follow-up.
v4.2.2 (2026-09-07)
- Pin SDK
0.23.0, correcting empty latency response validation.aigateway telemetry latencypreserves null period mean/percentiles in JSON and YAML instead of failing on a valid empty cohort. - Add failing-first public-command integration checks against the actual installed SDK, with synthetic HTTP responses and no live credentials.
- The SDK also adds verified trace/metadata filters to cost, token and latency methods. This CLI release adds no filter flags. Direct gateway coverage remains 138/242 (57.02%), and existing provider/service limitations remain explicit in the SDK assessment.
v4.2.1 (2026-09-07)
- Pin SDK
0.22.0, including its experimental caller-owned realtime transport. The CLI's supported inference commands remainchat,responsesandembeddings; this release adds no realtime CLI command and does not promise realtime support for the prescribed model. - Run the full lint, format, typecheck, coverage and documentation CI gates on main pushes. Publication now enforces formatting and coverage as well.
- Keep actual version-specific inference captures on the examples page. SDK direct gateway coverage is 138/242 (57.02%); its realtime live test reaches HTTP 101 but fails with
invalid_model. Existing service failures and the incomplete full OpenAPI target remain explicit in the SDK assessment.
v4.2.0 (2026-09-07)
New
- Add
airs-cli aigateway inference chat,responsesandembeddings, with explicit runtime endpoint/key configuration separate from SCM OAuth. - Support streamed text and JSONL, stdout backpressure, signal cancellation and secret-safe diagnostics. Runtime requests default to zero automatic retries.
- Pin SDK
0.21.0for the typed runtime API, expanded AIRS contracts, OAuth deadline recovery and transport hardening.
Validation and limitations
- Pre-release CLI validation passes 1,033 tests and 8/8 live inference checks using the prescribed dev workspace and models. Actual sanitized output is included in the inference examples.
- Correct DLP cleanup help: the unsupported delete command exits 2 without API traffic; a failing status-patch workflow is not presented as verified retirement.
- This release is authorized with known AI Gateway gaps. The SDK matches 137/242 upstream operations (56.61%), and experimental methods and backend failures remain documented. The complete primary SDK example run has 18 passing and 3 failing scripts; publication does not claim all-green E2E or 99% full AI Gateway coverage.
- Live gateway evidence uses the documented TLS-verified LAN path; public WAN reachability remains uncertified. See the SDK conformance report.
v4.1.2 (2026-08-31)
Changed
- Replaced Prisma AIRS CLI branding across the README, Docusaurus navbar, home page, favicon, and social preview with the new shield, terminal, beam, and spectrum logo.
- Consolidated the previous icon and light/dark wordmark variants into one canonical SVG so every published surface uses the same artwork.
v4.1.1 (2026-08-31)
Fixed
- AI Gateway service and user API-key list/detail commands now redact stored key material by
default. Use the explicit
--reveal-sensitiveflag only when the value is intentionally needed. - Non-secret API-key metadata remains visible, including defaults and configuration identifiers.
v4.1.0 (2026-08-30)
New
- Expanded
airs-cli aigatewayto the SDK 0.20.0 resource surface: API keys, audit logs, configs, deployments, guardrails, provider integrations, MCP integrations, organisations, plugins, providers, complete telemetry reads, and canonical pluralworkspacescommands. - Added SDK-schema-validated named mutation flags plus repeatable
--set/--set-stringdotted values for nested configuration. JSON/YAML--fileinput remains an optional advanced base; named and dotted flags override it. - Added confirmation-gated relationship replacement and destructive operations, protected
0600output for one-time credentials, operation-scoped auth/provider redaction, and a live E2E suite with read inventory plus an exactly cleaned-up disposable config lifecycle.
Changed
- Workspace soft removal is canonically
airs-cli aigateway workspaces archive; the legacy singularworkspace deletespelling remains as a warning-emitting compatibility path and has normalias. - Pinned
@cdot65/prisma-airs-sdkto0.20.0, using its exported write schemas, known-value catalogs, prototype-safe dotted builders, and secret-field metadata.
Fixed
- Preflight one-time-secret destinations before API mutations, normalize invalid structured input
to usage errors, make relationship
setoperations replace by default, and apply SDK operation metadata to provider and deployment response redaction.
v4.0.1 (2026-08-29)
Fixed
- Read commands with legacy Commander defaults now honor the documented output precedence instead
of allowing an internal
prettydefault to mask global, config-file, or environment selection. - Empty JSON and YAML lists consistently emit bare arrays (
[]), including scan-log queries. - CLI reference tables now describe output as Resolved rather than claiming the unconditional
default is
pretty, and captured pretty examples state the configuration assumption explicitly.
v4.0.0 (2026-08-29)
Changed (breaking)
- One read-output contract everywhere. Read commands accept
pretty,table,markdown,csv,json, andyaml. JSON/YAML list output is always a bare array of complete normalized records; table/Markdown/CSV use a stable projection. Detail commands emit a complete object in JSON/YAML and a two-column Key/Value view in tabular formats. Status and paging hints go to stderr, leaving stdout pipe-safe. - Output selection has one precedence order: command
--output, global--output,defaultOutputin config (orPANW_CLI_OUTPUT), thenpretty. - Pagination is uniform. Paginated lists expose
--limit,--offset, and--all;--allwalks the underlying API pages and is capped at 10,000 records unless--maxchanges the cap (--max 0removes it). Profiles and topics return only their latest revision by default; use--all-versionsor--revisionwhen historical data is required. - Backup serialization uses
--file-format json|yaml. The old--outputand--formatspellings remain hidden deprecated aliases for this release.
New
- Markdown output for read commands, RFC 4180-safe CSV quoting, and camelCase normalized DLP JSON/YAML records.
- AI Gateway cost telemetry retains explicit cent values and adds
totalUsd,avgUsd, and per-recordcostUsdvalues. airs-cli config get|listandairs-cli doctorparticipate in the same structured output system.
Dependencies
- Upgraded
@cdot65/prisma-airs-sdkto^0.18.0, which owns cross-page traversal, maximum-result enforcement, repeated-cursor protection, and latest-revision selection.
v3.3.0 (2026-08-05)
New
- AI Gateway workspace management — new
airs-cli aigateway workspacecommands cover scoped and tenant-wide listing, detail reads, creation, partial updates, and confirmation-gated archival. Data-plane reads show active workspaces in the caller's SCM role scope;--plane adminand--allexpose tenant-wide active/archived state when the caller has the tenant-root grant. - AI Gateway cost telemetry —
airs-cli aigateway telemetry cost --workspace <slug> [--days 7]reports total, average, and per-day spend. Pretty output converts AIRS cents to dollars; JSON/YAML keep explicit*Centsfields. - Red Team custom target adapters —
airs-cli redteam adapter {list,get,create,update,delete,validate}manages user-supplied scripts for network-broker targets. Updates preserve omitted variables and stored secrets, validation checks for an ONLINE broker channel, and failed scripts surfacestderr/tracebackwith exit code 1.
Fixed
- Bare STATIC scans now select the full attack catalog — omitting
--categoriesdefaults to every available subcategory exceptMULTI_TURN, prints a--quiet-aware notice, and avoids the AIRS API's blank 422 response. Library callers must still pass categories explicitly and receive a descriptive local error otherwise. - Target scaffolds match current AIRS schemas — native, REST-family, WebSocket, and custom target adapter templates now use their correct connection shapes, required top-level fields, and adapter variable array.
Documentation
- Added complete Docusaurus CLI guides for AI Gateway workspaces, cost telemetry, and Red Team adapters; updated scan/target guides,
README.md,AGENTS.md, andCLAUDE.mdfor the new command surfaces and platform rules.
Dependencies
- Upgraded
@cdot65/prisma-airs-sdkto^0.17.0for AI Gateway and Red Team adapter support.
v3.2.0 (2026-07-17)
New
- Reliable, configurable bulk scanning —
airs-cli runtime bulk-scannow accepts--batch-size <n>(default25, validated as a positive safe integer). Logical batches run sequentially, while each AIRS SDK 0.13.2 call is capped at 20 prompts. - Item-level resumable state — every prompt retains its input index, AIRS
req_id, status, accepted receipt, and result. State is written before submission and checkpointed throughout the job. Because state contains prompt text, the default directory and files are restricted to modes0700and0600respectively.
Fixed
- One input prompt now produces exactly one correctly correlated output row. Results are matched by
(scan_id, req_id)and sorted back into input order, fixing lost, overwritten, or misattributed rows when one scan ID represents several prompts or AIRS returns rows out of order. - All runtime outcomes are preserved. CSV output now includes
topic_violation,injection,toxic_content,dlp,url_cats,malicious_code,source_code, andagent; actions are exactlyallow,block, orfailed. Failed and timed-out prompts produce failed rows, successful partial results remain available, and the process exits 1 when any prompt failed. - Resume is idempotent for known work. Accepted receipts are polled, only definitely pending items are submitted, and the entire CSV projection is atomically replaced after each completed batch. Repeated resumes no longer append duplicate rows.
- Overlapping jobs are rejected. Each state file has an owner lock while bulk/resume work is active, with dead-local-process lock recovery.
- Ambiguous POST outcomes fail closed. SDK retries are disabled for async submissions; only confirmed HTTP 429 responses are retried, with
Retry-Aftersupport. Definitive 4xx rejections remain pending, while network and 5xx outcomes are recorded as ambiguous and are never automatically resubmitted. Resume recovers known accepted results before reporting an ambiguity. Exact-once submission cannot be guaranteed after an ambiguous acceptance. - Polling is bounded. The CLI stops after 120 consecutive polls without a newly resolved prompt instead of waiting forever.
Dependencies
@cdot65/prisma-airs-sdk0.13.2 or later is required for 20-item async submissions, per-call retry control, and structured HTTP/network failure metadata.
v3.1.0 (2026-07-09)
New
- Red Team Network Broker — manage the data-plane relays that connect red team clients to targets behind a private network.
airs-cli redteam network-broker channels {list,get,create,update}plusairs-cli redteam network-broker stats(server domain, container image/registry, helm chart, client version, online/total channel counts). Channels live on a distinct endpoint, overridable viaPANW_RED_TEAM_NETWORK_BROKER_ENDPOINT(config keyredTeamNetworkBrokerEndpoint); OAuth credentials are shared with the other Red Team commands. airs-cli redteam languages— list the tenant's supported languages and job types for multilingual scans.--managementqueries the management plane instead of the data plane.airs-cli redteam targets error-logs <targetId>— list target-profile error logs (timeouts, auth failures, malformed responses captured while a target was exercised).airs-cli model-security models {list,get,versions,version,files}— read-only browsing of the scanned model catalog: models, their versions, and the files within each version, with latest eval outcome, detected formats, source type, and per-file results.
Changed
- SDK upgraded to
@cdot65/prisma-airs-sdk0.13.0. Drop-in upgrade (no breaking changes). Also picks up upstream fixes:customerApps.list()now percent-encodes the TSG ID, and network-brokerChannelStatsfield names match the live API.
v3.0.1 (2026-07-07)
- Fixed the Docker image build (v3.0.0 image never published — the tsup config was missing from the build stage). npm package was unaffected.
v3.0.0 (2026-07-07)
New
airs-cli doctor— credential and connectivity preflight. Checks Node.js version, config file presence/validity, which scanner and management credentials are set (and from which source), scanner API reachability, and management OAuth. Network checks are time-boxed at 5s; prints a pass/warn/fail report with fix hints. Supports--output json|yaml. Exits 0 when healthy (warnings OK), 1 on any failure.airs-cli config {list,get,set,unset,path}— manage~/.prisma-airs/config.jsonfrom the CLI: effective-config listing with per-key source (env/file/default), schema-validatedset, round-trip-safeunsetthat preserves unknown file keys, secret masking with--revealopt-out, and aPRISMA_AIRS_CONFIG_PATHenv override for the config file location.airs-cli completion <bash|zsh|fish>— shell completion scripts with install snippets.- Global
--quietflag — suppresses status and decorative output while keeping data, results, and errors. - Confirmation prompts on destructive operations — profiles/topics/targets delete, topics revert, and profiles cleanup now ask Y/N before proceeding.
--forcebypasses; non-interactive runs without--forceexit 2. ls/rmaliases on everylist/deletesubcommand, and usage examples in--helpfor the most-used commands.- Endpoint and auth overrides (full SDK parity) — new config keys
airsApiToken(bearer-token alternative to the scan API key),airsApiEndpoint,airsNumRetries,redTeamDataEndpoint,redTeamMgmtEndpoint,redTeamTokenEndpoint,modelSecDataEndpoint,modelSecMgmtEndpoint,modelSecTokenEndpoint. Scan commands acceptPANW_AI_SEC_API_TOKENin place ofPANW_AI_SEC_API_KEY.
Changed
- Flag standardization —
--outputalways means format; file destinations are--output-file; input files are--file; pagination is--limit/--offset; destructive bypass is--force. Old spellings (--format,--input,--page/--size,--confirm) keep working throughout v3 as hidden aliases with a stderr deprecation notice and will be removed in v4 — see the Flag Migration guide. Also new:--output pretty|json|yamlonredteam prompts list|get,redteam instances get,redteam registry-credentials, and client-side--limit/--offseton redteam list commands. - Pipe-safe machine-readable output —
--output json|yaml|csvemits only the payload on stdout; progress, banners, and rate-limit warnings moved to stderr, so--output json | jqalways parses. Exit codes standardized across every command group: 0 success, 1 runtime/API failure, 2 usage error. API errors show the HTTP status and a--debughint. - CLI output design system — all renderers (backup, eval, redteam, runtime, dlp, model-security) migrated to shared
uiprimitives: uniform bold headers, semantic glyphs (✓ ✗ ⚠ ○ ● •), aligned key/value blocks, canonical box-drawing tables, and standardizedNo <resource> foundempty-list phrasing. - ~6x faster startup (≈0.4s → ≈0.06s) — the DLP test-file generator dependencies (sharp, pdf-lib, docx, piexifjs) now load lazily, only when
airs-cli runtime dlp generateruns, and moved to optionalDependencies. Installs with--no-optionalskip ~50MB of native binaries;dlp generateprints an install hint if they are absent. - Bundled build (tsup) — dist/ went from ~200 files (2.5MB) to 5 files (355KB unpacked), with the DLP generator split into a lazy chunk. No API changes — library entry, types, and CLI bin paths are unchanged.
- Hardened
--debuglogging — sensitive request/response body fields, query parameters, and headers are fully masked before hitting the debug JSONL file (previously only two headers were partially masked). Debug logs rotate automatically, keeping the 10 newest. Unhandled promise rejections print a friendly error instead of a raw crash.
Changed (breaking)
airs-cli runtime dlp-genmoved toairs-cli runtime dlp generate. The DLP test-file generator now lives under thedlpnamespace alongsidedictionaries,filtering-profiles,patterns, andprofiles. Flags and behavior are unchanged —--types,--count,--out,--techniques,--seed,--outputwork identically. Update any scripts or aliases that calledairs-cli runtime dlp-gen.
Removed (breaking)
- External LLM functionality removed. Custom topic guardrail generation is now fully agent-driven (see
AGENTS.md/CLAUDE.md), so the LLM provider layer is no longer needed.- Removed the
airs-cli runtime profiles auditcommand (it used an LLM to generate test prompts). - Removed the LLM provider configuration:
--provider/--modelflags, thellmProvider/llmModelconfig fields, and theANTHROPIC_API_KEY,GOOGLE_API_KEY,GOOGLE_CLOUD_*,AWS_*,LLM_PROVIDER,LLM_MODELenvironment variables. AIRS scanner + management credentials are unchanged. - Removed the LLM Providers documentation section.
- Library: removed the
auditexports (runAudit,computeTopicAuditResults,computeCompositeMetrics,detectConflicts,buildAuditReportJson,buildAuditReportHtml) and the orphaned run-report exports (buildReportJson,buildReportHtml).ProfileTopicis retained.
- Removed the
airs-cli runtime dlp-profiles listremoved. Useairs-cli runtime dlp profiles list(DLP namespace) instead — it is now the canonical listing and returns populated profile IDs plustype,profile_type,status, andversionfields, paginated as{items, page:{number,size,total,returned}}.
Migration note
The two endpoints overlap heavily but are not identical on the same tenant. Before switching scripts that consumed the legacy command, verify the profiles you rely on are present in the new output:
- The legacy Management endpoint may have surfaced profiles the new DLP namespace endpoint does not (observed on at least one tenant:
PII Basic Block All Datawas legacy-only). - The new DLP namespace endpoint may surface profiles the legacy endpoint did not (observed:
Malwarewas new-only). - The new endpoint is paginated — pass
--page/--sizeto walk past the first page. - Field shape changes: legacy returned
[{id,name}]with empty IDs; new returns{items:[{id,name,type,profile_type,status,version}], page:{...}}.
See #226 for the divergence analysis.
v2.10.0
Changed
- DLP write commands now take structured flags —
patterns|profiles|filtering-profiles create/replaceaccept--name,--regex,--weighted-regex,--pattern-id,--file-based,--direction,--tag k=v, etc. instead of forcing--body-file pattern.json.--body/--body-fileretained as escape hatches for complex rule trees. - DLP output curated across all formats —
--output json|yamlnow returns{items, page:{number,size,total,returned}}for lists and{action,id,name,type,status,version}for acks, dropping the raw SDK envelope leak (tenant_id,is_parent_managed,pageable.*).
Fixed
dlp dictionaries createnow honors--output— was hardcoded topretty, ignoring the flag. Now matches the rest of the DLP command surface.
v2.9.0
New
- DLP command group —
airs-cli runtime dlpadds full CRUD across four DLP subclients:filtering-profiles(list/get/replace)patterns(list/create/get/replace/patch/soft-delete)profiles(list/create/get/replace/patch — no delete; archive via patchingprofile_status)dictionaries(full CRUD with multipart upload; handles both 200+body and 204+empty replace responses)
- Optional
PANW_DLP_ENDPOINTenv var (defaults to SDK built-in).
Fixed
--debugnow captures DLP traffic — fetch interceptor's host allowlist was missingapi.dlp.paloaltonetworks.com, soruntime dlpcommands were silently bypassing the JSONL log.
Dependencies
@cdot65/prisma-airs-sdkbumped to^0.9.2(DLP nested helper nullable sweep — unblocksruntime dlp patterns listandruntime dlp profiles listagainst live tenants).
v2.4.0
New
- Profile cleanup --
airs-cli runtime profiles cleanupdeletes old profile revisions, keeping only the latest revision per profile name. AIRS creates a new revision (with a new UUID) on every profile update; this command prunes the accumulated duplicates. Supports--forceto skip confirmation,--updated-by <email>(defaults togit config user.email), and--output jsonfor structured output.
v2.3.0
New
- Target init from templates --
airs-cli redteam targets init <provider>scaffolds a target config JSON from provider templates (OPENAI, HUGGING_FACE, DATABRICKS, BEDROCK, REST, STREAMING). Supports--output <file>for custom paths.
v2.2.0
New
- EULA management --
airs-cli redteam eula {status,content,accept}for checking, viewing, and accepting the Red Team end-user license agreement - Instance management --
airs-cli redteam instances {create,get,update,delete}for managing Red Team compute instances - Device management --
airs-cli redteam devices {create,update,delete}for managing devices attached to instances - Registry credentials --
airs-cli redteam registry-credentialsfor fetching container registry tokens - Target auth validation --
airs-cli redteam targets validate-authto test auth credentials without modifying targets - Target metadata --
airs-cli redteam targets metadatato retrieve field metadata and validation rules - Target templates --
airs-cli redteam targets templatesto get provider-specific configuration templates
Fixed
- Bulk scan polling hang -- async query API returns lowercase
"complete"/"failed"but polling checked for uppercase"COMPLETED"/"FAILED", causing infinite loop. Status comparison is now case-insensitive.
Dependencies
@cdot65/prisma-airs-sdkbumped to^0.7.0(Red Team EULA, instances, target auth/metadata/templates, WebSocket support)
v2.1.0
New
- Intent-aware eval CSV format — eval CSV now requires three columns:
prompt,expected,intent(block/allow). Theexpectedcolumn is intuitive (belongs to topic category: true/false) andintentcontrols the trigger mapping. airs-cli runtime topics samplecommand — prints a template CSV showing the three-column format with both block and allow intent examples. Supports--output <path>to write to file.- Agent instruction ecosystem — rewritten
program.mdwith battle-tested optimization protocol. New agent entrypoints:GEMINI.md,.github/copilot-instructions.md. Any AI coding agent can now pick up the guardrail optimization loop. - JSON eval output includes intent —
--format jsonoutput now includes anintentfield at the top level.
Changed
topics createflags:--name,--description,--examplesreplace the old--topicflagtopics applyflags:--namereplaces--topic,--intentaddedtopics evalflags:--promptsreplaces--input,--formatreplaces--outputtopics revertflags:--namereplaces--topic- Updated
AGENTS.mdwith correct flag names, sample command, and three-column CSV docs - Updated all mkdocs pages to reflect new CLI flags and CSV format
Breaking
- Eval CSV files must now include an
intentcolumn. Existing two-column CSVs will error with "Missing required column: intent".
v2.0.0
Changed
- Major refactor: removed embedded LLM-driven generation loop. CLI now provides atomic commands (
create,apply,eval,revert) for external agent orchestration. - Removed
topics generate,topics resume,topics report,topics runscommands. - Removed memory/persistence subsystem.
v1.4.2
Fixed
- Profile create now includes AIRS UI-required defaults:
app-protection,data-protection,latency,mask-data-in-storage --toxic-content alertexpands to"high:alert, moderate:alert"(AIRS UI expectsseverity:actionformat)- Fixes "is not iterable" crash in AIRS UI when viewing CLI-created profiles
v1.4.1
Fixed
profiles deleteby UUID now shows profile name in success messageprofiles createhandles AIRS 409 race — detects successful creation despite SDK errorprofiles createdefaults latency config toblock/5swhen not explicitly set
v1.4.0
New
--rate <n>flag for generate/resume — caps AIRS scan API calls to N per second during guardrail generation and resumed runs. Uses a sliding-window token bucket. Default: unlimited. Prevents hitting API rate limits during intensive scan loops.--debugglobal flag — logs all AIRS and Strata Cloud Manager API requests and responses to a JSONL file (~/.prisma-airs/debug-api-<timestamp>.jsonl) for offline inspection and sharing with Palo Alto Networks support. Works with any subcommand across all three command groups. Auth tokens are redacted.
Fixed
profiles deleteandprofiles updatenow accept name or UUID (same auto-detect asprofiles get)profiles deleteprints proper success message instead ofundefinedprofiles creategives actionable error on 409 conflict: suggestsprofiles update
v1.3.0
New
- Docs restructured by AIRS module — navigation reorganized into Runtime Security, AI Red Teaming, and Model Security top-level sections instead of flat Capabilities/Guides layout
- Profile create/update CLI flags —
profiles createandprofiles updatenow use 20+ CLI flags (--prompt-injection,--toxic-content,--malicious-code, etc.) instead of--configJSON files - Read-modify-write profile updates —
profiles updatefetches current profile, merges only specified flags, then PUTs full payload (no config overwrites)
Changed
- Docs site navigation: features/ and examples/ directories merged into runtime/, redteam/, model-security/ module sections
- Architecture and LLM Providers moved under Reference tab
v1.2.0
New
- Profile builder — converts CLI flags to
CreateSecurityProfileRequest, supports all protection flags mergeProfilePolicy()— deep-merges CLI flag overrides into existing profile policy for PUT-only APIprofiles create— create security profiles with CLI flags for all protection categoriesprofiles update— update profiles with read-modify-write pattern; only specify what changesprofiles delete --force --updated-by— force deletion of profiles with dependencies
v1.1.0
New
profiles getcommand — retrieve full security profile configuration by name or UUID- Auto-detects UUID vs profile name
- Supports
--output pretty|json|yaml - Shows complete policy JSON (topic guardrails, DLP, app protection, etc.)
- Bump
@cdot65/prisma-airs-sdkto v0.6.10
v1.0.9
Fixed
- Make
changeTypeoptional in learning extraction schema — LLM omits it for neutral-outcome learnings, causingOUTPUT_PARSING_FAILUREduring memory extraction. Defaults to'initial'when omitted.
v1.0.8
Fixed
- Remove unused
OUTPUT_FORMATSimport in redteam.ts - Add missing
intentparameter to improveTopic test - Update langchain ecosystem to resolve
standard_schemaexport crash
Dependencies
@cdot65/prisma-airs-sdk0.6.3 → 0.6.7@langchain/aws1.3.0 → 1.3.3@langchain/core1.1.29 → 1.1.34@langchain/anthropic1.3.21 → 1.3.25@langchain/google-genai2.1.22 → 2.1.26@langchain/google-vertexai2.1.22 → 2.1.26
Security
- Resolved transitive
fast-xml-parserCVE via@langchain/awsupdate
v1.0.7
Fixed
- Display full API key value on create/regenerate
- Show last 8 characters of API key in list and detail views
v1.0.6
New
--outputflag on all list commands — unified structured output across all 3 command groups- Formats:
pretty(default),table,csv,json,yaml - Supported on:
runtime profiles list,runtime topics list,runtime api-keys list,runtime customer-apps list,runtime deployment-profiles list,runtime dlp-profiles list,runtime scan-logs query,redteam list,redteam targets list,redteam prompt-sets list,redteam properties list,model-security groups list,model-security rules list,model-security scans list
- Formats:
v1.0.5
New
airs-cli model-security install— one-command setup of themodel-security-clientPython package from AIRS private PyPI- Auto-detects
uv(usesuv init+uv add) or falls back topython3 -m venv+pip install --extrasfor source type selection:all,aws,gcp,azure,artifactory,gitlab--dirto specify project directory--dry-runto preview commands
- Auto-detects
Fixed
- CLI help menus now display subcommands in alphabetical order across all command groups
v1.0.0
First release of Prisma AIRS CLI (renamed from daystrom). See MIGRATION.md for upgrade steps.
Highlights
- 5 capability domains: Runtime Security scanning, Guardrail Generation with iterative refinement, AI Red Teaming, Model Security scanning, Profile Audits
- Runtime configuration management: Full CRUD for security profiles, custom topics, API keys, customer apps, deployment/DLP profiles, scan logs
- Guardrail generation loop: LLM-driven topic refinement with two-phase generation, test composition, weighted category generation, 3-tier recovery, plateau detection
- AI Red Teaming: Static/dynamic/custom scans, target CRUD with connection validation, prompt set management, property management
- Model Security: Security groups CRUD, rule browsing, rule instance configuration, scan operations with evaluations/violations/files, label management
- Profile Audits: Multi-topic evaluation with per-topic metrics, cross-topic conflict detection, JSON/HTML report export
- 6 LLM providers: Claude (API, Vertex, Bedrock) and Gemini (API, Vertex, Bedrock)
- Cross-run learning memory with keyword categorization and budget-aware prompt injection
- Structured evaluation reports: JSON, HTML, and terminal formats with run comparison (
--diff) - Resumable runs with full state persistence
- 537 tests across 29 spec files
- Docker support with multi-arch images (amd64 + arm64)
CLI Structure
airs-cli runtime scan # Sync scan
airs-cli runtime bulk-scan # Async bulk scan
airs-cli runtime resume-poll # Resume polling
airs-cli runtime profiles ... # Security profile CRUD
airs-cli runtime topics ... # Custom topic CRUD + guardrail generation
airs-cli runtime api-keys ... # API key management
airs-cli runtime customer-apps # Customer app CRUD
airs-cli runtime deployment-profiles # Deployment profile listing
airs-cli runtime dlp-profiles # DLP profile listing
airs-cli runtime scan-logs # Scan log querying
airs-cli redteam scan # Launch red team scan
airs-cli redteam targets ... # Target CRUD
airs-cli redteam prompt-sets ... # Prompt set CRUD
airs-cli redteam prompts ... # Individual prompt CRUD
airs-cli redteam properties ... # Property management
airs-cli model-security groups # Security group CRUD
airs-cli model-security install # Install model-security-client Python package
airs-cli model-security labels # Label management
airs-cli model-security rules # Rule browsing
airs-cli model-security scans # Scan operations
Breaking Changes (from daystrom)
- CLI binary renamed:
daystrom→airs-cli - Package renamed:
@cdot65/daystrom→@cdot65/prisma-airs-cli - Data directory:
~/.daystrom/→~/.prisma-airs/ - Guardrail commands moved under
airs-cli runtime topics - Audit command moved under
airs-cli runtime profiles audit - Deprecated top-level aliases removed — use
airs-cli runtime topicsandairs-cli runtime profilessubcommands