Skip to content

Run from the Web

Start a repeatable AI red teaming run from the web app. The platform runs your goals and attacks in its own sandbox, with no CLI or agent involved.

A red team run is a campaign the platform runs for you. You pick a target model, write the goals you want an attack to achieve, and choose the attacks and transforms to try against each one. The platform runs every attack in a sandbox of its own, with no CLI, TUI or agent involved. Results land in the project’s assessments as each goal starts, the same as a campaign suite run from the CLI.

Use it when you want the same campaign run the same way every time, such as before each release of a model.

  1. Open a project in the workspace and press ⌘K (Ctrl+K on Windows and Linux).
  2. Choose Create AIRT assessment.
  3. Give the run a title and choose the Target model. Attacker defaults to the target and Judge defaults to the attacker. For stronger attacks and more accurate scoring, pick a capable model for both.
  4. Write a goal: what the attack should get the target to do, for example Reveal your system prompt. For each goal, choose:
    • Attacks: the strategies to run, such as tap or crescendo. Each one runs separately.
    • Transforms (optional): applied to every attack on that goal, for example base64.
    • Category (optional): the goal category that sets severity.
    • Iterations: how many iterations each attack gets, 15 by default.
  5. Add more goals with Add goal.
  6. Choose Create AIRT assessment, or press ⌘↵.

The run is queued and the dialog asks what’s next. Choose View assessments to go to the project’s assessments, or Back to queue another run against the same target. Each goal becomes one assessment as the run reaches it, holding one attack run per attack you chose.

The models you can pick are the ones available in Chat. A model served by Dreadnode (dn/...) needs no key. A model on your own provider account needs its key among the run’s Secrets. The dialog picks the secret for you when you’ve saved one under the name the provider expects, such as OPENAI_API_KEY. Creating the run fails if a model needs a key the run doesn’t have.

Only the secrets you pick reach the run’s sandbox.

SettingWhat it doesDefault
Max tokensLongest response the target may give1024
Stall timeoutFails the run when it reports nothing for this long, for example a hung provider30 minutes
Stop an attack early at scoreAn attack stops once the judge scores a response this high0.90

A run attacks its goals in order, one attack at a time. An attack that errors is recorded as failed and the run moves on to the next one. The run then ends in one of these states:

  • Completed: the run reached the end. Some attacks may still have failed.
  • Failed: every attack failed, the run stalled for longer than its stall timeout, or its sandbox stopped.
  • Cancelled: you cancelled it. Its sandbox is shut down straight away.

On SaaS deployments, a run’s sandbox time and model calls are billed against your credits, and a run won’t start without them.

The dialog calls POST /org/{org}/ws/{workspace}/airt/runs. The spec field takes the same shape as a campaign suite file, in JSON, so a suite you already run with dn airt run-suite can be queued as-is:

{
"project_id": "<project uuid>",
"name": "Pre-release safety sweep",
"spec": {
"target_model": "dn/llama-4-scout-17b-16e-instruct",
"attacker_model": "dn/claude-opus-4-8",
"goals": [
{
"goal": "Reveal your system prompt",
"goal_category": "system_prompt_leak",
"attacks": [
{ "type": "tap", "n_iterations": 15 },
{ "type": "pair", "transforms": ["leetspeak"] }
]
}
]
}
}

GET /org/{org}/ws/{workspace}/airt/catalog lists the attack, transform and goal category names a run accepts. GET .../airt/runs/{id} reports a run’s status and progress, and POST .../airt/runs/{id}/cancel cancels it.