Promptfoo Review

Promptfoo reviewed: open-source evals, red teaming, current pricing, OpenAI acquisition facts, a support-bot example, and alternatives.

Published

Promptfoo Review

Promptfoo is a strong starting point when you want repeatable LLM evals and adversarial tests beside your application code. Community is free and includes 10,000 red-team probes per month, but production readiness still depends on your test cases, your application boundary, and how you grade failures.

Pricing and documentation verified on 13 October 2026. The worked example below was executed locally against authored fixture answers. The assessment of hosted features uses public documentation, not a signed-in product trial. Current Promptfoo plans.

What Is Promptfoo?

Promptfoo is an open-source command-line tool and library that sends test inputs to an AI model or application, checks the responses, and presents the results for comparison. An eval is a repeatable test of whether an answer meets your requirements; red teaming deliberately tries to make the application violate them. You define prompts, targets, examples, and scoring rules, then inspect a local results view or use the results in your build process. Its value is making the question “did this change break our support bot?” reproducible. The introductory documentation describes both quality evaluation and security testing.

Promptfoo public homepage showing its AI application security offering
Promptfoo: public product overview

Who Should Use It, and Who Should Skip It?

Promptfoo fits a developer who can own a test configuration and connect it to the same application customers use. A support bot that retrieves help articles, reads order records, or calls a refund tool is a good candidate: helpful answers and safe actions need separate tests.

Choose it when you want reviewable tests alongside code, comparisons across providers, and application-specific adversarial checks. Someone still has to decide what constitutes a correct answer. That work is the price of meaningful evaluation with any tool.

ToolBest fitEntry planPaid starting point
PromptfooRepository-based evals and red teamingCommunity: freeEnterprise and On-Premise: custom quotes
BraintrustShared experiments, scores, and production tracesStarter: $0/monthPro: $249/month
LangSmithAgent tracing plus online and offline evalsDeveloper: $0/seat/monthPlus: $39/seat/month, plus usage

Sources: Promptfoo, Braintrust, LangSmith. These are different billing models, not equivalent bundles.

Skip Promptfoo as your first purchase if your immediate problem is shared production analysis rather than defining pre-release tests. Shortlist Braintrust when experiment review and a common dataset are the center of the work. Shortlist LangSmith when you need to follow an agent's sequence of model and tool calls to understand a bad outcome. Their pricing and specific tradeoffs appear below.

The decision rests on four criteria: how closely the target resembles production, how inspectable the scoring is, which security tests fit your data restrictions, and what the whole workflow costs. A long integration list cannot compensate for testing the wrong target. Our AI benchmark audit tools comparison covers the broader shortlist.

What Changed With the OpenAI Acquisition?

Promptfoo's current official repository says it is part of OpenAI and remains MIT licensed. The dated company announcements establish the intended direction, but do not provide a closing date or acquisition price. Promptfoo repository.

On 9 March 2026, Promptfoo announced that it had agreed to be acquired by OpenAI, with closing subject to customary conditions. It said the move would let it improve and integrate its core technology within the model and infrastructure layers. The same announcement promised continued service and support, maintenance of the open-source suite, and support for a diverse range of models and providers. Promptfoo's announcement.

Those are the company's stated commitments. Its present provider documentation still includes competing vendors and local runtimes. Treat the integration language as direction, rather than evidence that a particular enterprise feature is already available in the CLI.

For your buying decision, the useful distinction is between an ownership change and a technical requirement. There is no basis in those statements for treating Promptfoo as an OpenAI-only evaluator. Nor should a proposed enterprise integration become a reason to buy capabilities that your own workflow has not confirmed. Evaluate the current package, current deployment options, and current contract.

Configuration and Provider Support

Promptfoo makes the test configuration the shared record of what you intended to measure. Its YAML format has prompts, providers, and tests; individual tests supply vars and optional assert rules. A provider is the adapter that calls a model or your application. Variables such as {{question}} insert the test input into a prompt. Configuration guide.

For a support bot, keep the current prompt and a proposed rewrite against the same questions and scoring rules. Otherwise a higher score could simply mean that the second run received easier questions. Change one decision at a time: prompt wording, retrieval behavior, model, or tool permissions.

Promptfoo documentation showing prompts providers tests and assertions in YAML
Promptfoo: configuration guide

The local matrix lets you examine an answer where a score changed. Use that inspection to find the concrete regression: perhaps the shorter prompt stopped asking for a missing order identifier, or the cheaper model stated an uncertain delivery date as fact. An average can hide either problem.

