Claude Platform Docs
管理合規 API

取得工作階段對話記錄

透過 Compliance API 列出您的使用者在 Claude 應用程式和代理(例如 Claude Cowork 和 Claude Code)中執行的工作階段,並取得其對話記錄。

本頁的端點會將您的 Claude Enterprise 組織中,使用者在 Claude 應用程式和代理(目前包括:Cowork、Claude Code、Claude Science、Claude for Microsoft 365 和 Claude in Chrome)中執行的「session」(工作階段)之「transcript」(對話記錄)提供給合規審查人員。每個工作階段都是與 Claude 的單一對話;其對話記錄是該對話中使用者提示、助理回應,以及工具呼叫與結果的序列。這些端點支援 eDiscovery(electronic discovery,電子證據開示)匯出,以及「data loss prevention」(資料外洩防護),即 DLP 的執行。

Compliance API 依工作階段的執行位置,將其分為兩個端點系列:本機工作階段端點用於在使用者電腦上執行的工作階段,遠端工作階段端點則用於在雲端中由 Anthropic 管理的環境裡執行的工作階段。兩個系列皆為唯讀,且皆不適用於 Admin API 金鑰(sk-ant-admin01-...):以 Admin API 金鑰驗證的呼叫會傳回 403 Forbidden。

下表將每項產品及其執行位置,對應到傳回其工作階段的端點系列,以及在回應中識別這些工作階段的 product_surface 值。隨著涵蓋範圍擴大,會有更多產品加入此表。

產品及其執行位置端點系列product_surface
Claude Desktop 中的 Cowork,在使用者的電腦上執行本機工作階段端點(/v1/compliance/apps/sessions/local)cowork
終端機、Claude Desktop 或 IDE 擴充功能中的 Claude Code,在使用者的電腦上執行本機工作階段端點claude_code
Claude Science 桌面應用程式,在使用者的電腦上執行本機工作階段端點claude_science
Claude for Microsoft 365(適用於 Excel、PowerPoint、Word 和 Outlook 的 Claude 增益集),在 Microsoft 365 桌面或網頁應用程式中執行本機工作階段端點office_agents/excel、office_agents/powerpoint、office_agents/word 或 office_agents/outlook(無法識別應用程式時為 office_agents)
Claude in Chrome(瀏覽器擴充功能的內建聊天),在使用者的電腦上執行本機工作階段端點claude_in_chrome
在 claude.ai 網頁版或行動版上啟動的 Cowork 工作階段,在雲端中由 Anthropic 管理的環境裡執行遠端工作階段端點(/v1/compliance/apps/sessions/remote)cowork_remote

本機工作階段的擷取與您的組織是否已啟用 Compliance API 相關聯,並在使用者以其 Claude Enterprise 帳戶登入期間適用。工作階段端點不會傳回以下內容:

  • 以 Claude Console API 金鑰驗證,或透過第三方雲端平台(例如 Amazon Bedrock、Google Cloud 或 Microsoft Foundry)執行的 Claude Code 工作階段。
  • Claude Code 雲端工作階段,這類工作階段在雲端基礎架構上執行,而非在使用者的電腦上執行。儘管兩者都在雲端中執行,這些雲端工作階段並不是遠端工作階段;遠端工作階段端點僅傳回 Cowork 工作階段。
  • 已啟用 HIPAA 就緒的組織中來自 Cowork 和 Claude Code 以外產品的本機工作階段。在這些組織中,本機工作階段端點僅傳回 Cowork 和 Claude Code 工作階段,且擷取的工作階段內容會儲存 30 天。
  • 適用「zero data retention」(零資料保留),即 ZDR 的本機工作階段。這些工作階段會從清單結果中排除,且擷取端點和訊息端點會對其傳回 404。

Anthropic 建議使用 Compliance API 來擷取工作階段內容。下表將本機工作階段和遠端工作階段,與 Cowork 和 Claude Code 可用的 OpenTelemetry 替代方案——Cowork 的 OpenTelemetry 記錄和 Claude Code 監控——進行比較。

