5 Claude Code setups the Claude Compliance API never captures in 2026

Five Claude Code and Cowork setups return no transcript through Anthropic's Compliance API, including every session routed via Amazon Bedrock.

Read time
11 min
Word count
1.5K
Sections
11
FAQs
8
Share
Claude Compliance API local session coverage gaps, Bedrock CMEK HIPAA ZDR, August 2026
Five Claude Code and Cowork setups return no transcript through the Compliance API.
On this page · 11 sections
  1. What actually shipped
  2. The five setups that return nothing
  3. What a transcript leaves out
  4. The export loop that skips messages
  5. Retention, deletion and the asymmetry
  6. Compliance API or OpenTelemetry
  7. India-specific considerations
  8. What is still unknown
  9. FAQ
  10. How eCorpIT can help
  11. References

Summary. On 11 August 2026 Anthropic added local session endpoints to the Compliance API, so a Claude Enterprise reviewer can now pull the transcript of a Cowork or Claude Code session that ran on an employee's laptop. Three endpoints sit under /v1/compliance/apps/sessions/local, they reuse the existing Compliance Access Key with the read:compliance_user_data scope, and captured content is held for 6 years by default. The coverage is narrower than the announcement reads. Five common configurations return nothing at all, Admin API keys get a 403, tool inputs are cut at 10,000 bytes unless you raise them toward the roughly 1 MiB server maximum, and the obvious export loop silently misses messages. For an Indian data fiduciary the gap matters twice over, because the Schedule to the DPDP Act 2023 sets a ceiling of ₹250 crore for failing to take reasonable security safeguards, and an incomplete transcript archive is a weak answer to a regulator.

What actually shipped

The Claude Platform release notes dated 11 August 2026 record three endpoints in beta for Claude Enterprise organizations: GET /v1/compliance/apps/sessions/local lists session metadata, GET /v1/compliance/apps/sessions/local/{session_id} retrieves one session, and GET /v1/compliance/apps/sessions/local/{session_id}/messages returns the transcript.

Nothing is installed on the device. Anthropic's session transcript documentation is explicit that local sessions are recorded server-side "as its requests reach the Claude API", so the transcript shows what Claude was asked to do and what it returned, not what happened on the machine. A local file the session never read never appears.

That single design decision produces most of the gaps below.

The five setups that return nothing

Anthropic lists the exclusions across the Compliance API FAQ and the integration patterns page. They are consistent between the two documents, which is worth saying, because vendor docs often are not.

Setup Session listed? Transcript returned?
Claude Code authenticated with a Claude Console API key No No
Claude Code on Amazon Bedrock, Google Cloud or Microsoft Foundry No No
Claude Code on the web No No
Organization with HIPAA readiness enabled No No
Session under zero data retention (ZDR) No 404 on retrieve and messages
Organization using customer-managed encryption keys (CMEK) Yes No content

The Bedrock row is the one that catches large enterprises. Teams that route Claude Code through Amazon Bedrock did so for a governance reason, usually to keep inference inside an existing AWS account and its logging. That decision now also removes those sessions from the Compliance API. If your rollout looks like the pattern in our note on how to govern Claude Code across Bedrock and Google Cloud, your compliance evidence lives in your cloud provider's logs, not Anthropic's.

The CMEK row is the sharper trap, because it fails quietly. Sessions still list. Every message comes back with an empty content array and a provenance.reason of not_captured. The CMEK documentation confirms the behaviour. A reviewer who checks that sessions appear, and does not open one, will conclude coverage is fine.

What a transcript leaves out

A captured transcript is not the full record either. Per Anthropic's own list, session transcripts omit thinking blocks, the system prompt (a [system prompt content not shown] marker stands in), tool definitions, MCP server configuration, citation metadata, and every image, PDF or other binary block, which appears only as a placeholder such as [image content not shown] with truncated set to true.

What is returned is returned raw. The documentation states: "Nothing masks URLs, credentials, or personal data in that content, so treat transcripts as sensitive." An engineer who pasted a connection string into a prompt in March has put it in a store that a compliance reviewer can read for the next 6 years.