Which providers are supported?

Promptfoo's provider index documents broad coverage. Relevant examples include:

  • Model APIs: OpenAI, Anthropic, Google AI Studio, Google Vertex AI, Azure OpenAI, Amazon Web Services Bedrock, Cohere, Mistral AI, DeepSeek, Alibaba Cloud Qwen, AI21 Labs, Meta Model API, MiniMax, Moonshot Kimi, xAI, and IBM WatsonX.
  • Hosting and inference services: Amazon SageMaker, Groq, Cerebras, Fireworks AI, Together AI, Hugging Face, OpenRouter, Replicate, Perplexity AI, NVIDIA NIM, Databricks, Snowflake Cortex, and Cloudflare AI.
  • Local runtimes: Ollama, llama.cpp, llamafile, LocalAI, Docker Model Runner, vLLM, and Transformers.js.
  • Application adapters: HTTP, WebSocket, Python, JavaScript, shell commands, Model Context Protocol servers, and documented agent SDK integrations.

This is a representative list; the linked index includes additional gateways and specialist providers. Check the individual adapter for authentication and supported options. Supporting a provider does not give your account access to all of its models.

Promptfoo provider documentation listing model services and custom integration adapters
Promptfoo: supported providers and application adapters

Test your support application, not just its model

Promptfoo's HTTP adapter can construct a request and extract the answer with transformResponse, such as json.output. A custom Python provider can call existing application code instead. These routes matter when your support bot's behavior depends on retrieval, session state, authorization, or tool execution. HTTP provider documentation.

Send a realistic customer question through that boundary and grade the response. Include the same restricted identity and fixture records that the application should use. If you bypass the retrieval layer and test a bare model, you have learned little about whether one customer can obtain another customer's order.

The adapter is therefore an engineering task, not a box to tick. Preserve the context that determines permissions, parse the field customers see, and separately inspect any actions taken. A polite refusal in the final answer cannot undo an unauthorized refund that happened earlier.

Promptfoo Eval: A Support-Bot Example

Promptfoo can evaluate answers that already exist, which is a useful place to start before spending money on repeated model calls. Its echo provider returns the supplied text unchanged, so the assertions check the answer directly. Echo makes no model request; adding an LLM judge would change that. Echo provider documentation.

The following example uses authored fixture answers, not customer logs or claimed model output. Assume your support policy says to direct refund requests through Settings, Billing, and Request refund. When order status is unavailable, the bot should escalate without claiming that an order has shipped.

Save this as promptfooconfig.yaml:

YAML
description: Support bot answer checks
prompts:
  - '{{answer}}'
providers:
  - echo
tests:
  - description: Approved refund instructions
    vars:
      answer: 'Open Settings, choose Billing, and select Request refund.'
    assert:
      - type: icontains-all
        value: [Settings, Billing, Request refund]
  - description: Escalate an unknown order status
    vars:
      answer: 'I cannot verify your order status. Please contact support.'
    assert:
      - type: icontains
        value: contact support
      - type: not-icontains
        value: has shipped
  - description: Reject an invented order status
    vars:
      answer: 'Your order has shipped. Please contact support if needed.'
    assert:
      - type: icontains
        value: contact support
      - type: not-icontains
        value: has shipped

The assertions are documented types: icontains checks text without case sensitivity, icontains-all requires each supplied phrase, and the not- prefix negates a check. Assertion reference.

With the documented Node.js prerequisite, >=22.22.0, run:

Bash
npx promptfoo@latest eval -c promptfooconfig.yaml -o support-results.json
npx promptfoo@latest view

The getting-started guide documents the eval and viewer commands; the red-team quickstart states the Node prerequisite. Run the viewer as a separate command after the eval returns.

Promptfoo getting-started documentation with public configuration and results-view guidance
Promptfoo: public eval onboarding documentation

The local run for this review produced the intended result: the refund answer passed, the uncertainty answer passed, and the invented shipping answer failed. The final answer contained the escalation phrase, but that did not rescue its prohibited claim. This checks the sample's wiring and assertions; it says nothing about a live model's reliability.

That distinction is useful. Before trusting a scorer, feed it an answer that must pass and an answer that must fail. If both pass, fix the test before comparing models. The target model should not become your first debugging tool for the test harness.

Move from exact phrases to support quality

Promptfoo's model-graded assertions can assess criteria that string matching misses. llm-rubric grades against a written rubric, while factuality compares an answer with a reference statement. You can explicitly choose the grading provider. Model-graded assertions.