本機工作階段(在使用者的電腦上)遠端工作階段(在雲端中)OpenTelemetry 記錄
傳遞方式拉取:透過 HTTPS 查詢和匯出拉取:透過 HTTPS 查詢和匯出推送:串流至您的 OTLP 收集器
設定可搭配您現有的 Compliance Access Key 使用可搭配您現有的 Compliance Access Key 使用管理員需設定 OTLP 端點和內容擷取設定
基礎架構由 Anthropic 託管由 Anthropic 託管由您執行收集器和儲存空間
ID 前綴clls_cse_不適用
product_surface 值cowork、claude_code、claude_science、claude_in_chrome,以及以 office_agents 開頭的值cowork_remote不適用
保留期限預設為 6 年,若已設定有限的自訂對話保留期限,則採用您組織的該期限;在已啟用 HIPAA 就緒的組織中為 30 天;由 Anthropic 保存6 年,除非使用者提前刪除工作階段;由 Anthropic 保存您的基礎架構,您的政策
使用者提示和助理回應是是是,視內容擷取設定而定
工具輸入預設每個輸入截斷為 10,000 位元組;可依要求提高至約 1 MiB預設每個輸入截斷為 10,000 位元組;可依要求提高至約 1 MiB截斷的摘要
工具結果內容預設每個文字項目截斷為 10,000 位元組;可依要求提高至約 1 MiB預設每個文字項目截斷為 10,000 位元組;可依要求提高至約 1 MiB大小和成功與否等中繼資料;Claude Code 也可透過一項有大小上限的選用設定擷取內容
檔案內容是,透過對話記錄中的工具呼叫(僅限文字;其他內容以預留位置呈現)是,透過對話記錄中的工具呼叫(僅限文字;其他內容會被省略)檔案路徑;Claude Code 也可透過一項有大小上限的選用設定擷取內容
主機和裝置中繼資料(終端機類型、工作區路徑)否否是
Token 用量和成本否;可透過 Claude Enterprise Analytics API 取得否;可透過 Claude Enterprise Analytics API 取得是

使用者電腦上的工作階段(本機工作階段)

本機工作階段是在使用者以其 Claude Enterprise 帳戶登入期間,於使用者電腦上執行的工作階段:目前包括 Claude Desktop 中的 Cowork、Claude Code(在終端機、Claude Desktop 或 IDE 擴充功能中)、Claude Science 桌面應用程式、Claude for Microsoft 365(在 Excel、PowerPoint、Word 和 Outlook 中),以及 Claude in Chrome 瀏覽器擴充功能。

Compliance API 透過三個端點提供本機工作階段:GET /v1/compliance/apps/sessions/local 列出工作階段中繼資料,GET /v1/compliance/apps/sessions/local/{session_id} 擷取單一工作階段的中繼資料,而 GET /v1/compliance/apps/sessions/local/{session_id}/messages 傳回單一工作階段的對話記錄。這三個端點都需要 read:compliance_user_data 範圍,且僅計入共用的 Compliance API「rate limit」(速率限制);它們不受適用於遠端工作階段端點的第二項請求額度限制。請參閱 429 Too Many Requests。如果您的上層組織無法使用本機工作階段,這三個端點都會傳回 404,並附上訊息 Local sessions are not available.(請參閱找不到本機工作階段);當工作階段清單或擷取的內容暫時無法使用時,它們會傳回 503(請參閱本機工作階段暫時無法使用)。

對於本機工作階段,Anthropic 會在每個對話的請求抵達 Claude API 時,於伺服器端記錄該對話;裝置上不會安裝任何東西,除了用戶端原本就會傳送至 Claude API 的請求之外,也不會收集任何其他資料。本機工作階段對話記錄顯示的是 Claude 被要求做什麼以及它傳回了什麼,而不是裝置上發生了什麼。檔案和網路活動只能透過對話記錄中的工具呼叫和工具結果看到,因此從未抵達 API 的活動(例如工作階段從未傳送的本機檔案)不會被擷取。

在使用客戶管理的加密金鑰的組織中,本機工作階段對話記錄會以您的客戶管理金鑰加密,並照常傳回。當該金鑰無法使用時(例如因為您停用或撤銷了它,或因為無法連線到它),訊息端點會針對受影響的頁面傳回 503 Service Unavailable,而不是對話記錄內容。這些訊息絕不會被回報為 not_captured(請參閱擷取本機工作階段對話記錄)。列出工作階段和擷取工作階段中繼資料不受影響。

