Compliance APIでセッションの文字起こしを取得する手順
Compliance APIでCoworkやClaude Codeのローカル/リモートセッションを一覧・取得する手順です。取れる内容の範囲、保持期間、OpenTelemetryとの違いをまとめます。
Compliance APIで取れるセッションの種類
Compliance APIは、CoworkやClaude Codeなどユーザーが実行するセッションのトランスクリプトを、コンプライアンス担当者向けに公開します。1セッションはClaudeとの1会話で、トランスクリプトはユーザーのプロンプト・アシスタントの応答・ツール呼び出しと結果の並びです。eDiscovery(電子証拠開示)エクスポートとDLP(データ損失防止)の実施が主な用途です。このページはセッションのトランスクリプト(文字起こし)が対象で、claude.aiのチャット・ファイル・プロジェクトは対象外です。そちらはCompliance APIでチャット・ファイル・プロジェクトを取得・削除するにまとめています。
対応製品はCowork・Claude Code・Claude Science・Claude for Microsoft 365で、後半2つはベータです。必要なキーとスコープはCompliance APIのセットアップとアクセスキー作成で作ったCompliance Access Keyのread:compliance_user_dataで、Chat・ファイル・プロジェクトのエンドポイントと共通です。新しいキーやスコープ、クライアントの更新は不要です。Admin API keyではこのページのどのエンドポイントも呼べず、403 Forbiddenになります。
セッションは実行場所によって2系統のエンドポイントに分かれます。
| 製品と実行場所 | エンドポイント系統 | product_surface |
|---|---|---|
| Cowork(Claude Desktop、ユーザーのマシン) | エンドポイント系統ローカルセッション(/v1/compliance/apps/sessions/local) | product_surfacecowork |
| Claude Code(ターミナル・Claude Desktop・IDE拡張、ユーザーのマシン) | エンドポイント系統ローカルセッション | product_surfaceclaude_code |
| Claude Scienceデスクトップアプリ | エンドポイント系統ローカルセッション | product_surfaceclaude_science |
| Claude for Microsoft 365(Excel/PowerPoint/Word/Outlook) | エンドポイント系統ローカルセッション | product_surfaceoffice_agents/excel 等 |
| claude.ai web/mobileで開始したCoworkセッション(クラウド実行) | エンドポイント系統リモートセッション(/v1/compliance/apps/sessions/remote) | product_surfacecowork_remote |
次のセッションは取得対象外です。
- Claude Console APIキーで認証したClaude Codeセッション、またはAmazon Bedrock・Google Cloud・Microsoft Foundryなどサードパーティのクラウド経由で実行したセッション
- Claude Code on the web(クラウドでは動くが、リモートセッションが対象にするのはCoworkだけ)
- HIPAA readinessを有効化した組織のローカルセッション(取得対象のデータ自体が存在しない)
- Zero Data Retention(ZDR)が適用されているローカルセッション(一覧から除外され、取得・メッセージ取得は404)
ユーザーのマシン上のセッション(ローカルセッション)を取得する
ローカルセッションは、ユーザーがClaude Enterpriseアカウントでサインインしている間に、ユーザーのマシン上で実行されるセッションです。何もデバイスにインストールされず、Anthropicはクライアントから届くClaude APIへのリクエストだけをサーバー側で記録します。トランスクリプトが示すのは「Claudeに何を頼み、何が返ったか」であり、デバイス上で起きたことそのものではありません。APIに届かないローカルファイル操作などはトランスクリプトに残りません。
一覧はGET /v1/compliance/apps/sessions/localで取得します。組織・ユーザーでの絞り込みは無く、created_at.gte/created_at.ltで期間を絞ります。
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/local" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--header "anthropic-version: 2023-06-01" \
--data-urlencode "created_at.gte=2026-07-01T00:00:00Z" \
--data-urlencode "limit=100"結果はcreated_atの新しい順、page/next_pageトークンでページ送りします。updated_at.gteは最終アクティビティで絞る第3のフィルターで、前回の巡回以降にアクティブだったセッションだけを拾うポーリング用途に使えます。巡回のたびにupdated_at.gteは前回開始時刻より数分手前に設定してください。反映には数分の遅延があるため、ちょうど前回時刻ぴったりを境界にすると、境界の瞬間にインデックス中だったセッションを恒久的に取りこぼします。1回のリストの巡回は開始から24時間以内に完了させます。24時間を過ぎたカーソルも受理されますが、その時点の保持期限で再評価されるため、保持期限が迫っているセッションが巡回中に抜け落ちることがあります。
ローカルセッションのトランスクリプトを取得する
session_id="clls_01HxKpLmNoPqRsTuVwXyZaBc"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/sessions/local/$session_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--header "anthropic-version: 2023-06-01"トランスクリプトはユーザーのプロンプト・アシスタントのテキスト・ツール呼び出し・ツール結果のテキスト部分を、サイズによる切り詰め以外はそのまま返します。URL・認証情報・個人データはマスクされないので、取得したトランスクリプトは機密情報として扱う必要があります。次の内容は含まれない、または置き換えられます。
- Thinking(思考過程)ブロックは常に含まれない
- システムプロンプトの本文は返らず、
[system prompt content not shown]というマーカーメッセージに置き換わる - ツール定義とMCPサーバー設定はトランスクリプトに含まれない
- 画像・PDFなどバイナリや構造化ブロックは
[image content not shown]のようなプレースホルダーになりtruncatedがtrueになる
CLAUDE.mdのようなプロジェクト指示ファイルは、通常のユーザーロールのコンテンツとして現れます。ツール入力・ツール結果の各テキストは既定で10,000バイトに切り詰められ、tool_use_input_max_bytes/tool_result_max_bytesに-1を渡すとサーバー上限(1エントリあたり約1MiB)まで拡張できます。切り詰められたtool_useのinputは妥当なJSONではなくなるため、パースは切り詰められていないブロックだけに限るか、上限を上げて取り直します。
各メッセージにはprovenance(由来)フィールドが付き、通常のキャプチャ済みコンテンツではnullです。content_unavailableはコンテンツを返せないことを示し、reasonにその理由(not_captured・client_aborted・retention_elapsed・oversize等)が入ります。synthetic_markerはエンドポイント自身が生成したマーカーで、クライアントがコンテキストを圧縮・書き換えた際の挿入点を示します。想定外のprovenance種別・理由が来ても無視できるよう、フォワード互換な実装にしておきます。
クラウド上のセッション(リモートセッション)を取得する
claude.aiのwebまたはモバイルで開始したCoworkセッションは、Anthropicが管理するクラウド環境で実行され、リモートセッションとして別のエンドポイント系統から取得します。
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--header "anthropic-version: 2023-06-01" \
--data-urlencode "created_at.gte=2026-06-01T00:00:00Z" \
--data-urlencode "limit=100"一覧はorganization_ids[](最大500件)、またはuser_ids[](1〜10件、組織のユーザー一覧エンドポイントで取得)で絞れます。user_ids[]を指定するとエージェントが所有するセッションは対象から外れます。statusはpending・active・paused・archived・failedのいずれかで、pendingの間はトランスクリプトが無く、メッセージ取得は404になります。リモートセッションはローカルセッションと違い、共有のレート制限に加えて専用の第2のリクエスト予算を消費します。ここが尽きたときの429はretry-afterが常に1(実際のリセット時刻ではなく最小待機時間)で返るため、再発する場合は指数バックオフで待ちます。
ローカルとリモート、OpenTelemetryとの違い
CoworkとClaude Codeには、Compliance APIのセッション取得と別に、自前のコレクターへイベントをストリーミングするOpenTelemetryロギングもあります。用途が異なるため、選ぶ前に比較しておく価値があります。
| 項目 | ローカルセッション | リモートセッション | OpenTelemetryロギング |
|---|---|---|---|
| 配信方式 | ローカルセッションPull(HTTPSで問い合わせ) | リモートセッションPull(HTTPSで問い合わせ) | OpenTelemetryロギングPush(自前のOTLPコレクターへ) |
| インフラ | ローカルセッションAnthropicがホスト | リモートセッションAnthropicがホスト | OpenTelemetryロギング自組織でコレクターとストレージを運用 |
| 保持期間 | ローカルセッション既定6年(組織のカスタム保持期間があればそちら) | リモートセッション6年(ユーザーが削除すればそれより短い) | OpenTelemetryロギング自組織のポリシー次第 |
| トークン使用量・コスト | ローカルセッション含まれない | リモートセッション含まれない | OpenTelemetryロギング含まれる |
Anthropicは、CoworkとClaude Codeのセッション内容を取得する手段としてCompliance APIを推奨しています。OpenTelemetryロギングもプロンプトと応答を取得できますが、トークン使用量やホストのメタデータなど、Compliance APIには無い情報も含みます。両者はユーザーIDや組織IDを共有しているため、突き合わせて使うこともできます。
保持期間と削除
組織がカスタムの保持期間を設定している場合、設定変更はすぐに反映されて古いアクティビティが返らなくなりますが、すでにキャプチャ済みのメッセージはキャプチャされた時点の保持期間のまま保存されます。あとから期間を延ばしても、すでに期限切れになったコンテンツは復元されません。リモートセッションはユーザーが削除すると一覧から返らなくなり、トランスクリプトはCompliance API経由でも復元できません。
まとめ
Compliance APIのセッションエンドポイントは、CoworkやClaude Codeなどローカルで動く製品と、claude.ai経由でクラウド実行されるCoworkリモートセッションの2系統に分かれ、どちらもChat・ファイル・プロジェクトと同じCompliance Access Keyのread:compliance_user_dataで取得します。ローカルセッションはHIPAA readinessやZDRが有効な組織では取得対象になりません。トランスクリプトは機密情報そのものなので、取得後の保管・アクセス制御も自組織のポリシーに合わせて設計してください。
キーとスコープの作り方はCompliance APIのセットアップとアクセスキー作成、chat・ファイル・プロジェクトの取得と削除はCompliance APIでチャット・ファイル・プロジェクトを取得・削除するにまとめています。ZDRがどの契約形態で有効になるかはClaude Zero Data Retentionが有効になる契約形態の切り分けを参照してください。