AI Passports
An AI Passport is a cryptographically signed certificate that proves an AI application is running in a verified secure environment with active safety auditors.
What's in an AI Passport?
| Field | Description |
|---|---|
| Application Name | The AI application being verified |
| TEE Type | Hardware security environment (SGX, SEV-SNP, TDX, Nitro) |
| Active Auditors | Safety auditors monitoring the application |
| SLSA Level | Supply chain security level (0-4) |
| Container Digest | Cryptographic hash of the running container |
| Valid Until | Passport expiration timestamp |
| Signature | Ed25519 signature from Lucid Verifier |
| Attestation Quote | Hardware-level proof from the TEE |
Why AI Passports Matter
AI Passports provide end-user transparency about AI safety:
- Users can verify the AI they're interacting with has active safety measures
- Enterprises can demonstrate compliance with AI regulations
- Developers can prove their applications meet security standards
- Regulators can audit AI deployments with cryptographic proof
Display Options
When deploying an AI application with Lucid, you can choose how the AI Passport is displayed to end users.
Top Banner
A persistent banner at the top of the application showing verification status.
block-beta
columns 1
block:banner["✓ Lucid Verified • TEE: SGX • 3 Auditors Active"]
end
block:content
space
A["Your Application Content"]
space
end
Best for: Applications where trust is critical (healthcare, finance, legal)
Configuration:
spec:
passport:
display:
mode: banner
position: top
theme: auto # light, dark, or auto
collapsedDefault: false
Bottom Banner
Same as top banner but fixed to the bottom of the viewport.
Best for: Applications where top space is valuable (chat interfaces, dashboards)
Configuration:
spec:
passport:
display:
mode: banner
position: bottom
Floating Widget
A small badge in the corner that expands on click to show full passport details.
block-beta
columns 3
block:content:3
space:2
space:2
A["Your Application Content"]:2
widget["✓"]
end
Best for: Applications where visual real estate is limited
Configuration:
spec:
passport:
display:
mode: floating
position: bottom-right # bottom-left, top-right, top-left
Dedicated Page
No in-app UI. Users visit a dedicated URL to view the passport.
URL: https://yourapp.com/.lucid/passport
Best for: API-first applications, minimal UI disruption
Configuration:
spec:
passport:
display:
mode: page_only
Browser Extension
No in-app UI. Users install the Lucid Passport Verifier browser extension to see verification status in their browser toolbar.
flowchart TB
subgraph Browser["Browser Window"]
direction TB
Toolbar["← → ↻ | yourapp.com | 🛡️ ✓ | ⋮"]
Content["Your Application Content"]
end
Toolbar --> Popup
subgraph Popup["Extension Popup"]
P1["✓ AI Passport Verified"]
P2["TEE: SGX"]
P3["Auditors: 3"]
P4["SLSA: Level 2"]
end
Best for: Technical users, API services, minimal application changes
Configuration:
spec:
passport:
display:
mode: browser_extension
Browser Extension
The Lucid AI Passport Verifier browser extension automatically detects and verifies AI Passports on any website.
Installation
| Browser | Installation |
|---|---|
| Chrome / Edge / Brave | Coming soon |
| Firefox | Coming soon |
| Safari | Coming soon |
How It Works
- Detection: The extension scans pages for AI Passports via:
<meta name="lucid-passport">tags<link rel="ai-passport">elements/.lucid/passportendpoint-
Response headers (
X-Lucid-Passport) -
Verification: When found, the extension:
- Validates the cryptographic signature
- Checks attestation quotes against hardware roots of trust
-
Verifies the passport hasn't expired
-
Display: Shows status in the toolbar:
- ✓ Green badge: Verified AI Passport
- ! Red badge: Verification failed
- No badge: No passport detected
For Developers
To make your application compatible with the browser extension, expose the AI Passport in at least one of these ways:
<!-- Option 1: Meta tag -->
<meta name="lucid-passport" content='{"appName":"MyApp",...}'>
<!-- Option 2: Link to endpoint -->
<link rel="ai-passport" href="/.lucid/passport">
<!-- Option 3: JSON-LD script -->
<script type="application/lucid-passport+json">
{
"appName": "MyApp",
"tee": {"type": "SGX"},
"auditors": ["injection", "toxicity"],
...
}
</script>
The Lucid sidecar automatically serves the passport at /.lucid/passport when deployed.
Passport Configuration
Validity Period
Control how long passports remain valid:
spec:
passport:
validityDays: 30 # Default: 30 days
Shorter validity periods provide fresher attestations but require more frequent renewals.
Minimum SLSA Level
Require a minimum supply chain security level:
spec:
passport:
minSlsaLevel: 2 # 0-4, default: 0
| Level | Requirements |
|---|---|
| 0 | No requirements |
| 1 | Basic provenance (build logs exist) |
| 2 | Signed provenance (builds are signed) |
| 3 | Hardened builds (isolated build environment) |
| 4 | Hermetic builds (fully reproducible) |
Evidence Included
Control what information appears in the passport:
spec:
passport:
evidence:
teeAttestation: true # Hardware attestation quote
auditorClaims: true # Safety auditor results
routingProofs: true # Request routing verification
containerInfo: true # Container digest and metadata
slsaProvenance: true # Supply chain provenance
modelFingerprint: false # Model hash (optional)
Verifying Passports Programmatically
CLI
# List passports for an environment
lucid passport list
# Show passport details
lucid passport show pass-abc123
# Verify a passport
lucid passport verify pass-abc123
API
# Fetch passport for an endpoint
curl https://yourapp.com/.lucid/passport
# Verify via Lucid API
curl -X POST https://api.lucid.ai/v1/passports/verify \
-H "Authorization: Bearer $LUCID_API_KEY" \
-d '{"passport": "..."}'
SDK
from lucid import LucidClient
client = LucidClient()
# Get passport for a URL
passport = client.get_passport("https://yourapp.com")
# Verify it
result = client.verify_passport(passport)
print(f"Valid: {result.valid}")
print(f"TEE: {result.tee_type}")
print(f"Auditors: {result.auditors}")
Passport Schema
Full JSON schema for AI Passports:
{
"$schema": "https://lucid.ai/schemas/passport/v1",
"passportId": "pass-abc123def456",
"appName": "My AI Application",
"version": "1.0.0",
"issuedAt": "2024-01-15T10:30:00Z",
"expiresAt": "2024-02-14T10:30:00Z",
"tee": {
"type": "AMD_SEV_SNP",
"attestationQuote": "base64...",
"measurementHash": "sha256:abc123..."
},
"auditors": [
{
"id": "injection-detector",
"name": "Injection Detection",
"status": "active",
"lastCheck": "2024-01-15T10:29:00Z"
}
],
"container": {
"digest": "sha256:abc123...",
"registry": "gcr.io/my-project/my-app"
},
"slsa": {
"level": 2,
"provenanceUri": "https://..."
},
"signature": {
"algorithm": "Ed25519",
"publicKey": "base64...",
"value": "base64..."
}
}
Next Steps
- Deployment Guide - Deploy your first AI application
- Auditor Catalog - Available safety auditors
- Compliance - Regulatory compliance documentation