Two parameters cap tool blocks. tool_use_input_max_bytes and tool_result_max_bytes both default to 10,000 bytes; pass -1 for the server maximum of about 1 MiB per string, 0 returns a 400. A truncated tool_use input is no longer valid JSON, so any pipeline that parses tool arguments has to either raise the cap or skip blocks flagged truncated.

The export loop that skips messages

This is the part a team will get wrong, and the documentation says so plainly enough that it reads as a warning.

Local sessions carry no status and no updated_at. created_at is the timestamp of the session's earliest retained call, so it moves forward as old calls age out. Two consequences follow. First, deduplicate on id, because a session can appear under a different created_at on a later walk. Second, and worse for data loss prevention: a session that gains messages after you exported it does not reappear in a later created_at window. Anthropic's fix is to re-list a trailing window at least as long as your longest-running sessions on every run and re-fetch those transcripts.

A long-lived Claude Code session on a Friday afternoon, exported at 17:00 and continued until 19:00, produces an archive that is missing two hours unless the loop was built that way from the start.

Cursors expire too. A list walk must complete within 24 hours of its first page; message-walk cursors expire 24 hours after the first page and return a 400 telling you to restart without the page parameter. Restarting re-evaluates against the current retention boundary.

Retention, deletion and the asymmetry

Dimension Local sessions Remote sessions
ID prefix clls_ cse_
List filters created_at range only Organization, user, created_at range
Lifecycle fields None status, updated_at
Retention 6 years, or a finite custom conversation retention period 6 years
Rate limits Shared Compliance API limit Shared limit plus a second request budget
Deletion through the API No No

Neither family can be deleted through the API. The only lever is the organization-wide conversation retention period in claude.ai organization settings, and it behaves asymmetrically: shortening it stops the endpoints returning older activity as soon as the setting changes, while each captured message is stored for the period in effect when it was captured, so lengthening the period later does not restore content that already expired. Where several custom retention periods are configured, the shortest applies.

Read that against an erasure request. You cannot delete one employee's Claude Code transcripts through the Compliance API. You can only shorten retention for everyone, and you cannot undo it.

Rate limits bound the whole exercise. The error reference puts the Compliance API at 600 requests per minute per parent organization, shared across every Compliance Access Key and every linked organization's Admin API keys. List pages cap at 500 records, message pages at 1,000. Admin API keys cannot call these endpoints at all and receive a 403; scopes on a Compliance Access Key are immutable after creation, so an insufficient-scope key has to be replaced rather than edited.

Compliance API or OpenTelemetry

Anthropic publishes a comparison rather than leaving teams to guess, and the honest reading is that neither tool answers the whole question.

Capability Compliance API, local sessions OpenTelemetry logging
Delivery Pull over HTTPS Push to your OTLP collector
Infrastructure Anthropic-hosted You run collector and storage
Retention 6 years by default Your infrastructure, your policy
Prompts and responses Yes Yes, subject to capture settings
Token usage and cost No Yes
Host and device metadata No Yes

Claude Code monitoring redacts prompt text by default; OTEL_LOG_USER_PROMPTS=1 and OTEL_LOG_ASSISTANT_RESPONSES=1 turn content on, and CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH defaults to 61,440 UTF-16 code units, roughly 60 KB, sized for backends that cap attribute values at 64 KB. Events from both sides share organization and user identifiers, so they can be joined. For teams already carrying an OTLP pipeline, the sensible split is telemetry from OpenTelemetry and legal-hold transcripts from the Compliance API, with the five excluded setups covered by whatever your cloud provider logs.

India-specific considerations

An Indian data fiduciary running Claude Code through Bedrock in ap-south-1 should not assume Anthropic holds a retrievable record of those sessions, because it does not. The Schedule to the DPDP Act 2023 sets a ceiling of ₹250 crore for failure to take reasonable security safeguards to prevent a personal data breach, and penalties are fixed-rupee ceilings assessed per instance. Two practical points follow for a rollout governed the way we describe in the DPDP engineering playbook: decide which store is your system of record before the first laptop is enrolled, and write the retention period down, because 6 years of unmasked prompt text is a purpose-limitation question a Data Protection Board will ask about.

What is still unknown

The local and remote session endpoints are in beta, and product_surface values are documented as expanding, so today's cowork and claude_code list will grow. Anthropic reserves a cmek_key_revoked provenance reason that is "not currently returned" and asks integrators to handle it for forward compatibility. Whether Bedrock and Google Cloud sessions ever become capturable is not addressed anywhere in the current documentation; on those platforms the cloud provider is the data processor, which suggests they will not.