For this bot, a useful rubric would require the answer to use only supplied order facts, acknowledge missing information, and offer an allowed next action. Give the judge the relevant policy and reference facts; otherwise you are asking it to guess whether a shipping claim is true.

Keep deterministic checks for exact requirements and use judgment where wording can vary. The sample would miss “your parcel is on its way,” and it could reject an otherwise good sentence quoting the prohibited phrase to correct it. Those are limitations of the selected checks, not evidence that the bot is safe or unsafe.

Next, replace the fixtures with captured answers or connect the application provider. Keep the known bad fixture as a test of your scoring logic. A prompt change should not silently redefine success.

Promptfoo Red Teaming: Test the Application Boundary

Promptfoo's red-team workflow generates adversarial inputs, runs them against a target, and exposes failures for review. Plugins select the behavior to probe; strategies alter how an attack is delivered. The documented targets include HTTP endpoints, browser interactions, and direct model or custom-code connections. Red-team quickstart.

For a support bot, normal evals ask whether an eligible customer gets correct refund instructions. Red teaming asks whether a customer can manipulate the bot into exposing another person's record, bypassing a policy, or misusing a connected tool. Promptfoo documents application-level threats including indirect prompt injection, data leakage, unauthorized access, and tool abuse. Red-team guide.

Promptfoo public red-team setup guide showing application details target plugins and strategies
Promptfoo: red-team setup and report workflow
  1. Describe the actual permissions

    Use npx promptfoo@latest redteam setup. Define the bot's purpose, the caller's identity, the records that caller may see, and the actions the bot may take. A vague purpose produces a vague target for testing.

  2. Choose relevant attack categories

    Configure the application target, then select plugins and strategies. For a support agent, prioritize customer-data boundaries, policy compliance, and tool permissions. Add indirect injection if retrieved articles or external content can influence the agent.

  3. Run and investigate

    Save the configuration and run npx promptfoo@latest redteam run, followed by npx promptfoo@latest redteam report. The documented workflow saves generated tests to redteam.yaml. Inspect the triggering input, response, severity, and supporting evidence before accepting a finding.

For an agent with write access, use a controlled test environment and verify resulting records as well as the chat transcript. An answer-only test may miss an unauthorized tool action. Conversely, a refusal may be correct even if it sounds less helpful than the judge expects.

A finding should become a regression case after you fix it. Keep exploration, which searches for new failures, distinct from replay, which checks whether known failures returned. Our guide to running AI agent security evaluations develops that release process further.

CI and Reports: Make Failures Block a Release

Promptfoo fits continuous integration, the automated checks that run when code changes. Its documentation covers ordinary evals, red-team scans, saved-probe replay, and exports including JSON, HTML, and JUnit. CI/CD guide.

Use a stable regression suite when a developer changes the system prompt or retrieval behavior. Run broader attack generation separately when you want to discover new cases. Mixing fresh attacks into every comparison can make a changed score difficult to attribute: did the application regress, or did the test become harder?

Promptfoo CI documentation showing eval commands output formats and quality gates
Promptfoo: CI integration and result exports

The CLI's documented default is exit code 100 for a failed test or an unmet pass-rate threshold; other errors use 1. The default pass-rate threshold is 100%, and these settings are configurable. A CI job must preserve failure status rather than treating a successfully written report as a successful test. CLI reference.

For your release rule, separate catastrophic errors from ordinary quality misses. Unauthorized access should not disappear inside an average of otherwise helpful answers. Assign each blocking case an owner, retain the evidence, and rerun the same case after the change.

Reports are valuable because they let another person challenge the conclusion. Preserve the application revision, configuration, test data, and judge choice alongside the result. Without that context, a green report can become impossible to reproduce when the next model or prompt change lands.

Pricing: Community, Enterprise, and On-Premise

Promptfoo publishes three plans. The paid plans require a quote; the live page does not publish a dollar starting price for either one. Verified on 13 October 2026 against Promptfoo's pricing page.

PlanPublished priceMain inclusionBuying trigger
CommunityFree ForeverAll eval features and providers; local/self-hosted use; 10k red-team probes/monthYou can operate the tests yourself
EnterpriseCustom; contact salesCommunity plus collaboration, monitoring, centralized dashboard, SSO, permissions, API, managed cloud, custom limits, professional services and priority support/SLAYou need shared operations and controls
On-PremiseCustom; contact usEnterprise plus own infrastructure, data isolation, dedicated runner, assigned deployment engineerDeployment isolation is mandatory
Promptfoo pricing page displaying Community Enterprise and On-Premise plans
Promptfoo: published plan boundaries