清單端點會針對您的金鑰可讀取的每個已連結組織,傳回工作階段中繼資料,不含對話記錄內容。與遠端工作階段清單不同,它沒有組織或使用者篩選條件:請使用 created_at.gte 和 created_at.lt 參數在時間上限定結果範圍。兩者都接受帶有必要 UTC 偏移量的 RFC 3339 時間戳記,且當兩者同時提供時,created_at.lt 必須嚴格晚於 created_at.gte,否則請求會傳回 400 Bad Request。第三個時間篩選條件 updated_at.gte 是依最後活動而非首次活動來限定範圍:它會傳回最後一次推論呼叫發生在指定時間或之後的工作階段,並可與 created_at 篩選條件組合使用,而不會改變排序或分頁。您可以用它來輪詢自上次處理以來有活動的工作階段,如本節稍後所述。新的工作階段和訊息會在短暫的處理延遲後出現在結果中,通常在幾分鐘內;工作階段在啟動後立即未出現,並不一定表示它未被擷取。以下請求會列出自指定日期以來建立的工作階段。

cURL
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"
Response
{
  "data": [
    {
      "type": "compliance_local_session",
      "id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
      "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
      "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
      "user": {
        "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
        "email_address": "engineer@example.com"
      },
      "product_surface": "cowork",
      "created_at": "2026-07-09T14:02:11Z",
      "updated_at": "2026-07-09T14:02:38Z"
    },
    {
      "type": "compliance_local_session",
      "id": "clls_01HyLqMnOpQrStUvWxYzAbCd",
      "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
      "workspace_id": null,
      "user": {
        "id": "user_01HqRsTuVwXyZaBcDeFgHiJk",
        "email_address": null
      },
      "product_surface": "claude_code",
      "created_at": "2026-07-08T09:15:43Z",
      "updated_at": "2026-07-08T09:52:10Z"
    }
  ],
  "next_page": "page_AAEfQx7mPdLkq9Rt2VwHbZk"
}

結果依 created_at 以反向時間順序(最新的在前)排序,相同時間者依伺服器端的固定順序排列,且每個回應最多包含 limit 筆結果(預設 100,最大 500)。此端點僅能使用 page 和 next_page 權杖向前進行「pagination」(分頁)(請參閱分頁結果):在下一個請求中將回應的 next_page 值作為 page 查詢參數傳回,並在 next_page 為 null 時停止。回應中沒有 has_more 欄位。請在開始走訪清單後的 24 小時內完成;較舊的清單游標仍會被接受,但會依據目前的保留期限邊界重新評估,因此最舊保留活動即將超出保留期限的工作階段可能會被略過。

在每個工作階段物件中,user.id 一律會設定,且在帳戶刪除後仍會保留;當使用者的帳戶已被刪除,或使用者已不再是您的金鑰可讀取之組織的成員時,user.email_address 為 null。當工作階段未與工作區關聯時,workspace_id 為 null。一個本機工作階段對應一個用戶端工作階段 ID:在用戶端中開始新對話或清除其上下文,都會開始一筆新的工作階段記錄。對於 Claude Science,清單也可能包含應用程式自身背景工作的獨立工作階段(例如為對話命名;在較新的應用程式版本中還包括其審查者和委派軌道),而在較舊的應用程式版本中,部分背景工作會以額外訊息的形式出現在對話本身的對話記錄中。跨越某些應用程式更新而持續進行的 Claude Science 對話會顯示為兩個工作階段。這些行為都是預期中的。請將 id 值視為不透明字串;其格式可能會在未經通知的情況下變更。

對於 Claude for Microsoft 365,在增益集中刪除對話只會在用戶端發生,因此不會反映在 API 中:本機工作階段沒有 deleted_at 欄位,且該工作階段會持續列出,直到保留期限將其移除為止。

本機工作階段帶有 updated_at,但沒有 status:本機工作階段沒有伺服器端的生命週期狀態,其可見性改由保留期限決定。本機工作階段是以用戶端在工作階段期間發出的一系列 Claude API 呼叫(推論呼叫)來擷取的,而保留期限會個別套用於每個擷取的呼叫。created_at 是工作階段最早保留之呼叫的時間戳記,updated_at 則是其最後一次呼叫的時間戳記,兩者皆為 UTC。隨著較舊的呼叫超過保留期限,created_at 會相應地往後推移,而一旦工作階段中的每個呼叫都已過期,該工作階段就不會再被傳回;updated_at 追蹤最近一次呼叫,在此之前不受影響。由於 created_at 在不同次執行之間可能會變動,當您隨時間重新走訪清單時,請依 id 去除重複項目。若要在工作階段新增訊息時保持對話記錄為最新狀態,請使用 updated_at.gte 篩選條件進行輪詢,並讓連續的時間窗口彼此重疊。在清單端點上,updated_at 是一個下限:對於在頁面或 created_at.lt 窗口邊界時仍在進行中的工作階段,它可能會暫時落後於工作階段真正的最後活動時間,而新的呼叫只有在前述的短暫處理延遲之後才能被查詢到。由於這種落後,請將每次執行的 updated_at.gte 設定為比上一次執行的開始時間早幾分鐘,而不是恰好設定為上一次執行的時間。若將下限設定為恰好是上一次的時間,則最後一次呼叫在那一刻仍在建立索引的工作階段會被無聲且永久地遺漏,因為一旦下限越過該呼叫,之後的任何執行都不會再傳回它。請依 id 對傳回的工作階段去除重複項目、重新擷取其對話記錄,並依 id 對訊息去除重複項目。擷取工作階段或其訊息時,一律會反映確切的最新保留呼叫,因此定期對較舊的時間窗口進行核對處理,是比擴大重疊範圍更徹底的替代方案。

