Agent Detection Test Results
Asked each coding agent to fetch https://ai-docs-analytics-api.theisease.workers.dev/detect and report back.
Claude Code ✅
{
"category": "coding-agent",
"agent": "claude-code",
"headers": {
"user_agent": "axios/1.8.4",
"accept": "text/markdown, text/html, */*"
}
}
Detection signal: axios user-agent + text/markdown accept header
OpenCode ✅
{
"category": "coding-agent",
"agent": "opencode",
"headers": {
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"accept": "text/plain;q=1.0, text/markdown;q=0.9, text/html;q=0.8, */*;q=0.1"
}
}
Detection signal: q= weights in accept header (spoofed user-agent doesn't help them)
"so yeah, docs sites can fingerprint us via the accept header pattern even when user-agent is masked 🐱"
Codex 🤔
Using curl:
{
"category": "bot",
"agent": "curl",
"filtered": true,
"headers": {
"user_agent": "curl/8.7.1",
"accept": "*/*"
}
}
Using search/browse tool:
{
"category": "browsing-agent",
"agent": "chatgpt-user",
"filtered": true,
"headers": {
"user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
}
}
Note: Codex uses ChatGPT-User user-agent when browsing. Currently classified as browsing-agent (filtered). Need to determine if Codex CLI has a different signature vs ChatGPT browse mode.
Summary
| Agent |
Detected As |
Signal |
Status |
| Claude Code |
claude-code |
axios + text/markdown |
✅ Working |
| OpenCode |
opencode |
text/markdown + q= weights |
✅ Working |
| Codex (browse) |
chatgpt-user |
ChatGPT-User UA |
🤔 Filtered as browsing-agent |
TODO
Agent Detection Test Results
Asked each coding agent to fetch
https://ai-docs-analytics-api.theisease.workers.dev/detectand report back.Claude Code ✅
{ "category": "coding-agent", "agent": "claude-code", "headers": { "user_agent": "axios/1.8.4", "accept": "text/markdown, text/html, */*" } }Detection signal:
axiosuser-agent +text/markdownaccept headerOpenCode ✅
{ "category": "coding-agent", "agent": "opencode", "headers": { "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36", "accept": "text/plain;q=1.0, text/markdown;q=0.9, text/html;q=0.8, */*;q=0.1" } }Detection signal:
q=weights in accept header (spoofed user-agent doesn't help them)Codex 🤔
Using
curl:{ "category": "bot", "agent": "curl", "filtered": true, "headers": { "user_agent": "curl/8.7.1", "accept": "*/*" } }Using search/browse tool:
{ "category": "browsing-agent", "agent": "chatgpt-user", "filtered": true, "headers": { "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" } }Note: Codex uses
ChatGPT-Useruser-agent when browsing. Currently classified asbrowsing-agent(filtered). Need to determine if Codex CLI has a different signature vs ChatGPT browse mode.Summary
claude-codeopencodechatgpt-userTODO
ChatGPT-Usershould becoding-agentinstead ofbrowsing-agent