Back to .md Directory

Guardrails - Safety & Compliance Layer

Documents a pluggable safety layer that intercepts LLM requests to rate-limit, block patterns, and redact PII.

May 2, 2026
0 downloads
3 views
ai llm prompt guardrails safety
View source

What this file does

Documents a pluggable safety layer that intercepts LLM requests to rate-limit, block patterns, and redact PII.

When to use it

  • You need to prevent API abuse with rate limits
  • You must redact PII before sending prompts to an LLM
  • You want to block sensitive keywords or regex patterns
  • You need to cap token usage for cost control

Guardrails - Safety & Compliance Layer

<p align="center"> <img src="../assets/docs-guardrails.jpg" alt="Guardrails - security duck checkpoint" width="600"> </p>

Guardrails provide a pluggable safety and compliance layer that intercepts LLM requests and responses. Protect against rate abuse, limit token usage, block sensitive patterns, and automatically redact PII.

Quick Setup

# Enable guardrails with PII protection
GUARDRAILS_ENABLED="true"
GUARDRAILS_PII_REDACTOR_ENABLED="true"
GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="mycompany.com"

Global Settings

VariableTypeDefaultDescription
GUARDRAILS_ENABLEDbooleanfalseMaster switch for guardrails system
GUARDRAILS_LOG_VIOLATIONSbooleantrueLog when guardrails detect violations
GUARDRAILS_LOG_MODIFICATIONSbooleanfalseLog when guardrails modify content
GUARDRAILS_FAIL_OPENbooleanfalseIf true, allow requests when guardrails error; if false, block on error

Rate Limiter

Prevent API abuse by limiting request frequency.

GUARDRAILS_RATE_LIMITER_ENABLED="true"
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE="60"
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR="500"
GUARDRAILS_RATE_LIMITER_PER_PROVIDER="true"      # Track limits per provider
GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCE="5"      # Extra requests for short bursts
VariableTypeDefaultDescription
GUARDRAILS_RATE_LIMITER_ENABLEDbooleanfalseEnable rate limiting
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTEnumber60Max requests per minute
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOURnumber1000Max requests per hour
GUARDRAILS_RATE_LIMITER_PER_PROVIDERbooleanfalseTrack limits per provider vs global
GUARDRAILS_RATE_LIMITER_BURST_ALLOWANCEnumber5Extra requests allowed for bursts

Token Limiter

Control token usage for cost management.

GUARDRAILS_TOKEN_LIMITER_ENABLED="true"
GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS="100000"
GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS="16000"
GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGE="80"
VariableTypeDefaultDescription
GUARDRAILS_TOKEN_LIMITER_ENABLEDbooleanfalseEnable token limiting
GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENSnumber8192Max tokens in input prompt
GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENSnumber-Max tokens in response
GUARDRAILS_TOKEN_LIMITER_WARN_AT_PERCENTAGEnumber80Warn when usage hits this %

Pattern Blocker

Block or redact sensitive patterns in requests.

GUARDRAILS_PATTERN_BLOCKER_ENABLED="true"
GUARDRAILS_PATTERN_BLOCKER_PATTERNS="confidential,internal-only"
GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEX="secret-\\d{4}"
GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVE="false"
GUARDRAILS_PATTERN_BLOCKER_ACTION="block"        # block, warn, or redact
VariableTypeDefaultDescription
GUARDRAILS_PATTERN_BLOCKER_ENABLEDbooleanfalseEnable pattern blocking
GUARDRAILS_PATTERN_BLOCKER_PATTERNSstring-Comma-separated literal patterns
GUARDRAILS_PATTERN_BLOCKER_PATTERNS_REGEXstring-Comma-separated regex patterns
GUARDRAILS_PATTERN_BLOCKER_CASE_SENSITIVEbooleanfalseCase-sensitive matching
GUARDRAILS_PATTERN_BLOCKER_ACTIONstringblockAction: block, warn, or redact

PII Redactor

Automatically detect and redact personally identifiable information.