清單是根據工作階段活動中繼資料建立的,因此可能包含對話記錄內容未被擷取的工作階段,例如在您的組織開始擷取之前執行的工作階段(最早可追溯至您的保留期限所允許的範圍);此類工作階段的對話記錄會傳回每則訊息,並將其內容標記為無法使用(請參閱擷取本機工作階段對話記錄)。

擷取的本機工作階段內容預設自擷取起儲存 6 年。如果執行該工作階段的組織已在 claude.ai > Organization settings > Data and privacy 中設定有限的自訂對話保留期限,則改為套用該期限,無論其比預設值短或長;當組織設定了多個自訂保留期限時,套用最短的那一個。對該設定的變更會以兩種不同的方式生效:一旦設定變更,端點就會停止傳回早於組織目前期限的活動;而每則擷取的訊息則會依其擷取時生效的期限儲存,因此之後延長期限並不會恢復已過期的內容。在已啟用 HIPAA 就緒的組織中,擷取的本機工作階段內容自擷取起儲存 30 天,若組織的自訂對話保留期限較短,則依該期限儲存;6 年的預設值不適用。

若要直接擷取單一工作階段的中繼資料,請將其 ID 傳給 GET /v1/compliance/apps/sessions/local/{session_id}。回應與清單端點傳回的工作階段物件相同,沒有外層封裝,也不含對話記錄內容。格式錯誤的工作階段 ID 會傳回 400 Bad Request。單一的 404 Not Found 涵蓋回應中不加以區分的四種情況:工作階段不在您的金鑰可讀取的組織中(包括位於其他上層組織下的工作階段)、工作階段不存在、該工作階段適用零資料保留,或其中的每個呼叫都已超過保留期限。

product_surface(字串或 null)識別建立該工作階段的產品:cowork(使用者電腦上 Claude Desktop 中的 Cowork)、claude_code(Claude Code)、claude_science(Claude Science)、claude_in_chrome(Claude in Chrome 瀏覽器擴充功能的內建聊天),或 office_agents/excel、office_agents/powerpoint、office_agents/word 和 office_agents/outlook 其中之一(Claude for Microsoft 365,依應用程式區分;無法識別應用程式時僅為 office_agents)。隨著涵蓋範圍擴大,會出現新的值。

擷取本機工作階段對話記錄

訊息端點會傳回工作階段的對話記錄,該記錄是根據擷取的 Claude API 呼叫重建而成:使用者提示、助理文字、工具呼叫,以及工具結果的文字部分,除了大小截斷之外,全部依其傳送時的原樣傳回。該內容中的 URL、憑證或個人資料都不會被遮蔽,因此請將對話記錄視為敏感資料。對話記錄會省略或取代以下內容:

  • 思考區塊一律不包含在內。
  • 請求的「system prompt」(系統提示)一律不會傳回。會以一則內容為 [system prompt content not shown] 的標記訊息代替(通常每個工作階段一次;沒有擷取內容的工作階段不會帶有標記)。
  • 工具定義和 MCP 伺服器設定不屬於對話記錄的一部分。
  • 圖片、PDF 及其他二進位或結構化區塊不會傳回。每個此類區塊會以內容為 [<block type> content not shown] 的 text 區塊呈現(例如 [image content not shown]),並將 truncated 設為 true。工具結果中的非文字項目,例如網頁搜尋結果或程式碼執行工具的輸出,會被一個 [N non-text item(s) not shown] 項目取代,且該工具結果區塊的 truncated 為 true。對應的工具呼叫(其 input 中包含搜尋查詢或程式碼)仍會傳回。
  • text 區塊上的引用中繼資料(例如引用網頁搜尋結果之回答上的來源引用)會被省略。文字本身會傳回,且該區塊會將 truncated 設為 true。

