# Commands

An Artisan command that ran: which one, with which arguments, how long it took and what it exited with.

![The Commands page in the panel: each command with its runs, failures, average and p95](/images/docs/commands.png)

## Turning it on

```env .env
LB_TRACK_COMMANDS=true
```

Then accept **Commands** on the application.

## What is ignored

```php config/larabug.php
'ignore' => [
    'schedule:run',
    'schedule:finish',
    'schedule:work',
    'queue:work',
    'queue:listen',
    'horizon',
    'horizon:*',
    'larabug:*',
    'list',
    'tinker',
],
```

The plumbing. A `queue:work` that runs for a week is one command run, and it would tell you nothing that the [queue jobs](/docs/telemetry/queue-jobs) it processed do not. `*` is the only wildcard.

A command run by the scheduler is left to the schedule, so it is recorded once, as a [scheduled task](/docs/telemetry/scheduled-tasks), rather than twice.

## What is recorded

The command and its arguments, the exit code, the duration, the peak memory, the host it ran on, and the trace id, which is what ties a command to the logs and exceptions it produced.

## Arguments

```php config/larabug.php
'redact' => [
    'password',
    'secret',
    'token',
    'key',
],
```

Arguments and options are recorded, because `php artisan users:export --since=2026-01-01` is a different event from `php artisan users:export`. Any option whose name contains one of these words has its value replaced before the event is built.

## Batching

`commands.batch_size` is twenty and `commands.max_retries` is two. A command that runs for hours reports when it exits, not while it runs.