Claim Vocabulary Reference
This document defines the standard claim names and types produced by all Lucid ClaimsAuditors. These claim names are used in Cedar policies via context.claims.<claim_name>.
Naming Convention
Claim names use flat, descriptive names with no dots:
<descriptive_name>
Examples: injection_risk, pii_found, toxic_content
In Cedar policies: context.claims.injection_risk.
Claim Types
| Type | Description | Value Range | Cedar Type |
|---|---|---|---|
number |
Numeric score | 0.0 to 1.0 (normalized) or raw | Long (scaled) |
boolean |
True/false | true / false |
Bool |
string |
String value | Any string | String |
string[] |
List of strings | ["a", "b"] |
Set<String> |
LLM Judge Auditor
Detects prompt injection, toxic content, PII, and output quality issues.
Security claims (from scan_security)
| Claim | Type | Description | Phase |
|---|---|---|---|
injection_risk |
number 0-1 | Prompt injection risk score | request |
secret_leaked |
boolean | Credentials or secrets detected | request |
invisible_chars |
boolean | Hidden zero-width Unicode characters detected | request |
regex_matched |
boolean | Custom blocked pattern matched | request |
Content policy claims (from scan_content)
| Claim | Type | Description | Phase |
|---|---|---|---|
toxic_content |
number 0-1 | Toxicity score (0 = safe, 1 = toxic) | request, response |
banned_topic |
boolean | Forbidden topic discussed | request |
banned_phrase |
boolean | Blocked phrase detected | request |
competitor_mentioned |
boolean | Competitor name referenced | request |
negative_emotion |
boolean | Angry, threatening, or distressed tone | request |
language_allowed |
boolean | Content is in an approved language | request |
language_detected |
string | Detected language code | request |
sentiment |
number 0-1 | Sentiment score (0 = negative, 1 = positive) | request |
Input quality claims (from scan_quality)
| Claim | Type | Description | Phase |
|---|---|---|---|
pii_found |
boolean | Personal information detected | request |
code_detected |
boolean | Source code present in input | request |
gibberish |
boolean | Nonsense or garbled text | request |
token_limit_exceeded |
boolean | Input exceeds max token limit | request |
Output quality claims (from scan_output)
| Claim | Type | Description | Phase |
|---|---|---|---|
bias_detected |
number 0-1 | Output bias score | response |
factual_consistency |
number 0-1 | Grounded in input (0 = not, 1 = fully) | response |
malicious_url |
boolean | Phishing or malicious links detected | response |
response_relevant |
number 0-1 | Response relevance to query | response |
language_same |
boolean | Response in same language as input | response |
json_valid |
boolean | JSON output is well-formed | response |
response_refused |
boolean | Model refused to answer | response |
Cedar Examples
// Block high injection risk
forbid(principal, action == Action::"invoke", resource)
when { context.claims.injection_risk > 0.7 };
// Block toxic content
forbid(principal, action == Action::"invoke", resource)
when { context.claims.toxic_content > 0.7 };
// Warn on moderate toxicity
@annotation("decision", "warn")
forbid(principal, action == Action::"invoke", resource)
when {
context.claims.toxic_content > 0.4 &&
context.claims.toxic_content <= 0.7
};
PII Compliance Auditor
Detects personally identifiable information and credentials using Presidio and detect-secrets.
| Claim | Type | Description | Phase |
|---|---|---|---|
pii_found |
boolean | Personal data detected | request, response |
pii_types |
string[] | PII entity types found (e.g., ["US_SSN", "EMAIL_ADDRESS"]) | request, response |
pii_count |
number | Number of PII entities found | request, response |
pii_risk_score |
number 0-1 | Severity-weighted PII exposure score | request, response |
redaction_applied |
boolean | PII successfully redacted | response |
cross_border_transfer |
boolean | Data leaving its jurisdiction | request |
Cedar Examples
// Block any PII exposure
forbid(principal, action == Action::"invoke", resource)
when { context.claims.pii_found == true }
unless { resource.has_pii_access == true };
// Block high-risk PII
forbid(principal, action == Action::"invoke", resource)
when { context.claims.pii_risk_score > 0.8 };
// Block secrets
forbid(principal, action == Action::"invoke", resource)
when { context.claims.secret_leaked == true };
Sovereignty Auditor
Data sovereignty verification via location attestation.
| Claim | Type | Description | Phase |
|---|---|---|---|
detected_regions |
string[] | Regions where processing was detected | request |
location_confidence |
number 0-1 | Confidence in location determination | request |
encryption_protocol |
string | Encryption protocol in use | request |
Cedar Examples
// Require EU processing for GDPR
forbid(principal, action == Action::"invoke", resource)
when { !("EU" in context.claims.detected_regions) };
// Require high location confidence
forbid(principal, action == Action::"invoke", resource)
when { context.claims.location_confidence < 0.9 };
Governance Auditor
Agentic workflow governance: rate limits, tool control, budget enforcement, and human-in-the-loop.
| Claim | Type | Description | Phase |
|---|---|---|---|
rate_limited |
boolean | Rate limit exceeded | request |
tool_denied |
boolean | Tool on blocklist | request |
dangerous_tool |
boolean | Dangerous tool (shell, delete, eval) | request |
dangerous_params |
boolean | Parameters contain injection patterns | request |
tool_count |
number | Tool calls this session | request |
network_allowed |
boolean | URL on approved list | request |
file_path_allowed |
boolean | File path on approved list | request |
budget_exceeded |
boolean | Cost/token budget exceeded | request |
loop_exceeded |
boolean | Agentic loop hit iteration/time limit | request |
exfiltration_detected |
boolean | Agent leaking secrets | response |
requires_human_approval |
boolean | Action needs human sign-off | request |
action_approved |
boolean | Shell/browser action is safe | request |
action_risk |
number 0-1 | Action risk score | request |
Cedar Examples
// Block rate-limited requests
forbid(principal, action == Action::"invoke", resource)
when { context.claims.rate_limited == true };
// Block dangerous tools
forbid(principal, action == Action::"invoke", resource)
when { context.claims.dangerous_tool == true };
// Escalate for human approval
@annotation("decision", "escalate")
forbid(principal, action == Action::"invoke", resource)
when { context.claims.requires_human_approval == true };
Fairness Auditor
Bias detection and fairness evaluation using Fairlearn.
| Claim | Type | Description | Phase |
|---|---|---|---|
demographic_parity_diff |
number 0-1 | Selection rate disparity across groups | response |
demographic_parity_ratio |
number 0-1 | 4/5ths rule ratio | response |
equalized_odds_diff |
number 0-1 | Error rate disparity across groups | response |
equal_opportunity_diff |
number 0-1 | True positive rate disparity | response |
stereotype_detected |
boolean | Stereotypical content found | response |
Cedar Examples
// Block if disparate impact (4/5ths rule)
forbid(principal, action == Action::"invoke", resource)
when { context.claims.demographic_parity_ratio < 0.8 };
// Warn on stereotype detection
@annotation("decision", "warn")
forbid(principal, action == Action::"invoke", resource)
when { context.claims.stereotype_detected == true };
Eval Auditor
Pre-deployment safety benchmarks using UK AISI Inspect framework.
| Claim | Type | Description | Phase |
|---|---|---|---|
dangerous_knowledge |
number 0-1 | Aggregate dangerous capability score (lower = safer) | artifact |
dangerous_knowledge_bio |
number 0-1 | Bioweapons knowledge score | artifact |
dangerous_knowledge_cyber |
number 0-1 | Cyberattack knowledge score | artifact |
dangerous_knowledge_chem |
number 0-1 | Chemical weapons knowledge score | artifact |
truthfulness |
number 0-1 | Aggregate truthfulness (higher = better) | artifact |
truthfulness_mc1 |
number 0-1 | Single-best-answer truthfulness | artifact |
truthfulness_mc2 |
number 0-1 | Multi-answer truthfulness | artifact |
commonsense |
number 0-1 | Common reasoning ability | artifact |
factual_knowledge |
number 0-1 | Factual accuracy (MMLU) | artifact |
safety_score |
number 0-1 | Weighted aggregate safety score | artifact |
regression_detected |
boolean | Model worse than baseline | artifact |
required_benchmarks_complete |
boolean | All mandatory benchmarks run | artifact |
Cedar Examples
// Block deployment if dangerous knowledge too high
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.dangerous_knowledge > 0.15
};
// Block if safety score too low
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.safety_score < 0.85
};
Red Team Auditor
Pre-deployment adversarial evaluation.
| Claim | Type | Description | Phase |
|---|---|---|---|
jailbreak_resistance |
number 0-1 | Resistance to jailbreak attacks | artifact |
injection_resistance |
number 0-1 | Resistance to instruction injection | artifact |
data_leak_resistance |
number 0-1 | Resistance to training data extraction | artifact |
toxicity_resistance |
number 0-1 | Resistance to eliciting toxic output | artifact |
malware_resistance |
number 0-1 | Resistance to malware generation | artifact |
hallucination_resistance |
number 0-1 | Resistance to confabulation under pressure | artifact |
encoding_resistance |
number 0-1 | Resistance to encoding bypass tricks | artifact |
attack_success_rate |
number 0-1 | Overall attack success fraction | artifact |
critical_vulnerabilities |
number | Count of critical (DEFCON 1-2) findings | artifact |
high_vulnerabilities |
number | Count of high (DEFCON 3) findings | artifact |
categories_failed |
string[] | Attack categories that succeeded | artifact |
sleeper_detected |
boolean | Hidden trigger behavior found | artifact |
Cedar Examples
// Block if critical vulnerabilities found
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.critical_vulnerabilities > 0
};
// Block if jailbreak resistance too low
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.jailbreak_resistance < 0.9
};
RAG Quality Auditor
Retrieval-augmented generation quality evaluation.
Runtime metrics (no reference needed)
| Claim | Type | Description | Phase |
|---|---|---|---|
faithfulness |
number 0-1 | Answer grounded in sources | response |
answer_relevancy |
number 0-1 | Answer addresses the question | response |
context_precision |
number 0-1 | Retrieved chunks are useful | response |
noise_sensitivity |
number 0-1 | Affected by irrelevant context | response |
Reference metrics (need ground truth)
| Claim | Type | Description | Phase |
|---|---|---|---|
context_recall |
number 0-1 | Retrieval found relevant passages | response |
factual_correctness |
number 0-1 | Facts are correct | response |
semantic_similarity |
number 0-1 | Meaning matches reference answer | response |
Structural claims
| Claim | Type | Description | Phase |
|---|---|---|---|
context_available |
boolean | Sources were provided | response |
citation_accuracy |
boolean | Citations are real, not fabricated | response |
Cedar Examples
// Warn on low faithfulness
@annotation("decision", "warn")
forbid(principal, action == Action::"invoke", resource)
when { context.claims.faithfulness < 0.7 };
// Block fabricated citations
forbid(principal, action == Action::"invoke", resource)
when { context.claims.citation_accuracy == false };
Watermark Auditor
LLM token watermarking and C2PA manifests for AI provenance.
| Claim | Type | Description | Phase |
|---|---|---|---|
watermark_applied |
boolean | Content was watermarked | response |
watermark_detected |
boolean | Watermark found in content | response |
watermark_confidence |
number 0-1 | Detection confidence | response |
manifest_valid |
boolean | C2PA manifest intact and unmodified | response |
tampering_detected |
boolean | Watermark removed or altered | response |
Cedar Examples
// Require watermarking on all outputs
forbid(principal, action == Action::"invoke", resource)
when { context.claims.watermark_applied != true };
// Block tampered content
forbid(principal, action == Action::"invoke", resource)
when { context.claims.tampering_detected == true };
Model Security Auditor
Model artifact scanning for unsafe formats, dangerous code, and supply chain verification.
| Claim | Type | Description | Phase |
|---|---|---|---|
format_allowed |
boolean | Model in approved file format | artifact |
format_detected |
string | Detected format (safetensors, pickle, etc.) | artifact |
pickle_safe |
boolean | Pickle file safe to load | artifact |
pickle_severity |
string | Fickling severity level | artifact |
dangerous_code |
string[] | Dangerous functions found (os.system, eval) | artifact |
signature_valid |
boolean | Cryptographic signature intact | artifact |
signature_identity |
string | Signer OIDC identity from Sigstore | artifact |
license_allowed |
boolean | Model license is approved | artifact |
license_detected |
string | Detected license | artifact |
source_allowed |
boolean | Model from approved source | artifact |
Cedar Examples
// Block unsafe pickle files
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.pickle_safe == false
};
// Require valid signature
forbid(principal, action == Action::"invoke", resource)
when {
context.phase == "artifact" &&
context.claims.signature_valid == false
};
NeMo Auditor
NVIDIA NeMo Guardrails integration for content safety and fact-checking.
| Claim | Type | Description | Phase |
|---|---|---|---|
content_safe |
boolean | Content passed NeMo safety check | request, response |
jailbreak_detected |
boolean | Jailbreak attempt detected | request |
pii_detected |
boolean | NeMo detected PII | request |
injection_detected |
boolean | Code injection detected (YARA) | request |
fact_check_passed |
boolean | Output passed NeMo fact-check | response |
hallucination_score |
number 0-1 | Hallucination degree | response |
on_topic |
boolean | Conversation staying on topic | response |
response_blocked |
boolean | NeMo blocked the response | response |
Cedar Examples
// Block unsafe content
forbid(principal, action == Action::"invoke", resource)
when { context.claims.content_safe == false };
// Block jailbreak attempts
forbid(principal, action == Action::"invoke", resource)
when { context.claims.jailbreak_detected == true };
Observability Auditor
Runtime telemetry and tracing with TEE-signed traces.
| Claim | Type | Description | Phase |
|---|---|---|---|
cost_usd |
number | Request cost in USD | execution |
latency_ms |
number | End-to-end latency in milliseconds | execution |
token_count |
number | Total tokens used | execution |
error_rate |
number 0-1 | System error rate | execution |
tee_signed |
boolean | Trace cryptographically signed | execution |
Cedar Examples
// Block if latency exceeds SLA
forbid(principal, action == Action::"invoke", resource)
when { context.claims.latency_ms > 30000 };
// Require TEE signing
forbid(principal, action == Action::"invoke", resource)
when { context.claims.tee_signed == false };
Provenance
Every claim carries an optional provenance field that records the detection settings used to produce it. The @claims decorator auto-stamps provenance from the method's keyword-only parameters (including any per-policy overrides from lucid_context["detection_overrides"]).
{
"name": "injection_risk",
"value": 0.82,
"confidence": 0.95,
"provenance": {
"injection_threshold": 0.7
}
}
Because detection settings are declared as @claims kwargs, each claim's ClaimDefinition carries a settings list of ClaimSettingDefinition objects describing the available detection parameters (type, default, UI metadata). This makes every claim fully self-describing — from the catalog to the attestation.
Provenance enables: - Self-describing attestations -- verifiers can evaluate claims without config database access - Policy auditability -- claims show both the score AND the detection settings that produced it - Per-policy tuning -- different policies can override detection settings for the same claim - Drift detection -- compare provenance across attestations to detect settings changes
Custom Auditor Claims
Custom ClaimsAuditors can define arbitrary claim names. Use flat, descriptive names with a namespace prefix to avoid collisions:
# Good: namespaced flat claim names
Claim(name="myorg_compliance_passed", type="boolean", value=True)
Claim(name="myorg_risk_score", type="score_normalized", value=0.3)
# Bad: generic names that may collide
Claim(name="score", type="score_normalized", value=0.3)
Custom claims are referenced in Cedar the same way:
forbid(principal, action == Action::"invoke", resource)
when { context.claims.myorg_compliance_passed != true };
Register custom auditors with lucid auditor register --claims to sync vocabulary with the platform for policy editor autocomplete.