Skip to content

Detection results from Claude Code, OpenCode, and Codex #1

Description

@caffeinum

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

  • Investigate if Codex CLI (not browse) has a distinct signature
  • Decide if ChatGPT-User should be coding-agent instead of browsing-agent

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions