This is a Python Port of Vercels NPM package
A lightweight utility for detecting if code is being executed by an AI agent or automated development environment.
uv add detect_agentfrom detect_agent import determine_agent
result = determine_agent()
if result["is_agent"]:
print(f"Running in {result["agent"]["name"]} environment");This package can detect the following AI agents and development environments:
- Custom agents via
AI_AGENTenvironment variable - Cursor (cursor editor and cursor-cli)
- Claude Code (Anthropic's Claude)
- Devin (Cognition Labs)
- Gemini CLI (Google)
- Codex (OpenAI)
- Antigravity (Google DeepMind)
- GitHub Copilot (via
AI_AGENT=github-copilot|github-copilot-cli,COPILOT_MODEL,COPILOT_ALLOW_ALL, orCOPILOT_GITHUB_TOKEN) - Replit (online IDE)
We're promoting AI_AGENT as a universal environment variable standard for AI development tools. This allows any tool or library to easily detect when it's running in an AI-driven environment.
Set the AI_AGENT environment variable to identify your tool:
export AI_AGENT="your-tool-name"
# or
AI_AGENT="your-tool-name" your-command- Use lowercase with hyphens for multi-word names
- Include version information if needed, separated by an
@symbol - Examples:
claude-code,cursor-cli,devin@1,custom-agent@2.0
uv sync --extra dev
uv run pytest
# Lint and format check (CI)
uv run ruff check . && uv run ruff format --check .
# Fix and format
uv run ruff check . --fix && uv run ruff format .from detect_agent import determine_agent
import os
def setup_environment():
result = determine_agent()
if (result["is_agent"]) {
# Running in AI environment - adjust behavior
os.environ.setdefault("TOGETHER_LOG", "debug")
print(f"🤖 Detected AI agent: {result["agent"]["name"]}");from detect_agent import determine_agent
def track_usage(event: string):
result = determine_agent();
analytics.track(event, {
"agent": result["agent"]["name"] if result["is_agent"] else "human",
})To add support for a new AI agent:
- Add detection logic to
main.py - Add comprehensive test cases in
test.py - Update this README with the new agent information
- Follow the existing priority order pattern