
Anti-Hallucination Search Protocol
Anti-Hallucination Search Protocol
The Problem
Your AI agent sounds confident. It cites sources. It gives specific numbers.
Then you check — and none of it exists.
Fabricated URLs. Invented statistics. Citations that look real but return 404.
The agent wasn't lying. It just never checked.
How It Works
This skill installs a verification gate between the agent's knowledge and its output.
Every claim that touches the external world — facts, numbers, dates, URLs, named entities, current states — must pass through a live search before it can be stated as fact.
Claims that fail verification don't disappear. They get labeled.
| Label | Meaning |
|---|---|
[SPECULATION] |
Agent believes this is true, but has no verified source |
[UNVERIFIABLE] |
Could not be confirmed with available tools |
[STALE_DATA⚠️] |
Source found, but older than 2 years |
What Triggers Verification
The agent must search before stating any of the following:
- Facts about the external world — prices, statistics, counts, rankings
- Named entities — people, companies, products, organizations
- Dates and time-sensitive states — "currently", "as of now", "still", "latest"
- URLs and citations — existence and content must be confirmed
- Comparative claims — "X is bigger than Y", "the most popular", "the fastest"
- Current role/status — "the CEO of X is...", "X is still available..."
The agent skips search for:
- Mathematical definitions
- Language grammar rules
- Timeless scientific principles
- Content the user just provided in the same message
The Memory Trap
Training data has a cutoff. The agent does not know today's date by default.
This skill solves both problems:
Date grounding — The agent acquires the current date from context or search before processing time-dependent queries. Time expressions like "recently", "this year", "current" are anchored to an actual date.
Memory prohibition — "I already know this" is not a valid reason to skip search. Confidence is not evidence. If the claim involves the external world, search runs regardless.
Source Requirements
Every verified claim must include:
- ✅ A specific URL (domain-only is not acceptable)
- ✅ A publication or update date
- ⚠️ Sources older than 2 years are marked
[STALE_DATA⚠️]and trigger a fresher search
If no source is found after searching: [UNVERIFIABLE] label is applied. The agent does not fabricate a source to fill the gap.
Before / After
Before (unverified):
"According to recent reports, the company has 4,200 employees and revenue of $2.1B."
After (verified):
"According to [source URL, published 2025-03], the company has 4,200 employees. Revenue figure could not be confirmed —
[UNVERIFIABLE]."
Hard Rules
- Search is not optional for external facts. "I'm confident" does not override the search requirement.
- Labels are mandatory, not optional. Unverified claims without labels are a protocol violation, not just a quality issue.
- URLs must be real and confirmed. Stating a URL without visiting it is fabrication.
- Date grounding precedes time-dependent claims. "Current" means nothing without knowing today's date.
- Memory output gets double-labeled. Any claim drawn from training data (not live search) receives both
[SPECULATION]and a training-data declaration.
Compatible With
Claude Code · Claude API · Any system-prompt-driven agent





