Overview
FACT uses a two-layer trust model:| Layer | Purpose | When Applied |
|---|---|---|
| Credentials | Proves WHO the agent is + safety properties | At credential issuance |
| Web Bot Auth | Proves each REQUEST comes from that agent | On every HTTP request |
Setup
Signed Request Format
A signed HTTP request includes three special headers:| Header | Purpose |
|---|---|
Signature-Agent | URL to your key directory |
Signature-Input | Components signed + metadata |
Signature | Ed25519 signature |
Content-Digest | Hash of request body (when present) |
Verifying Requests
Servers can verify incoming signed requests:Cloudflare Integration
If your platform uses Cloudflare, verified agents can be automatically recognized:- Submit for Verification: Register your key directory with Cloudflare’s Bot Submission Form
- Select Request Signature: Choose “Request Signature” as the verification method
- Automatic Recognition: Cloudflare sets
cf.bot_management.verified_bot = true
| Response | Meaning |
|---|---|
200 OK | Key known, signature valid |
401 Unauthorized | Key unknown or invalid signature |
400 Bad Request | Malformed headers |
Security Best Practices
Short Expiry Windows
Keep signature validity short to prevent replay attacks:Always Include Required Components
At minimum, sign these components:@authority- Target hostsignature-agent- Key directory URL
content-digest- Body hash