GUARDRAILS_PII_REDACTOR_ENABLED="true"
GUARDRAILS_PII_REDACTOR_DETECT_EMAILS="true"
GUARDRAILS_PII_REDACTOR_DETECT_PHONES="true"
GUARDRAILS_PII_REDACTOR_DETECT_SSN="true"
GUARDRAILS_PII_REDACTOR_DETECT_API_KEYS="true"
GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDS="true"
GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSES="true"
GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="gmail.com,company.com"
GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE="true"
VariableTypeDefaultDescription
GUARDRAILS_PII_REDACTOR_ENABLEDbooleanfalseEnable PII detection/redaction
GUARDRAILS_PII_REDACTOR_DETECT_EMAILSbooleantrueDetect email addresses
GUARDRAILS_PII_REDACTOR_DETECT_PHONESbooleantrueDetect phone numbers
GUARDRAILS_PII_REDACTOR_DETECT_SSNbooleantrueDetect US Social Security Numbers
GUARDRAILS_PII_REDACTOR_DETECT_API_KEYSbooleantrueDetect API keys (sk-, gsk_, etc.)
GUARDRAILS_PII_REDACTOR_DETECT_CREDIT_CARDSbooleantrueDetect credit card numbers
GUARDRAILS_PII_REDACTOR_DETECT_IP_ADDRESSESbooleanfalseDetect IPv4 addresses
GUARDRAILS_PII_REDACTOR_ALLOWLISTstring-Comma-separated exact values to skip
GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINSstring-Comma-separated email domains to skip
GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSEbooleanfalseRestore original PII in responses
GUARDRAILS_PII_REDACTOR_LOG_DETECTIONSbooleantrueLog when PII is detected

How PII Redaction Works:

  1. User sends: "Contact john@secret.com for details"
  2. Pre-request: Redacted to "Contact [EMAIL_1] for details"
  3. LLM processes the redacted text
  4. Post-response: If restore_on_response=true, [EMAIL_1] -> john@secret.com

Example: Full Production Config

# Enable guardrails
GUARDRAILS_ENABLED="true"
GUARDRAILS_LOG_VIOLATIONS="true"

# Rate limiting
GUARDRAILS_RATE_LIMITER_ENABLED="true"
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_MINUTE="60"
GUARDRAILS_RATE_LIMITER_REQUESTS_PER_HOUR="500"

# Token limits
GUARDRAILS_TOKEN_LIMITER_ENABLED="true"
GUARDRAILS_TOKEN_LIMITER_MAX_INPUT_TOKENS="100000"
GUARDRAILS_TOKEN_LIMITER_MAX_OUTPUT_TOKENS="16000"

# Block sensitive patterns
GUARDRAILS_PATTERN_BLOCKER_ENABLED="true"
GUARDRAILS_PATTERN_BLOCKER_PATTERNS="confidential,internal-only"
GUARDRAILS_PATTERN_BLOCKER_ACTION="warn"

# PII protection
GUARDRAILS_PII_REDACTOR_ENABLED="true"
GUARDRAILS_PII_REDACTOR_ALLOWLIST_DOMAINS="gmail.com,company.com"
GUARDRAILS_PII_REDACTOR_RESTORE_ON_RESPONSE="true"

Guardrail Phases

Guardrails intercept at multiple points in the request lifecycle:

PhaseDescriptionPlugins
pre_requestBefore sending to LLMRate limiter, Token limiter, Pattern blocker, PII redactor
post_responseAfter receiving from LLMToken limiter, PII redactor (restore)
pre_tool_inputBefore MCP tool executionPII redactor
post_tool_outputAfter MCP tool returnsPII redactor (restore)

What's inside

5 guardrail modules (global, rate, token, pattern, PII) with env vars, defaults, and a lifecycle phase table.

Change this for your project

  • Replace mycompany.com with your own allowed email domain
  • Replace gmail.com,company.com with your own allowlisted domains
  • Replace confidential,internal-only with your own blocked patterns

Where it goes

Load as policy context for the agent, or keep beside the code enforcing the rules.

Worth borrowing

  • PII redaction with reversible placeholders for safe LLM processing
  • Fail-open toggle to decide behavior when guardrails error

Related Documents