CLAUDE.md 等專案指示檔案會以一般使用者角色內容的形式出現。當用戶端將 Skill 內容作為訊息內容傳送時,該內容會出現,且不會與其他使用者文字區分。如需涵蓋範圍摘要,請參閱 Compliance API 常見問題;如需比較本機工作階段、遠端工作階段和 OpenTelemetry 記錄的表格,請參閱本頁的簡介。

cURL
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"
Response
{
  "session": {
    "type": "compliance_local_session",
    "id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
    "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
    "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
    "user": {
      "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
      "email_address": null
    },
    "product_surface": "cowork",
    "created_at": "2026-07-09T14:02:11Z",
    "updated_at": "2026-07-09T14:02:38Z"
  },
  "data": [
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBa",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": {
        "type": "synthetic_marker"
      },
      "content": [
        {
          "type": "text",
          "text": "[system prompt content not shown]",
          "truncated": true
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBc",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "Fix the failing test in tests/auth_test.py",
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBd",
      "role": "assistant",
      "model": "claude-opus-5-5",
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "I'll read the test file first.",
          "truncated": false
        },
        {
          "type": "tool_use",
          "id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
          "name": "Read",
          "input": "{\"file_path\":\"tests/auth_test.py\"}",
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBe",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:38Z",
      "provenance": null,
      "content": [
        {
          "type": "tool_result",
          "tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
          "name": "Read",
          "is_error": false,
          "content": [
            {
              "type": "text",
              "text": "def test_login_expiry():\n    ..."
            }
          ],
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBf",
      "role": "assistant",
      "model": "claude-opus-5-5",
      "created_at": "2026-07-09T14:02:38Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "The test was asserting on a stale expiry timestamp. I've updated it.",
          "truncated": false
        }
      ]
    }
  ],
  "next_page": null
}

回應在分頁的 data 陣列旁嵌入了一個 session 封裝。此範例中的第一筆記錄是代替請求系統提示的標記;其 provenance 會在本節稍後說明。在此端點上,user.email_address 一律為 null:訊息端點不會解析電子郵件地址,因此此處的 null 並不表示使用者的帳戶已被刪除。若要將工作階段歸屬到某個電子郵件地址,請將 user.id 與清單端點或擷取端點(GET /v1/compliance/apps/sessions/local/{session_id})的結果進行關聯。

訊息預設依最舊的在前傳回;傳入 order=desc 可反轉順序。分頁使用與清單端點相同的 page/next_page 機制,limit 預設為 100,最大為 1,000。當回應達到其大小上限時,頁面可能會提前結束,因此訊息少於 limit 筆的頁面並不表示您已到達結尾;請持續分頁,直到 next_page 為 null。頁面游標會綁定到其發出時的工作階段和排序順序,且一次走訪的游標會在其第一頁之後 24 小時過期:過期的游標會傳回 400 Bad Request,告知您在不帶 page 參數的情況下重新開始,而重新開始的走訪會反映目前的保留期限邊界。為不同工作階段或 order 發出的游標也會被視為無效游標而傳回 400。

每則訊息都帶有一個 role(user 或 assistant)和一個由 text、tool_use 和 tool_result 區塊組成的 content 陣列。它也帶有一個 model:在從 Claude API 擷取的助理回合中,這是提供該回合服務的模型;而在使用者訊息以及任何設定了 provenance 的助理訊息上,它為 null,因為用戶端聲明的歷史記錄和合成標記並非由模型產生,而對於無法使用的內容,提供服務的模型是未知的。text 區塊帶有 text 和 truncated。tool_use 區塊帶有 id、name、input 和 truncated,其中 input 是 JSON 編碼的字串,而非物件。tool_result 區塊帶有 tool_use_id、name、is_error、由 text 項目組成的 content 陣列,以及 truncated。MCP 工具呼叫與結果,以及大多數伺服器工具呼叫與結果,都會被正規化為相同的 tool_use 和 tool_result 形式;任何其他區塊類型都會以 [<block type> content not shown] 預留位置呈現。訊息 id 在該回合被保留期間保持穩定。從同一個推論呼叫重建的每則訊息都帶有該呼叫的時間戳記,因此連續的訊息經常共用相同的 created_at 值;請保留傳回的順序,而不要依時間戳記重新排序。

每則訊息也帶有一個 provenance 欄位,描述其內容的擷取方式。對於由 Claude API 擷取的已驗證內容(這是常見情況),provenance 為 null。否則,它是一個物件,其 type 標示例外情況:

  • content_unavailable 表示內容無法傳回。content 陣列為空,而 provenance.reason 說明原因。not_captured 表示該回合沒有可用的內容。這並不能證明沒有儲存任何記錄:Anthropic 的資料處理政策不提供給 Compliance API 的內容,也會以相同原因回報;在其他部分已擷取的工作階段中,因此類原因而無法使用的個別回合亦然。無法使用的客戶管理金鑰是唯一的例外,會改為傳回 503 Service Unavailable。client_aborted 表示用戶端在回應完成之前關閉了連線或取消了請求,因此該回合的回應未被擷取;任何已串流至用戶端的部分輸出都不包含在內,且此原因僅適用於助理角色的回合。cmek_key_revoked 保留給以您組織的客戶管理金鑰加密、且該金鑰無法使用(例如已撤銷)時的內容。目前不會傳回此值,因為無法使用的金鑰會改為產生 503,但為了前向相容性,請處理此值。retention_elapsed 表示內容已超過保留期限。oversize 表示單一訊息超過了每則訊息的大小上限;該訊息仍會傳回,但 content 陣列為空。
  • client_asserted 標示由用戶端作為對話歷史記錄提供、且無法與擷取的回應相符的助理訊息;其作者身分未經驗證。
  • synthetic_marker 標示由端點本身產生的記錄,例如代替系統提示的標記。當用戶端在工作階段中途改寫或壓縮其對話歷史記錄時(例如在「context compaction」(上下文壓縮)之後),對話記錄會在該處插入一則標記訊息,並接著呈現用戶端傳送的新內容。當您的組織設有有限的保留期限,且該新內容包含助理訊息時,對話記錄會隱藏新內容中直到其最後一則助理訊息(含)為止的部分(會有第二個標記註明此情況),並僅顯示該處之後的使用者訊息,接著是工作階段的其餘部分。

標記訊息和用戶端聲明的訊息會以一個帶有方括號說明、並標記為 truncated: true 的 text 區塊開頭,例如 [system prompt content not shown]。請將這些記錄視為存在但無法使用或未經驗證,而非遺失,並容許無法辨識的 provenance 類型和原因。

有兩個參數限制每個工具區塊傳回的位元組數:tool_use_input_max_bytes 和 tool_result_max_bytes,兩者預設皆為 10,000 位元組。傳入 -1 可使用伺服器最大值(每個字串約 1 MiB);0 會傳回 400 Bad Request,而超過最大值的值會被限制為最大值。被任一上限截斷的字串會在字元邊界處截斷,並附加一個頻內後綴(例如 …[truncated; pass tool_result_max_bytes=-1 for the server max]),且其區塊會帶有 "truncated": true。因此,被截斷的 tool_use input 不再是有效的 JSON,所以請僅從未截斷的區塊解析工具輸入(或提高上限後重新擷取)。text 類型的區塊一律以相同的伺服器最大值(約 1 MiB)為上限;沒有任何參數可以提高此上限,且達到上限的 text 區塊也會帶有 "truncated": true。

Claude Science 是從其透過 repl 工具執行的程式碼中呼叫連接器(MCP 伺服器),而非以個別命名的工具呼叫,因此 Claude Science 對話記錄中沒有任何區塊是以連接器命名的。每個連接器呼叫都會出現在 repl tool_use 區塊之 input 內的程式碼中(例如 host.mcp("<server>", "<tool>", ...) 呼叫),而連接器輸出只有在該程式碼將其印出時,才會出現在對應的 tool_result 中。Cowork 和 Claude Code 工作階段則不同:它們以各連接器工具自己的 mcp__<server>__<tool> 名稱呼叫該工具,該名稱即為 tool_use 區塊的 name。若要監控 Claude Science 工作階段中的連接器使用情況,請解析 input 字串,並比對其中包含的程式碼,而非比對工具名稱。請為這些工作階段傳入 tool_use_input_max_bytes=-1,如此一來,較長的程式碼輸入會以伺服器最大值為上限傳回,而不會在連接器呼叫出現之前就在 10,000 位元組的預設值處被截斷。

對話記錄內容遵循使用者電腦上的工作階段中所述的保留期限。當工作階段的開頭已超過保留期限時,對話記錄會以單一個 reason 為 retention_elapsed 的 content_unavailable 預留位置開頭,接著是保留的訊息。當工作階段中的每個呼叫都已過期時,訊息端點會傳回 404 Not Found,與您的金鑰無法讀取之組織中的工作階段、不存在的工作階段,以及適用零資料保留的工作階段相同。格式錯誤的工作階段 ID 會傳回 400 Bad Request。

雲端中的工作階段(遠端工作階段)

在 claude.ai 網頁版或行動版上啟動的 Cowork 工作階段,會在雲端中由 Anthropic 管理的環境裡執行。Compliance API 透過兩個端點提供這些「remote sessions」(遠端工作階段):GET /v1/compliance/apps/sessions/remote 會列出工作階段的中繼資料,而 GET /v1/compliance/apps/sessions/remote/{session_id}/messages 則會傳回單一工作階段的「transcript」(對話記錄)。這兩個端點都需要 read:compliance_user_data 範圍,並且都會計入共用的 Compliance API「rate limit」(速率限制),另外還會計入這些端點專屬的第二個請求額度;請參閱 429 Too Many Requests。

列表端點預設為整個組織的範圍:省略 organization_ids[] 即可包含您的金鑰可讀取的所有 claude.ai 組織,或傳入最多 500 個值以縮小範圍。若要改為將列表範圍限定於特定使用者,請傳入 1–10 個 user_ids[] 值(可從列出組織使用者取得這些 ID);此篩選條件會比對工作階段的擁有者使用者,因此只要設定了 user_ids[],由代理程式擁有的工作階段就會被排除。請使用 created_at 範圍參數(gte、gt、lt、lte,採用 RFC 3339 格式)限定結果的時間範圍。目前沒有 updated_at 篩選條件。以下請求會列出自指定日期以來建立的工作階段。

cURL
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"
Response
{
  "data": [
    {
      "id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
      "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
      "user": {
        "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
        "email_address": "user@example.com"
      },
      "agent_id": null,
      "started_by_user": null,
      "status": "active",
      "created_at": "2026-07-01T17:04:05Z",
      "updated_at": "2026-07-01T18:00:41Z",
      "product_surface": "cowork_remote",
      "claude_project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq"
    },
    {
      "id": "cse_01TkNpRsUvWxYzAbCdEfGhJ4",
      "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
      "user": null,
      "agent_id": "cagt_01MnPqRsTuVwXyZaBcDeFgH8",
      "started_by_user": {
        "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
        "email_address": "user@example.com"
      },
      "status": "archived",
      "created_at": "2026-06-28T09:15:22Z",
      "updated_at": "2026-06-28T09:47:10Z",
      "product_surface": "cowork_remote",
      "claude_project_id": null
    }
  ],
  "next_page": "page_AAEfMk93cXpYdGxrZXk"
}

結果會依 created_at 以反向時間順序(最新的在前)排序,且每個回應最多包含 limit 筆結果(預設為 100,最大為 500)。此端點使用 page 和 next_page 權杖進行「pagination」(分頁)(請參閱分頁結果):在下一個請求中,將回應的 next_page 值作為 page 查詢參數傳回,並在 next_page 為 null 時停止。

工作階段的擁有者是使用者或代理程式其中之一,絕不會同時是兩者。對於使用者擁有的工作階段,user 會包含擁有者的 ID 和電子郵件地址(當該使用者已不再是您的金鑰可讀取之組織的成員時,email_address 為 null),而 agent_id 為 null。對於代理程式擁有的工作階段(例如排程任務),user 為 null,agent_id 會包含代理程式的 ID(前綴為 cagt_),而 started_by_user 則會識別發起該次執行的人員,例如啟動排程任務的人;在使用者擁有的工作階段上,started_by_user 為 null。

claude_project_id 是該工作階段所屬之 claude.ai 專案的 ID(前綴為 claude_proj_),若工作階段不屬於任何專案,則為 null。

status 為 pending、active、paused、archived 或 failed 其中之一。工作階段在佈建期間為 pending;pending 工作階段尚無對話記錄,在佈建完成之前,messages 端點會對其傳回 404。已刪除的工作階段永遠不會被傳回。

product_surface(字串或 null)會識別建立該工作階段的產品。此端點目前僅傳回 product_surface 為 cowork_remote 的工作階段:也就是在 claude.ai 網頁版或行動版上啟動的 Cowork 工作階段。

擷取遠端工作階段的對話記錄

messages 端點會傳回工作階段的對話記錄:使用者提示、助理回應,以及工具呼叫與結果。不包含思考區塊和圖片。如需涵蓋範圍摘要,請參閱 Compliance API 常見問題;如需比較遠端工作階段、本機工作階段與 Cowork 的 OpenTelemetry 記錄的表格,請參閱本頁的簡介。

cURL
session_id="cse_01WpQrStUvXyZaBcDeFgHjK6"

curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/sessions/remote/$session_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --header "anthropic-version: 2023-06-01"
Response
{
  "session": {
    "id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
    "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
    "user": {
      "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
      "email_address": null
    },
    "agent_id": null,
    "started_by_user": null,
    "status": "active",
    "created_at": "2026-07-01T17:04:05Z",
    "updated_at": "2026-07-01T18:00:41Z",
    "product_surface": "cowork_remote",
    "claude_project_id": null
  },
  "data": [
    {
      "id": "csev_01HjKmNpQrStUvWxYzAbCdE2",
      "role": "user",
      "created_at": "2026-07-01T17:04:05Z",
      "content": [
        {
          "type": "text",
          "text": "Summarize the customer feedback in the attached spreadsheet.",
          "truncated": false
        }
      ],
      "sent_by_user_id": null,
      "content_unavailable": false
    },
    {
      "id": "csev_01BcDeFgHjKmNpQrStUvWxY4",
      "role": "assistant",
      "created_at": "2026-07-01T17:04:06Z",
      "content": [
        {
          "type": "text",
          "text": "I'll start by reading the spreadsheet...",
          "truncated": false
        }
      ],
      "sent_by_user_id": null,
      "content_unavailable": false
    }
  ],
  "next_page": null
}

回應會在分頁的 data 陣列旁嵌入一個 session 封裝物件。在此端點上,該封裝物件的 user.email_address、started_by_user 和 claude_project_id 一律設為 null;請改從列表端點取得這些值。

訊息預設以最舊的在前的順序傳回;傳入 order=desc 即可反轉順序。分頁使用與列表端點相同的 page/next_page 機制,limit 預設為 100,最大為 1,000。當回應達到其大小上限時,頁面可能會提前結束,因此訊息數少於 limit 的頁面並不代表您已到達結尾;請持續分頁,直到 next_page 為 null 為止。

每則訊息都帶有 role(user 或 assistant)以及由 text、tool_use 和 tool_result 區塊組成的 content 陣列。訊息的 created_at 值是提交時間戳記:連續的訊息可能共用同一個時間戳記,或順序略微顛倒,因此請保留傳回的順序,而不要依 created_at 重新排序。在代理程式擁有的工作階段上,當可歸屬時,sent_by_user_id 會記錄傳送特定使用者訊息的使用者;否則為 null,所有助理訊息上也都是如此。當訊息的內容完全無法傳回時(例如超出大小限制),該訊息會帶有設為 true 的 content_unavailable。

有兩個參數會限制每個工具區塊傳回的位元組數:tool_use_input_max_bytes 和 tool_result_max_bytes,兩者預設皆為 10,000 位元組。傳入 -1 可使用伺服器上限(每個字串約 1 MiB);傳入 0 則會傳回 400 Bad Request。被任一上限截斷的區塊會帶有 "truncated": true,而被截斷的 tool_use 輸入將不再是有效的 JSON,因此請僅從未被截斷的區塊解析工具輸入(或提高上限後重新擷取)。

對於 pending 工作階段、不存在或已刪除的工作階段,以及位於您的金鑰無法讀取之組織中的工作階段,messages 端點會傳回 404 Not Found。

保留與刪除

工作階段端點為唯讀;本機與遠端工作階段無法透過 Compliance API 刪除。本機工作階段的對話記錄預設保留 6 年,若您的組織設定了有限期的自訂對話保留期間,則依該期間保留,在已啟用 HIPAA 就緒的組織中則保留 30 天,如使用者電腦上的工作階段中所述。遠端工作階段的對話記錄保留 6 年,除非使用者提前刪除該工作階段。使用者刪除工作階段後,遠端工作階段端點將不再傳回該工作階段,且其對話記錄無法透過 Compliance API 復原。若要了解這些期間與 Anthropic 其他保留安排之間的關係,請參閱 API 與資料保留。

後續步驟

使用相同的 Compliance Access Key 存取 claude.ai 聊天內容、檔案附件和專案。

逐欄位摘要說明工作階段對話記錄包含的內容,以及其他常見問題。

原始錯誤酬載及各錯誤的修正方式。

Compliance API 的端點路徑、參數和回應結構描述。

Was this page helpful?