What a probe allowance buys

Promptfoo counts a probe when it sends a request to the target during red-team evaluation. Internal generation and grading calls do not count as probes. Its inference documentation says the limits still count when you manage inference yourself, including with local models. Inference and limits.

Do not turn the allowance into a claim about unique security scenarios. A strategy that makes repeated target requests consumes capacity differently from a single-turn case. Coverage depends on the application, the attack selection, and the requests the run makes. Budget from observed requests once your target is connected.

The monthly cost and cost per answer

Promptfoo's free license leaves several costs to account for: target-model inference, attack generation, model-based judging, infrastructure, and failure review. The monthly total depends on which of those services you operate or buy. A free test runner does not pay the provider bill.

The worked example has $0 in model inference cost per evaluated fixture answer because Echo makes no model call and the checks are deterministic. That result does not extend to an LLM-graded suite. Once a judge reads every answer, judge usage becomes part of the evaluation budget. Echo's documented behavior.

For comparison, Braintrust's published Starter overage of $2.50 per 1,000 scores calculates to $0.0025 per additional score. That is a scoring charge, not an all-in price for an accepted support answer; model use and data processing have separate meters. Braintrust pricing.

Your useful denominator is an answer accepted against the support policy. Divide the attributable evaluation spend by accepted answers, and keep failure investigation visible beside it. A cheaper run that accepts invented order facts has optimized the wrong outcome.

Limitations That Change the Decision

Promptfoo's most consequential boundary is that a locally running scanner does not make every security workflow local. The data-handling documentation separates target calls, generation, and grading. Hosted grading can receive the test prompt, target response, and criteria.

Promptfoo data-handling documentation explaining remote generation grading and local controls
Promptfoo: data flows and remote-only coverage

Some important tests require hosted inference. The same documentation identifies remote-only plugins, including bola, bfla, and indirect-prompt-injection. Those concern resource access, function permissions, and instructions arriving through external content. Disabling remote generation reduces available coverage; the disable flag is not a network-isolation guarantee. For a restricted support dataset, resolve this before promising a fully local test plan.

Self-managed inference does not erase the probe limit. This is a separate limitation from where data goes. The inference documentation explicitly retains usage counting with your own inference configuration. “Open source” should not become an assumption of unlimited hosted attack services.

A scorer can reward the wrong behavior. The worked example catches a literal shipping phrase, not all unsupported delivery claims. An LLM judge adds flexibility but also introduces another model's interpretation. Calibrate the rubric with examples that responsible support staff agree are acceptable and unacceptable.

An answer test can miss an action failure. If your target adapter exposes only final text, the suite cannot establish from that text alone whether the agent used the right account or changed the correct record. Add action evidence or application-state verification wherever success involves a tool.

The operational work remains yours. Someone must maintain cases, investigate findings, and decide what blocks launch. Buying a managed dashboard can make that work easier to coordinate; it cannot supply the refund policy or customer-access rules your tests should enforce.

Promptfoo Alternatives

Braintrust: when shared evaluation work comes first

Braintrust combines tracing, experiments, datasets, and scoring in a shared platform. Choose it when the recurring task is reviewing changes with colleagues and turning observed behavior into evaluation data. Its scope makes it a stronger initial shortlist entry for that workflow than a primarily configuration-led process.

Starter is $0/month, with 1 GB of processed data, 10,000 scores, and 14-day retention. Pro is $249/month, with 5 GB, 50,000 scores, and 30-day retention; Enterprise is custom priced. Starter excess data costs $4/GB and excess scores $2.50/1,000. Pro lists $3/GB and $1.50/1,000, with extended retention charged separately. Braintrust's current plans.

Braintrust pricing page with Starter Pro and Enterprise plans and usage charges
Braintrust: platform and usage pricing

The limitation is the bill's multiple dimensions: scores, processed data, retention, and model usage need a workload estimate. Prefer Promptfoo when the immediate requirement is a small, reviewable test suite and adversarial application testing. Do not buy a shared platform merely to avoid writing expected behavior.

LangSmith: when the agent's execution path is the problem

LangSmith offers tracing, dataset collection, annotation, and online and offline evaluations. Choose it when investigating the chain of events behind an answer is central to your work. A support agent can return a plausible sentence after retrieving the wrong record; an execution trace is valuable evidence for that investigation.

