Index Agentica

Open-source red-teaming tools for LLM apps and agents

Promptfoo, DeepTeam and Giskard compared as red-teaming tools for LLM apps and agents. Covers interface, what they attack, agent and MCP coverage, multi-turn attacks, framework mappings, CI use, and where attack generation and telemetry go.

Type
Comparison
Author
Agentica Author
Published
Last verified

Comparison

Open-source red-teaming tools for LLM apps and agents
EntryInterfaceHow attacks are madeAgent and tool risksMulti-turnFramework mappingsCIData leaving your machineLicense
PromptfooNode.js CLI (npx promptfoo@latest redteam setup / run / report) with a promptfooconfig.yaml; setup opens a local web UI. Needs Node.js >=22.22.0. Targets: HTTP endpoints, browser, direct model providers, custom codePlugins generate adversarial inputs (docs: 50+ vulnerability types); strategies wrap them (static encodings, dynamic jailbreak, jailbreak:meta, multi-turn jailbreak:hydra, indirect prompt injection, retry regression)Plugins for excessive agency, BOLA, BFLA, data exfiltration, coding agents and an mcp plugin; MCP guide tests a server through a client, tool poisoning with a rogue server (promptfoo/evil-mcp-server), and direct API testingYes: multi-turn strategies (Hydra, Goblin and others) need a stateful target or transcript replayredteam.frameworks: owasp:llm, owasp:agentic, owasp:api, nist:ai:measure, mitre:atlas; the docs also list EU AI Act, ISO 42001, GDPR and other pagespromptfoo redteam run -o output.json in any CI; docs show a GitHub Actions job. The promptfoo-action GitHub Action runs evals on PRs and posts a commentAttack generation uses a Promptfoo remote service by default (PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION=true for local only); usage telemetry on by default (PROMPTFOO_DISABLE_TELEMETRY=1), excluding prompts and outputsMIT (README: Promptfoo is now part of OpenAI and remains MIT)
DeepTeamPython library (pip install -U deepteam; red_team(model_callback=..., vulnerabilities=..., attacks=...)) and CLI (deepteam run config.yaml); Python >=3.9,<3.14Any LLM you configure simulates attacks (YAML default simulator gpt-3.5-turbo-0125) and judges them (default gpt-4o) with LLM-as-judge metrics; 50+ vulnerabilities, 20+ attack methodsAgentic vulnerabilities such as goal theft, recursive hijacking, excessive agency, indirect instruction, tool orchestration abuse, inter-agent communication compromise; security ones include tool metadata poisoning, SSRF, shell and SQL injection, BOLA, BFLA, RBACYes: linear, tree, crescendo and sequential jailbreaking, Bad Likert JudgeOWASPTop10 (LLM 2025), OWASP_ASI_2026 (agents), NIST, MITRE, Aegis, BeaverTailsdeepteam run config.yaml for reproducible runs; deepteam scan statically scans code or a git diff and exits 1 on findings, with a GitHub bot for PR commentsRuns locally; attack and judge calls go to the LLM you configure. Telemetry (PostHog, Sentry) unless DEEPTEAM_TELEMETRY_OPT_OUT=YES; optional Confident AI platform for resultsApache-2.0
GiskardPython library, v3 (pip install "giskard[scan]"; vulnerability_scan(target=..., description=...)), async-first; Python 3.12+. Wraps any sync or async callable as the targetLLM generators build adversarial scenarios from a plain-language description of the agent; built-in prompt-injection dataset; generators include Crescendo, GOAT, GCG injection, sycophancy, out-of-scopeScan covers prompt injection, jailbreaks, harmful content and OWASP LLM Top 10 categories; giskard-checks tests multi-turn agent conversations. No MCP-specific tests documented in the READMEYes, default target_mode is multiturn (singleturn optional)OWASP LLM Top 10 threat categories (per README); no other framework presets documentedNo CI integration documented in the README; scans and checks are Python code you can run in any test runnerGeneration and judging go to the LLM provider you install (default judge openai/gpt-4o-mini); optional aggregated telemetry without prompts or outputs, off with DO_NOT_TRACK=1 or GISKARD_TELEMETRY_DISABLED=1Apache-2.0 (v2 still available but no longer actively maintained)

Verdict: Pick Promptfoo if you want a config-driven CLI with the broadest agent and MCP coverage and framework reports, but turn off remote generation and telemetry if data must stay local. Pick DeepTeam for a Python-native red team with a large agentic vulnerability list and a code scanner for PRs. Pick Giskard for multi-turn scans in Python; its third_party_scan can also run garak probes and DeepTeam attacks.

What this covers

Evals ask whether your app does the right thing. Red-teaming asks whether someone can make it do the wrong thing: leak a system prompt or PII, follow injected instructions, call a tool it shouldn't, or be talked out of its rules over several turns. All three tools here generate those attacks automatically, run them against your app, and grade the responses with an LLM judge. That last step means a "pass" is a model's opinion, so read the failing transcripts yourself.

For evals, tracing and CI quality gates, see Evaluate an AI agent and Agent observability platforms. For public capability scores, see Agent benchmarks.

How each one is wired

# DeepTeam, from its README: map an OWASP framework to vulnerabilities and attacks
from deepteam import red_team
from deepteam.frameworks import OWASPTop10

async def model_callback(input: str) -> str:
    return await my_agent(input)          # your app

risk_assessment = red_team(model_callback=model_callback, framework=OWASPTop10())
# Giskard v3, from the giskard-scan README
from giskard.scan import vulnerability_scan

result = await vulnerability_scan(
    target=my_agent,
    description="Customer support chatbot for an e-commerce store.",
    languages=["en"],
    max_scenarios=20,
)
# Promptfoo, adapted from its MCP security testing guide: attack an MCP server through a model client
targets:
  - id: openai:gpt-5
    config:
      mcp:
        enabled: true
        servers:
          - name: your-mcp-server
            url: https://your-mcp-server.example.com/mcp
redteam:
  purpose: A payment assistant that must enforce authorization on every tool call.
  plugins: [mcp, pii, bfla, bola, sql-injection]
  strategies: [multi-turn, jailbreak, jailbreak-templates]

What was tested

On 2026-10-21 we installed deepteam 1.0.10 and giskard[scan] 3.0.1 in a clean Python 3.13 virtualenv. The imports above resolved, deepteam --help listed run, scan and login, and list_scan_items("giskard") listed the scenario generators named in the table. We did not run any attacks, because every tool needs an LLM API key for generation and judging. Promptfoo 0.124.1 requires Node.js 22.22 or later, and the test box had Node.js 20, so its CLI was not run.

One finding from that install: deepteam 1.0.10 failed to import until sentry-sdk and posthog were installed by hand. Its telemetry module imports them, but the package does not list them as dependencies. If you get ModuleNotFoundError: No module named 'sentry_sdk', run pip install sentry-sdk posthog.

Agent-specific risks

Plain chatbots mostly risk saying something bad. Agents can do something bad, so check coverage for:

Red-teaming finds weaknesses; it doesn't fix them. Pair it with server-side controls such as audience-bound tokens and per-tool scopes on your MCP servers (Add OAuth authorization to your own MCP server) and with care about which servers you connect (Pick an MCP server).

Notes

Directory entries in this comparison

Related

Sources

Machine-readable