---
name: atmos-diagnostics
description: "Atmos diagnostics: machine-readable JSONL event streams, diagnostics.enabled/file/include_output, subprocess start/end/output events, masking, and debugging Atmos execution"
metadata:
  copyright: Copyright Cloud Posse, LLC 2026
  version: "1.0.0"
  category: dev-tooling
---

# Atmos Diagnostics

Use this skill when debugging what Atmos is doing at runtime with machine-readable diagnostics.
Diagnostics are configuration-driven, not a standalone command.

## Configuration

Enable diagnostics in `atmos.yaml`:

```yaml
diagnostics:
  enabled: true
  file: .atmos/diagnostics/events.jsonl
  include_output: false
```

Or with environment variables:

```bash
export ATMOS_DIAGNOSTICS_ENABLED=true
export ATMOS_DIAGNOSTICS_FILE=/tmp/atmos-events.jsonl
export ATMOS_DIAGNOSTICS_INCLUDE_OUTPUT=false
```

Diagnostics are active only when `enabled` is true and `file` is non-empty.

## Event Stream

Atmos appends one JSON object per line to the configured file. Events are flat JSON for easy
inspection with `jq`, `grep`, and CI artifact upload.

Common event types include:

- `process.start`
- `process.end`
- `process.output` when `include_output: true`

Fields can include `type`, `time`, `id`, `command`, `args`, `cwd`, TTY flags, `started`,
`success`, `canceled`, `exit_code`, `duration_ms`, signal details, `error`, `stream`, `data`,
`bytes`, and `sequence`.

## Debugging Workflow

```bash
ATMOS_DIAGNOSTICS_ENABLED=true \
ATMOS_DIAGNOSTICS_FILE=/tmp/atmos-events.jsonl \
atmos terraform plan vpc -s plat-ue2-dev

jq . /tmp/atmos-events.jsonl
```

Set `include_output: true` only when command output is needed. Output events can be noisy, though
Atmos masks sensitive values before writing diagnostics.

## Guidance

- Use diagnostics when a command runs a subprocess unexpectedly, exits with an unclear code, or
  behaves differently in CI and locally.
- Attach the JSONL file as a CI artifact for failed runs.
- Keep diagnostics files out of version control.
- Diagnostics are best-effort and should not be used as a replacement for command exit codes.
- If a user asks for a CLI diagnostics command, verify current `atmos --help`; the shipped surface is
  config/env driven unless a newer command exists.
