> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Agent Detector — pakket voor het detecteren van AI-agents

> Hoe je laravel/agent-detector gebruikt. Een uitleg van het officiële Laravel-pakket dat de uitvoeringsomgeving van grote AI-agents zoals Claude, Copilot en Cursor detecteert.

## Inleiding

[laravel/agent-detector](https://github.com/laravel/agent-detector) is een lichtgewicht utility waarmee je kunt detecteren of PHP-code wordt uitgevoerd binnen een AI-agent of geautomatiseerde ontwikkelomgeving. Het is in april 2026 uitgebracht als officieel Laravel-pakket.

Nu AI-agents diep zijn doorgedrongen in de dagelijkse ontwikkelpraktijk, is het belangrijk geworden om te weten in welke omgeving je code draait. In echte projecten ontstaan use cases zoals het aanpassen van de logdetails of rate limits op basis van of een request van een AI-agent of van een mens komt, of het teruggeven van agent-specifieke responses.

```mermaid theme={null}
graph TD
    A["AgentDetector::detect()"] --> B{"AI_AGENT<br>omgevingsvariabele aanwezig?"}
    B -->|Ja| C["Teruggeven als custom<br>of bekende agent"]
    B -->|Nee| D{"Bekende omgevingsvariabele<br>aanwezig?"}
    D -->|Ja| E["Teruggeven als bijbehorende<br>KnownAgent"]
    D -->|Nee| F{"/opt/.devin<br>bestand aanwezig?"}
    F -->|Ja| G["Teruggeven als<br>KnownAgent::Devin"]
    F -->|Nee| H["isAgent: false<br>(geen agent)"]
```

## Installatie

```bash theme={null}
composer require laravel/agent-detector
```

PHP 8.2 of hoger is vereist.

## Basisgebruik

Als je `AgentDetector::detect()` aanroept, krijg je een `AgentResult`-object terug.

```php theme={null}
use Laravel\AgentDetector\AgentDetector;
use Laravel\AgentDetector\KnownAgent;

$result = AgentDetector::detect();

if ($result->isAgent) {
    echo "Running inside: {$result->name}";
}

// Controleer op een specifieke agent
if ($result->knownAgent() === KnownAgent::Claude) {
    echo "Hello from Claude!";
}
```

Je kunt ook de standalone functie gebruiken.

```php theme={null}
use function Laravel\AgentDetector\detectAgent;

$result = detectAgent();
```

### Eigenschappen van AgentResult

| Eigenschap / methode    | Type          | Beschrijving                                                      |
| ----------------------- | ------------- | ----------------------------------------------------------------- |
| `$result->isAgent`      | `bool`        | `true` als de code binnen een AI-agent draait                     |
| `$result->name`         | `?string`     | Naam van de agent (bijv. `"claude"`). `null` als er geen agent is |
| `$result->knownAgent()` | `?KnownAgent` | Geeft de `KnownAgent`-enum terug. `null` bij een onbekende agent  |

## Overzicht van ondersteunde agents

| Agent          | Detectiemethode (omgevingsvariabele / bestand)                                                                                        |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Custom         | Omgevingsvariabele `AI_AGENT` (willekeurige waarde)                                                                                   |
| GitHub Copilot | `AI_AGENT=github-copilot`, `AI_AGENT=github-copilot-cli`, `COPILOT_MODEL`, `COPILOT_ALLOW_ALL`, `COPILOT_GITHUB_TOKEN`, `COPILOT_CLI` |
| Cursor         | `CURSOR_AGENT`                                                                                                                        |
| Claude         | `CLAUDECODE` of `CLAUDE_CODE`                                                                                                         |
| Cowork         | `CLAUDE_CODE_IS_COWORK` (samen met `CLAUDECODE` of `CLAUDE_CODE` ingesteld)                                                           |
| Gemini         | `GEMINI_CLI`                                                                                                                          |
| Codex          | `CODEX_SANDBOX`, `CODEX_CI`, `CODEX_THREAD_ID`                                                                                        |
| Augment CLI    | `AUGMENT_AGENT`                                                                                                                       |
| AMP            | `AMP_CURRENT_THREAD_ID`                                                                                                               |
| Opencode       | `OPENCODE_CLIENT` of `OPENCODE`                                                                                                       |
| Replit         | `REPL_ID`                                                                                                                             |
| Devin          | Het bestand `/opt/.devin` bestaat                                                                                                     |
| Antigravity    | `ANTIGRAVITY_AGENT`                                                                                                                   |
| Pi             | `PI_CODING_AGENT`                                                                                                                     |
| Kiro CLI       | `KIRO_AGENT_PATH`                                                                                                                     |
| v0             | `AI_AGENT=v0`                                                                                                                         |

De detectievolgorde is: omgevingsvariabele `AI_AGENT` → bekende omgevingsvariabelen → bestandssysteem.

## Een custom agent instellen

Als je de omgevingsvariabele `AI_AGENT` op een willekeurige waarde zet, wordt deze gedetecteerd als een custom agent.

```bash theme={null}
AI_AGENT=my-custom-agent php your-script.php
```

```php theme={null}
$result = AgentDetector::detect();

// $result->isAgent === true
// $result->name    === 'my-custom-agent'
// $result->knownAgent() === null (onbekende agent)
```

## Praktische use cases

### AI-agents detecteren in middleware

Bepaal in Laravel-middleware de uitvoeringsomgeving en splits de verwerking voor agents af.

```php theme={null}
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Laravel\AgentDetector\AgentDetector;

class DetectAiAgent
{
    public function handle(Request $request, Closure $next): mixed
    {
        $agent = AgentDetector::detect();

        if ($agent->isAgent) {
            // Zet de agentnaam als request-attribuut
            $request->attributes->set('ai_agent', $agent->name);
        }

        return $next($request);
    }
}
```

### Gedetailleerde logs schrijven in AI-agent-omgevingen

```php theme={null}
use Laravel\AgentDetector\AgentDetector;
use Illuminate\Support\Facades\Log;

$agent = AgentDetector::detect();

if ($agent->isAgent) {
    Log::withContext(['ai_agent' => $agent->name])
        ->debug('Agent request received', $request->all());
} else {
    Log::info('User request received');
}
```

### Rate limiting toepassen op requests van AI-agents

Door de sleutel van de `ThrottleRequests`-middleware te laten afhangen van de agent-detectie kun je verschillende rate limits instellen voor agents en mensen.

```php theme={null}
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Routing\Middleware\ThrottleRequests;
use Laravel\AgentDetector\AgentDetector;

class ThrottleByAiAgent
{
    public function handle(Request $request, Closure $next): mixed
    {
        $agent = AgentDetector::detect();

        // AI-agents krijgen 10 requests per minuut, mensen 60
        $maxAttempts = $agent->isAgent ? 10 : 60;

        return app(ThrottleRequests::class)->handle(
            $request,
            $next,
            $maxAttempts,
        );
    }
}
```

### Gedrag aanpassen in consolecommando's

Een voorbeeld waarbij een Artisan-commando gedetailleerde voortgang toont wanneer het door een agent wordt uitgevoerd.

```php theme={null}
use Laravel\AgentDetector\AgentDetector;

public function handle(): void
{
    $agent = AgentDetector::detect();

    if ($agent->isAgent) {
        $this->info("Running in {$agent->name} environment — verbose mode enabled.");
    }

    // Verwerking...
}
```

## Samenvatting

`laravel/agent-detector` is een pakket dat eenvoudige checks van omgevingsvariabelen en het bestandssysteem bundelt. Je kunt het zonder ingewikkelde configuratie gebruiken door simpelweg `AgentDetector::detect()` aan te roepen.

Nu AI-agents een vast onderdeel van de ontwikkelworkflow worden, wordt het steeds belangrijker om te weten door wie (of wat) je code wordt uitgevoerd. Dit pakket is inzetbaar in allerlei situaties, zoals logging, rate limiting en het aanpassen van responses.

<Card title="laravel/agent-detector repository" icon="github" href="https://github.com/laravel/agent-detector">
  De broncode en de actuele lijst van ondersteunde agents vind je hier.
</Card>


## Related topics

- [AI-agents: van "correcte" code naar "idiomatische Laravel"-code — de volgende stap van Boost Benchmarks](/nl/blog/boost-benchmarks-idiomatic-laravel.md)
- [Laravel Doctor — een diagnosetool voor applicaties](/nl/blog/laravel-doctor-introduction.md)
- [Laravel PAO — outputoptimalisatie voor AI-agents](/nl/blog/pao-introduction.md)
- [Bottutorial - Laravel Bluesky](/nl/packages/laravel-bluesky/bot-tutorial.md)
- [laravel/agent-skills — de officiële Laravel-collectie van AI-agentskills](/nl/blog/agent-skills-introduction.md)