Run the check before you rely on the archive. List one day, open one transcript, and confirm the content array is not empty. That five-minute test separates a working evidence trail from a directory listing, and it is the same discipline we apply when we build enterprise AI agent governance layers for production rollouts of the kind covered in our guide to enterprise AI agents in production.

FAQ

How eCorpIT can help

eCorpIT builds the evidence pipeline that sits behind an AI coding-agent rollout: deciding which store is the system of record, wiring the export loop so it survives moving created_at values, and joining OpenTelemetry telemetry to Compliance API transcripts on the shared organization and user identifiers. We design applications aligned with DPDP Act 2023 requirements, and we are ISO 27001:2022 certified. If your Claude Code fleet is split across the Claude API and Amazon Bedrock, book a coding-agent governance review and we will map which sessions are actually retrievable before your first audit asks.

References

  1. Retrieve session transcripts, Anthropic
  1. Claude Platform release notes, Anthropic
  1. Compliance API FAQ, Anthropic
  1. Compliance API integration patterns, Anthropic
  1. Compliance API errors, Anthropic
  1. Compliance API overview, Anthropic
  1. Set up the Compliance API, Anthropic
  1. Customer-managed encryption keys, Anthropic
  1. API and data retention, Anthropic
  1. Chat, file and project content endpoints, Anthropic
  1. Monitoring usage with OpenTelemetry, Claude Code documentation
  1. The Schedule, Digital Personal Data Protection Act 2023

Last updated: 23 August 2026.

Frequently asked

Quick answers.

01 Does the Claude Compliance API capture Claude Code running on Amazon Bedrock?
No. Anthropic's documentation lists Claude Code run through a third-party cloud platform, naming Amazon Bedrock, Google Cloud and Microsoft Foundry, among the sessions the Compliance API does not capture. Those sessions never appear in the local session list. On those platforms the cloud provider is the data processor, so evidence has to come from the provider's own logging.
02 What happens to session transcripts when an organization uses customer-managed encryption keys?
Local sessions are still listed and retrievable as metadata, but transcript content is not returned. Each message comes back with an empty content array and a provenance reason of not_captured. A reviewer who confirms only that sessions appear will wrongly conclude coverage is working, so open an actual transcript when you test.
03 How long are Claude Code and Cowork local session transcripts retained?
Captured local session content is stored for 6 years from capture by default. If the organization has set a finite custom conversation retention period in claude.ai organization settings, that period applies instead, whether shorter or longer. Where more than one custom period is configured, the shortest applies to the stored content.
04 Can I delete one user's local session transcripts through the Compliance API?
No. The documentation records deletion through the API as unavailable for both local and remote sessions. The only control is the organization-wide conversation retention period, and it is asymmetric: shortening it immediately stops older activity being returned, while lengthening it later does not restore content that has already expired.
05 Why does my export loop miss messages that were added after the first run?
Local sessions carry no updated_at, and created_at does not move later as a session continues. A session that gains messages after you export it therefore never reappears in a later created_at window. Re-list a trailing window at least as long as your longest-running sessions and re-fetch those transcripts each run.
06 What is truncated in a session transcript by default?
Tool blocks are capped by tool_use_input_max_bytes and tool_result_max_bytes, both defaulting to 10,000 bytes, raisable to the server maximum of about 1 MiB by passing -1. Text blocks are always capped near 1 MiB. A truncated tool input is no longer valid JSON, so parse only untruncated blocks.
07 Can an Admin API key call the local session endpoints?
No. Calls authenticated with an Admin API key return 403 Forbidden. The endpoints require a Compliance Access Key carrying the read:compliance_user_data scope, the same key and scope used for chat, file and project content. Compliance Access Key scopes are immutable after creation, so an under-scoped key must be replaced.
08 What are the rate limits on the Compliance API?
Requests are limited to 600 per minute per parent organization, shared across every Compliance Access Key and the Admin API keys of all linked organizations, and across every /v1/compliance/* endpoint. Remote session endpoints carry a second budget on top. List pages cap at 500 records and message pages at 1,000.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.