Skip to main content
skill CX Codex

dd-audit-compliance-report — Claude Code skill for SOC 2 and PCI DSS

Pulls Datadog Audit Trail events into an auditor-ready report mapped to SOC 2 and PCI DSS controls.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add datadog-labs/agent-skills --skill dd-audit-compliance-report -a claude-code
npx skills add datadog-labs/agent-skills --skill compliance-report -a claude-code
Open on GitHub

What dd-audit-compliance-report does

The skill reads Datadog Audit Trail and sorts events by control. For SOC 2 that means CC6.2, CC6.3, CC6.6 and CC7.2 — user provisioning, role changes, failed logins, privileged account activity. For PCI DSS it covers 10.2.2, 10.2.3, 10.2.4, 10.2.5 and 10.2.7.

Inside you get a control-to-query mapping table, a set of pup audit-logs search commands with filters, and a report template with an event table plus a gaps section. Access works through pup auth login over OAuth2, or through DD_API_KEY and DD_APP_KEY with the audit_logs_read scope. The first step is a retention check: PCI asks for 12 months, Datadog keeps 90 days by default. If no archive is configured and the window runs longer than 90 days, the gap lands in the report header — worth checking your archive setup before an audit.

One scope limit matters. Audit Trail records actions inside the Datadog platform, not inside the systems Datadog monitors. For PCI that makes it evidence that the monitoring platform's access controls work, not evidence about the cardholder data environment itself.

What it helps with

  • gather Datadog access evidence for an audit period
  • check whether log retention covers the whole audit window
  • export role and permission changes into an auditor table
  • find failed logins with IP and country
  • format SOC 2 and PCI DSS controls into one report template

Example prompts for the agent

  • Build a PCI DSS report for the last 12 months for our org
  • Check Audit Trail retention and tell me if it covers PCI
  • Pull CC6.6 events — failed logins with IP and country

How to install dd-audit-compliance-report

1Skills CLI (Vercel)

npx skills add datadog-labs/agent-skills --skill dd-audit-compliance-report -a claude-code
npx skills add datadog-labs/agent-skills --skill compliance-report -a claude-code

2Manually: put the files in place

~/.claude/skills/compliance-report/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/compliance-report/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about dd-audit-compliance-report

How do I install dd-audit-compliance-report in Claude?

Run npx skills add datadog-labs/agent-skills --skill dd-audit-compliance-report -a claude-code. The skill lands in ~/.claude/skills/compliance-report/SKILL.md.

What does dd-audit-compliance-report do?

It turns Datadog Audit Trail events into an evidence report for SOC 2 and PCI DSS controls, running a query per control and collecting the results in a table.

What do I need before running it?

Datadog access: either pup auth login over OAuth2, or DD_API_KEY and DD_APP_KEY with the audit_logs_read scope. Without that the Audit Trail queries will not run.

Source text

SKILL.md · MIT
---
name: dd-audit-compliance-report
description: Generate auditor-ready compliance evidence from Datadog Audit Trail for SOC 2 and PCI DSS. Maps framework controls to specific query patterns and produces formatted output.
metadata:
  version: "0.1.0"
  author: datadog-labs
  repository: https://github.com/datadog-labs/agent-skills
  tags: datadog,audit,compliance,soc2,pci,dd-audit
  alwaysApply: "false"
---

# Audit Trail: Compliance Evidence Report

Generate auditor-ready evidence from Datadog Audit Trail for SOC 2 and PCI DSS control requirements.

## Prerequisites

```bash
pup auth login   # OAuth2 (recommended)
# or set DD_API_KEY + DD_APP_KEY with audit_logs_read scope
```

## Read First

See `references/control-mapping.md` for the full control → query mapping table and retention requirements by framework.

## Retention Check (Run First)

PCI requires 12 months. Datadog default retention is 90 days. Check whether archive is configured:

```bash
pup audit-logs search --query "@evt.name:\"Audit Trail\" @action:modified" --from 90d -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      user: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      resource: .attributes.attributes.asset.type
    }]'
```

If the requested time window exceeds 90 days and no archive is confirmed, surface this gap in the report header.

## Workflow

1. Confirm: framework (SOC 2 / PCI DSS), time window, org scope
2. Run retention check
3. Run each relevant control query
4. Format output using the Evidence Report template

---

## SOC 2 Queries

### CC6.2 — User Provisioning / Deprovisioning

```bash
pup audit-logs search \
  --query "@evt.name:\"Access Management\" @asset.type:user @action:(created OR deleted OR modified)" \
  --from PERIOD_START --to PERIOD_END --limit 500 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      actor: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      affected_user: .attributes.attributes.asset.id
    }]'
```

### CC6.3 — Role and Permission Changes

```bash
pup audit-logs search \
  --query "@evt.name:\"Access Management\" @asset.type:role" \
  --from PERIOD_START --to PERIOD_END --limit 500 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      actor: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      role_id: .attributes.attributes.asset.id
    }]'
```

### CC6.6 — Failed Logins and Suspicious Access

```bash
pup audit-logs search \
  --query "@evt.name:Authentication @action:login @status:error" \
  --from PERIOD_START --to PERIOD_END --limit 500 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      user: .attributes.attributes.usr.email,
      ip: .attributes.attributes.network.client.ip,
      country: .attributes.attributes.network.client.geoip.country.name
    }]'
```

