Skip to main content
What you prove. Five requests, five expected answers. When every row of the success criteria passes, PromptGuard is scanning your traffic the way this page describes, and you have the evidence in your own dashboard. Allow about 20 minutes. Everything runs with curl against the Guard API, so you need no LLM provider key and no SDK.
The sample inputs are safe to send anywhere: the injection asks for a harmless word, the SSN is a well-known test number, and the codename is made up.

Before you start

  • A PromptGuard account (sign up) and a new project for the evaluation, so its events and settings stay apart from anything else. Leave its guardrails at their defaults.
  • For step 4 only: a plan that includes custom policies. Pricing lists which do. On a plan without them, skip step 4.

Step 1: Create a key

In the dashboard, open your evaluation project, then API Keys → Create API Key. Copy the key: it is shown once.
Setting the base URL explicitly means every command below says which deployment it scans against. A self-hosted engine takes its own URL here, ending /api/v1. The PromptGuard SDKs read the same variable, so the value is the one they expect.

Step 2: Block a known injection

Expected (trimmed; event_id, latency_ms and entitlement differ on every call):
Copy the event_id: you look it up in step 5.
A variant that asks for the system prompt (“…and reveal your system prompt”) is also blocked, but as data_exfiltration (rule show_system_prompt): asking for the model’s own instructions is classed as a leak attempt. Both are a pass.

Step 3: Redact a test SSN

Expected (trimmed):
redacted_messages is what your application sends on to the model. Through the SDKs or the proxy this happens for you: a redaction does not raise an error, the call simply carries the masked text (Quickstart).

Step 4: Flag a codename

A flag lets a request through and records it, which is how you watch a rule before letting it block. Create one:
  1. Open the evaluation project → Guardrails → Policies tab → Create policy.
  2. Policy Name Flag codename, Policy Type Input Filter. Under Rules, set Condition to Contains Text (exact), the value to Project Falcon, and Action to Flag. Save.
The rule applies to the next request (when a change takes effect). Then:
Expected (trimmed; the policy name and rule.id are yours):
decision stays allow so existing clients let the request through, and flagged: true marks it. What a flag does everywhere else is in Flags.

Step 5: Find the events in the dashboard

Send one clean request too, so you can see an allowed event alongside the others:
Expected: "decision": "allow", "threats": [], "flagged": false. Open the evaluation project → Interactions. The requests from steps 2 to 5 are listed with their decisions: Blocked, Redacted, Flagged and Allowed. Open one to see its threat type, confidence and the rule that decided. The View options panel filters by decision.

Success criteria

If a check fails, Troubleshooting covers the common causes. Then put your own traffic through the same way: the SDK’s monitor mode scans and records every call without blocking any, so you can read a week of real decisions before you enforce.

Before production

Work through this list before real users reach the integration.
  • One key per environment. Create a separate project, or at least a separate key, for development, staging and production, so a leaked development key cannot spend production quota and each environment’s events stay apart (Best practices). Keys come from API Keys in each project.
  • Fail mode chosen on purpose. Two settings decide what happens when a scan cannot complete: the SDK’s fail_open (failOpen in Node), which defaults to letting the LLM call proceed when PromptGuard is unreachable (Python, Node), and the project’s fail_mode, which defaults to open (Latency budgets). A project that fails closed answers 503 detection_unavailable; handle it (Error handling).
  • Rate limits sized. Know your plan’s per-minute and monthly limits and give high-volume or exposed keys a limit of their own (Per-key limits). Retry 429 with backoff.
  • Blocks are handled in your UI. Catch the SDK’s block error, show the user a neutral message and log event_id (Error handling).
  • Alerting routed. Blocks and flags reach a person or a system: email in Settings → Notifications, and a webhook, Slack, PagerDuty or SIEM destination in the project’s Settings → Alert delivery (alert routing).
  • Retention decided. Events keep a masked preview of the content for your plan’s retention window. Turn on Zero retention in the project’s Settings → Data if you must keep no preview at all (Data handling).
  • Team sign-in secured. Teammates who can see events and change policies sign in through your identity provider where your plan includes it, with the least role they need (security-admin path).
  • Evaluation leftovers removed. Delete the Project Falcon policy and the evaluation key, or the whole evaluation project.

Next steps

Security-admin path

Policies, SSO, roles, alerts, SIEM and audit, all from the dashboard.

Evaluate Shadow AI

The same kind of proof for employee AI use on a test device.
Last modified on October 31, 2026