Detect whether your Python code is running inside an AI agent (Codex, Claude, Cursor, Devin, and more).
A Python port of pushpak1300's PHP library agent-detector.
pip install ai-agent-detectorfrom ai_agent_detector import detect_agent
result = detect_agent()
result.is_agent # True / False
result.name # "codex", "claude", "cursor", … or None
result.is_known_agent # True if the agent is in the built-in listDetection is attempted in this order:
Any process can set the AI_AGENT environment variable to identify itself:
AI_AGENT=my-custom-agent python script.pyresult.is_known_agent will be False for custom agents not in the built-in list.
Each known agent is detected by the presence of one or more environment variables it sets automatically:
| Agent | Env vars |
|---|---|
| Amp | AMP_CURRENT_THREAD_ID |
| Antigravity | ANTIGRAVITY_AGENT |
| Augment CLI | AUGMENT_AGENT |
| Claude Code | CLAUDECODE, CLAUDE_CODE |
| Codex | CODEX_SANDBOX, CODEX_THREAD_ID |
| Copilot | COPILOT_CLI |
| Cursor | CURSOR_AGENT |
| Gemini CLI | GEMINI_CLI |
| Opencode | OPENCODE_CLIENT, OPENCODE |
| Replit | REPL_ID |
The variable just needs to be present — its value is not checked.
Devin does not set a dedicated env var. Instead, its presence is detected by checking for the file /opt/.devin.
uv sync
uv run mypy src
uv run pytest