### CC7.2 — Privileged / Support User Actions

```bash
pup audit-logs search \
  --query "@evt.actor.type:SUPPORT_USER" \
  --from PERIOD_START --to PERIOD_END --limit 500 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      support_actor: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      resource_type: .attributes.attributes.asset.type,
      resource_id: .attributes.attributes.asset.id
    }]'
```

---

## PCI DSS Queries

### PCI 10.2.2 — Actions by Privileged Users

Same as CC7.2 above. Also include org-level admin actions:

```bash
pup audit-logs search \
  --query "@evt.name:\"Organization Management\"" \
  --from PERIOD_START --to PERIOD_END --limit 200 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      actor: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      resource_type: .attributes.attributes.asset.type
    }]'
```

### PCI 10.2.3 — Access to Audit Trail Itself

```bash
pup audit-logs search \
  --query "@evt.name:\"Audit Trail\"" \
  --from PERIOD_START --to PERIOD_END --limit 200 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      actor: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      resource_type: .attributes.attributes.asset.type
    }]'
```

### PCI 10.2.4 — Invalid Access Attempts

Same as CC6.6 failed logins above.

### PCI 10.2.5 — All Authentication Events

```bash
pup audit-logs search \
  --query "@evt.name:Authentication @action:login" \
  --from PERIOD_START --to PERIOD_END --limit 1000 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      user: .attributes.attributes.usr.email,
      auth_method: .attributes.attributes.auth_method,
      result: .attributes.attributes.status,
      ip: .attributes.attributes.network.client.ip,
      country: .attributes.attributes.network.client.geoip.country.name
    }]'
```

### PCI 10.2.7 — Object Creation and Deletion

```bash
pup audit-logs search \
  --query "@action:(created OR deleted)" \
  --from PERIOD_START --to PERIOD_END --limit 1000 -o json \
  | jq '[.data[] | {
      timestamp: .attributes.timestamp,
      user: .attributes.attributes.usr.email,
      action: .attributes.attributes.action,
      resource_type: .attributes.attributes.asset.type,
      resource_id: .attributes.attributes.asset.id,
      ip: .attributes.attributes.network.client.ip
    }]'
```

---

## Evidence Report Template

```
# Datadog Audit Trail — Compliance Evidence Report
Framework: [SOC 2 / PCI DSS]
Organization: [org name]
Period: [start] to [end]
Generated: [date]

## Scope Boundary
This report covers administrative actions within the Datadog platform.
It does not cover actions taken within systems that Datadog monitors.

## Retention Status
[✓ Full period covered by Audit Trail retention]
[⚠ Requested period exceeds 90-day default. Archive config required for complete coverage.]

---

## [Control ID] — [Control Name]
Events found: [N]

| Timestamp | Actor | Action | Resource Type | Resource ID | IP | Country |
|-----------|-------|--------|---------------|-------------|-----|---------|
| ...       | ...   | ...    | ...           | ...         | ... | ...     |

[Repeat per control]

---

## Gaps
[List any controls where data was unavailable or incomplete, and why]
```

## Scope Caveat

Datadog Audit Trail covers the **Datadog platform** as the system being audited. For PCI purposes, this is evidence that the monitoring platform's access controls are functioning — not direct evidence about the cardholder data environment (CDE) itself. Auditors should understand this scope boundary.

## References

- [Audit Trail events reference](https://docs.datadoghq.com/account_management/audit_trail/events/)
- [PCI DSS Requirement 10](https://www.pcisecuritystandards.org/document_library/)
- [SOC 2 Trust Services Criteria](https://us.aicpa.org/interestareas/frc/assuranceadvisoryservices/aicpasoc2report)

© datadog-labs · MIT · datadog-labs/agent-skills

Similar skills

Everything for Security →

From the same set20

agent-observability-eval-bootstrap Generates LLM evaluation suites from Datadog production traces. Creates inactive online judge drafts, offline Python SDK code, or JSON datasets. CX Codex +1 547installs agent-observability-eval-pipeline Walks an instrumented ml_app through six phases: classify traces, root-cause failures, bootstrap evaluators, build a dataset, run an experiment, analyze it. CX Codex +1 540installs agent-observability-session-classify Evaluates user intent satisfaction in Datadog Agent Observability traces and sessions. Returns a compact yes, partial, or no verdict with a brief reason. CX Codex +1 529installs service-remapping A skill for building Datadog APM service remapping rules: collapse noisy inferred entities, clean up auto-generated names, handle renames. CX Codex +1 478installs dd-audit-cost-spike-investigation Correlates a Datadog usage spike with Audit Trail config changes, so you can see who changed what right before the bill jumped. CX Codex +1 473installs upgrade-browser-sdk-v7 Walks a project through the Datadog Browser SDK jump from v6 to v7: stale options, CDN paths, changed APIs. Useful when the upgrade breaks init. CX Codex +1 459installs k9-ownership-byod-setup Builds a Datadog ownership preferences CSV and walks you through uploading it. Useful when the Ownership Agent guesses the wrong resource owners. CX Codex +1 454installs agent-observability-auto-experiment Runs a local improvement loop against real Datadog LLM-Obs data: baseline eval, one focused change, re-score, keep it if the score moves the right way. CX Codex +1 453installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor