Skip to main content
Claude Compliance hero Openlayer connects to Anthropic’s Compliance API to pull Claude Enterprise transcripts into your workspace as inference data — with no SDK on employee machines. This is the right integration when the AI you need to evaluate is Claude’s own product rather than an application you built. People chat on claude.ai and work in Cowork and Claude Code; each user turn lands in Openlayer, where you can run tests and review real usage. To instrument your own Anthropic API calls, use the Anthropic integration. To trace agents you build with the Claude Agent SDK, use Claude Agent SDK. Claude Compliance does not replace either one.
All access is read-only. Openlayer reads session transcripts and never writes to, modifies, or deletes anything in your Claude organization. Never grant delete:compliance_user_data.

How it works

Once connected, Openlayer pulls transcripts from Anthropic’s Compliance API and turns them into traces.
  1. Seeds known surfaces. Cowork (Desktop), Claude Code, Cowork (Web / Mobile), and claude.ai (Web / Mobile) appear under Surfaces. Every surface starts disabled, so nothing is ingested until you opt in. A surface Anthropic adds later shows up the same way, disabled, until you enable it.
  2. Maps each surface to one project. Enabling a surface creates an Openlayer project or writes into a project and pipeline you already have. One surface writes to one project.
  3. Pulls on a schedule. Periodic sync brings in new transcripts. You can also run a sync immediately, or backfill history for a surface you have enabled.
  4. Writes one row per user turn. Each row contains the person’s prompt and Claude’s final answer, with model calls and tool steps nested underneath. The conversation or session stays intact, so a multi-turn chat reads as a single thread.

Prerequisites

  • A Claude Enterprise organization with Compliance API access. The Setup guide link on the connect form opens that page.
  • A Compliance Access Key for that organization, scoped to read:compliance_user_data only.
  • An Openlayer workspace where you are an admin. Connecting, enabling surfaces, and disconnecting are admin-only actions.

Scope the Compliance Access Key

Request only the read scope the connector uses:
Never grant delete:compliance_user_data. Openlayer never requests delete, and a key that can delete compliance data can destroy your audit trail.
An Admin API key is not a substitute. Admin keys are rejected with 403, because they cannot read session transcripts.

Setup guide

Step 1: Open the integration

In Openlayer, go to Settings → Integrations, find Claude Compliance, and click Enable.

Step 2: Connect

Enter the Compliance Access Key. Click Test connection to validate the key without saving it. Then click Connect. The Claude Compliance connect form in Openlayer, with the Compliance Access Key field, Test connection, and Connect Openlayer checks the key against the Compliance API before storing it, and encrypts it at rest. The stored key is never returned by later requests. If the key is rejected, nothing is saved. On success, Openlayer confirms Claude Compliance connected and notes that product surfaces will appear shortly.

Step 3: Choose a sync schedule

Open the General tab. Periodic sync pulls new claude.ai chats and Cowork / Claude Code sessions from the Compliance API. Set Sync frequency to Every 15 minutes, Every 30 minutes, or Every hour. Turn periodic sync off to pause ingestion without disconnecting, or click Sync now to run a tick immediately. The overview on the same tab reports Status, how many surfaces are enabled out of the total, Last sync, and Error when the last tick failed. The General tab of a connected Claude Compliance integration in Openlayer, with the overview, the Periodic sync and Sync frequency settings, and Disconnect

Surfaces

Connecting registers the known surfaces under Configure surfaces. None of them ingest until you turn one on, so you can bring claude.ai, Cowork, and Claude Code online separately. Turn on a surface’s Enabled switch and choose where its rows go:
  • Create new project (the default) — Openlayer creates a project for that surface
  • Map to existing project — pick an existing project and pipeline instead
The Surfaces tab in Openlayer, listing Cowork (Desktop), Claude Code, and Cowork (Web / Mobile) enabled into their Claude projects, and claude.ai (Web / Mobile) disabled

Migrating an existing connector

Rows organized by user turn use different record IDs, so existing Claude Compliance surfaces must write to fresh projects. Disable each surface, then re-enable it with Create new project instead of mapping it to an existing pipeline. Openlayer creates a Claude - <surface> project. Run Backfill from the date you want to import. Your previous projects remain readable and can be archived when you no longer need them. The table is the operational view of the connector: On an enabled row, the menu (the three dots) has View project and Backfill.

Backfill

Backfill re-reads history the surface can still retrieve. The Backfill dialog, titled with the surface’s name, offers:
  • All available history
  • Custom start date — re-fetch from a date you pick
Then click Start backfill. The default history window is about 90 days. Transcripts older than that window are not pulled. Backfills are safe to repeat. Duplicate sessions are filtered on the way in, so re-reading transcripts you have already ingested does not create duplicate rows. The Backfill Claude Code dialog, with All available history, Custom start date, and Start backfill

What lands in Openlayer

Each user turn becomes one inference row:
  • Input is what the person typed.
  • Output is Claude’s final answer.
  • Model calls are nested steps with the model, Anthropic as the provider, and estimated tokens.
  • Tool steps are nested with their arguments and matching results.
Replayed conversation history and context inserted by Claude stay within the turn instead of opening separate rows. The connector retains the full text of long turns rather than rejecting them at 50,000 characters. The conversation or session is preserved, and the actor’s email — or their user ID, when Anthropic does not provide an email — becomes the user ID.
The Compliance API does not return token usage. Openlayer estimates tokens from the available text and uses that estimate to calculate cost, so both values are estimates.
Openlayer holds the current turn while Claude is still working. If no more activity arrives for about 25 minutes, the unfinished turn is written with a partial status.
Thinking blocks, system prompts, and file binaries are not returned by Anthropic, so they are not available to ingest. Synthetic and system markers are not treated as user prompts.
A few other behaviors are not obvious from the trace:
  • Attachments are names, not files. Openlayer never downloads file or artifact bytes. A filename is folded into the prompt as [attached: filename].
  • Soft-deleted claude.ai chats are still ingested. Openlayer keeps the transcript and records deleted_at on the session.
  • Message order follows the transcript Openlayer received. Timestamps on messages can arrive inverted. Openlayer does not re-sort them.
  • Sessions that 404 on retrieve are skipped. That includes Zero Data Retention sessions and sessions that have aged out. The rest of the sync continues.

Evaluating the ingested data

Once traces are flowing, you can evaluate Claude Enterprise usage the same way you evaluate application traffic:

Disconnecting

On the General tab, under Remove Claude Compliance from workspace, click Disconnect Claude Compliance and confirm. Disconnecting stops syncing new transcripts. Projects, pipelines, and traces already ingested are kept. Revoke the Compliance Access Key in Anthropic afterwards so the organization no longer grants that access.

Troubleshooting