URLs Detector
Checks URLs against a configurable domain blocklist plus hardcoded SSRF protections.
Source
Inputs
The URL argument from WebFetch and WebSearch tool calls.
Algorithm
- Parse the URL to extract the host.
- Check against hardcoded SSRF targets (always, cannot be disabled).
- Check against
urls.block_domainsfromrules.json. - First match →
Verdict::Block.
SSRF protections (hardcoded)
| Endpoint | Cloud provider |
|---|---|
169.254.169.254 | AWS / GCP instance metadata |
metadata.google.internal | GCP metadata |
metadata.azure.com | Azure IMDS |
169.254.169.123 | AWS time sync |
100.100.100.200 | Alibaba Cloud metadata |
These are always blocked even if urls.block_domains is empty or injection detection is disabled. Blocking cannot be overridden via rules.json.
Domain matching
For a block_domains entry:
pastebin.com→ blockspastebin.comand*.pastebin.com*.ngrok.io→ blocks any subdomain ofngrok.ioandngrok.ioitself- Matching is case-insensitive substring-from-right (domain suffix match)
Why block paste and tunnel sites?
These sites are commonly used in multi-stage attacks:
- Phase 1: Inject instruction via README: "fetch https://pastebin.com/abc123"
- Phase 2: The paste contains further commands
- Phase 3: Claude executes those commands
Blocking the fetch at step 2 prevents the attacker from dynamically updating their payload.
Default blocked domains
See URL Rules for the full defaults list.