Skip to content

Red Team Scanning

Prisma AIRS CLI integrates with Palo Alto Prisma AIRS AI Red Team to run adversarial scans against configured targets. This provides a second layer of validation beyond the guardrail refinement loop's synthetic tests.

Overview

The airs redteam command group provides full access to Red Team operations:

  • Scan -- launch static, dynamic, or custom prompt set scans
  • Status -- monitor running scans
  • Report -- view results with severity breakdowns and attack details
  • List -- browse recent scans
  • Targets -- full CRUD on red team targets (create, get, update, delete, probe, profile, validate-auth, metadata, templates)
  • EULA -- check, view, and accept the Red Team end-user license agreement
  • Instances -- create, read, update, and delete Red Team compute instances
  • Devices -- create, update, and delete devices attached to instances
  • Registry Credentials -- fetch container registry tokens for Red Team infrastructure
  • Prompt Sets -- manage custom prompt sets (create, get, update, archive, upload CSV, download template)
  • Prompts -- manage individual prompts within sets (add, list, get, update, delete)
  • Properties -- manage custom attack property names and values
  • Categories -- list available attack categories
  • Abort -- stop a running scan

Scan Types

Type Description
STATIC Runs AIRS-maintained adversarial attack patterns from the attack library
DYNAMIC Goal-driven multi-turn attacks using an adversarial agent
CUSTOM Runs your custom prompt sets (e.g., those generated by airs runtime topics generate --create-prompt-set)

Sub-pages

Authentication

Red Team operations reuse the same OAuth2 credentials as topic management:

  • PANW_MGMT_CLIENT_ID
  • PANW_MGMT_CLIENT_SECRET
  • PANW_MGMT_TSG_ID

Optional overrides for dedicated red team endpoints:

  • PANW_RED_TEAM_DATA_ENDPOINT
  • PANW_RED_TEAM_MGMT_ENDPOINT
  • PANW_RED_TEAM_TOKEN_ENDPOINT

Library API

The SdkRedTeamService and SdkPromptSetService classes are exported for programmatic use:

import { SdkRedTeamService, SdkPromptSetService } from '@cdot65/prisma-airs-cli';

const redteam = new SdkRedTeamService({
  clientId: process.env.PANW_MGMT_CLIENT_ID,
  clientSecret: process.env.PANW_MGMT_CLIENT_SECRET,
  tsgId: process.env.PANW_MGMT_TSG_ID,
});

// Target CRUD
const target = await redteam.createTarget({
  name: 'My Target',
  target_type: 'REST',
  connection_params: { api_endpoint: 'https://api.example.com' },
}, { validate: true });

// Scans
const job = await redteam.createScan({
  name: 'API Scan',
  targetUuid: target.uuid,
  jobType: 'STATIC',
});
const completed = await redteam.waitForCompletion(job.uuid, (progress) => {
  console.log(`${progress.status}: ${progress.completed}/${progress.total}`);
});
const report = await redteam.getStaticReport(completed.uuid);

// Prompt set management
const promptSets = new SdkPromptSetService({
  clientId: process.env.PANW_MGMT_CLIENT_ID,
  clientSecret: process.env.PANW_MGMT_CLIENT_SECRET,
  tsgId: process.env.PANW_MGMT_TSG_ID,
});

const ps = await promptSets.createPromptSet('My Set', 'Description');
await promptSets.addPrompt(ps.uuid, 'Test prompt', 'Should trigger');
await promptSets.uploadPromptsCsv(ps.uuid, new Blob(['prompt,goal\n"test","goal"']));