A lightweight utility for detecting if code is being executed by an AI agent or automated development environment.
npm install detect-agentimport { determineAgent } from 'detect-agent';
const { isAgent, agent } = await determineAgent();
if (isAgent) {
console.log(`Running in ${agent.name} environment`);
// Adapt behavior for AI agent context
}The agent detection rules live in agents.json, validated against agents.schema.json.
Note
You can use these definitions two ways: install the npm package for a ready-to-use API, or consume the JSON file directly from GitHub if you're not in a JavaScript environment or want to build your own detection logic:
https://raw.githubusercontent.com/vercel/detect-agent/main/agents.json
This package can detect the following AI agents and development environments:
- Cursor (Anysphere)
- Claude Code (Anthropic)
- Claude Cowork (Anthropic)
- Devin (Cognition Labs)
- Gemini CLI (Google)
- Codex (OpenAI)
- Antigravity (Google DeepMind)
- Augment
- OpenCode
- Goose (Block)
- Junie (JetBrains)
- Kiro (AWS)
- Pi
- GitHub Copilot
- Replit
- Custom agents (via the
AI_AGENTenvironment variable)
See agents.json for the exact environment variables and conditions used to detect each one.
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
import { determineAgent } from 'detect-agent';
async function setupEnvironment() {
const { isAgent, agent } = await determineAgent();
if (isAgent) {
// Running in AI environment - adjust behavior
process.env.LOG_LEVEL = 'verbose';
console.log(`🤖 Detected AI agent: ${agent.name}`);
}
}import { determineAgent } from 'detect-agent';
async function trackUsage(event: string) {
const result = await determineAgent();
analytics.track(event, {
agent: result.isAgent ? result.agent.name : 'human',
timestamp: Date.now(),
});
}import { determineAgent } from 'detect-agent';
async function shouldEnableFeature(feature: string) {
const result = await determineAgent();
// Enable experimental features for AI agents
if (result.isAgent && feature === 'experimental-ai-mode') {
return true;
}
return false;
}We welcome contributions!
To add support for a new AI agent:
- Add the agent's detection rule to
agents.json, following the structure defined inagents.schema.json. Agents are evaluated in array order — the first match wins, so place more specific rules before more general ones. - Add test cases in
src/determine-agent.test.ts. - Add the agent to the Supported Agents list above.