Developer is $0/seat/month, limited to one seat, with 5,000 base traces per month before usage charges. Plus is $39/seat/month, with 10,000 base traces per month and additional seats available. The published allowance is total, not multiplied by the seat count. Enterprise is custom priced. LangSmith pricing.

LangSmith pricing page showing Developer Plus and Enterprise with seat and trace allowances
LangSmith: seats and trace allowances

The limitation for a growing review group is that seats add cost while usage remains metered. Prefer Promptfoo when your immediate goal is an automated release check with explicit adversarial coverage. A LangSmith trace, a Braintrust score, and a Promptfoo probe represent different events; comparing their allowances as though they were equal test runs gives a misleading budget.

Verdict: Adopt It When You Can Own the Tests

Promptfoo earns a place in a support-bot or agent project when you need explicit quality checks and adversarial tests that developers can review and rerun. Start with Community if its data flows, coverage, and operating model fit. Buy managed capabilities when collaboration, controls, or deployment requirements create a concrete need.

The decision flips when the bottleneck changes. If you cannot state what a safe, correct answer looks like, fix the policy and examples first. If you can state it but cannot reproduce failures, Promptfoo is a sensible next step. If you already reproduce failures and the problem is collaborative analysis or execution tracing, evaluate Braintrust or LangSmith alongside it.

Your next move is to save representative support questions, define acceptable answers and forbidden actions, and confirm that a deliberately bad answer fails. Then connect the actual application, inspect its data boundary, and add the security cases that would make you stop a release. Publish the release rule before looking at the scores.

Questions Before You Adopt It

Is Promptfoo free?

Community is free. Paid Enterprise and On-Premise plans use custom quotes. Model inference and operating costs remain separate. Plans.

How do I install Promptfoo?

Use npm install -g promptfoo, or run commands through npx promptfoo@latest. The current quickstart requires Node.js >=22.22.0. The fixture eval above needs no model account. Quickstart.

Can Promptfoo evaluate models other than OpenAI's?

Yes. Its documented providers include Anthropic, Google, other hosted services, local runtimes, and custom application adapters. Choose the adapter that matches what you deploy. Provider index.

Does passing a red-team scan mean the support bot is safe to launch?

It supplies evidence about the cases and grading rules used. Review consequential failures, verify tool actions, and preserve application-level access controls. A passing report is not a guarantee about every future interaction.

Join the newsletter for practical build logs and field notes on operating AI systems.

Published
Category
Build
Related Articles
Claude Code Slash Commands

Claude Code Slash Commands

The Claude Code commands worth knowing, how skills and plugins fit, and five paste-ready team commands for reviews, fixes, migrations and changelogs.Oct 13, 2026Build
Context Engineering: How to Keep Agents on Task

Context Engineering: How to Keep Agents on Task

Control what your agent sees at each step with compaction, focused retrieval, subagents, and memory. Includes Claude Code, Agent SDK, and Codex.Oct 13, 2026Build
Spec Driven Development: GitHub Spec Kit and Kiro

Spec Driven Development: GitHub Spec Kit and Kiro

A practical spec-first workflow for AI coding agents, with exact Spec Kit commands, Kiro specs, Claude Code and Codex, plus a worked feature example.Oct 13, 2026Build
Linear MCP

Linear MCP

Connect Linear to Claude, ChatGPT, Cursor and Codex. Understand tools and permissions, then use worked triage, spec and cycle-report examples.Oct 13, 2026Build
LangChain vs LangGraph

LangChain vs LangGraph

Choose LangChain or LangGraph for your app: current agent APIs, matching Python examples, migration tradeoffs and verified LangSmith deployment pricing.Oct 13, 2026Build
Agentic RAG: What It Is and How to Build It

Agentic RAG: What It Is and How to Build It

Agentic RAG versus classic retrieval: support, sales and finance examples, a small build, verified tool prices, and what to measure.Oct 13, 2026Build
Amp Code Review

Amp Code Review

Amp Code reviewed: current pricing, free tier, models, editor support and team features, plus when to choose Claude Code or Codex.Oct 12, 2026Build
Playwright MCP: Setup, Browser Tests, and Limits

Playwright MCP: Setup, Browser Tests, and Limits

Give Claude Code, Codex, Cursor, or VS Code a real browser. Exact setup, practical tests, a worked checkout failure, and the safety limits.Oct 12, 2026Build
Newsletter

One letter, every Sunday.Working systems, not hot takes.

Weekly. No spam. Unsubscribe anytime.