Skip to content
Last9
Book demo

Claude Cowork

Send Claude Cowork session telemetry — prompts, tool calls, API costs, and errors — to Last9 via OpenTelemetry.

Claude Cowork is Anthropic’s agentic desktop app for knowledge work — file organization, research synthesis, document creation, and multi-step task automation. It emits OpenTelemetry events using the same schema as Claude Code, so the same Last9 setup gives you full visibility into Cowork sessions: prompts submitted, tools invoked, API costs, and errors.

What gets exported

Cowork exports five event types as OpenTelemetry log records, identical in structure to Claude Code events:

EventEmitted whenKey attributes
claude_code.user_promptUser submits a promptprompt.length, session.id, user.email
claude_code.api_requestClaude API respondsllm.usage.total_tokens, cost_usd, model, duration_ms
claude_code.api_errorAPI call failserror.message, http.status_code, retry_attempt
claude_code.tool_resultTool execution completestool.name, tool.success, duration_ms
claude_code.tool_decisionPermission prompt resolvedtool.name, tool.decision (accept/reject), decision.source

All events include a prompt.id UUID linking every event produced while processing a single user prompt, plus workspace.host_paths identifying which local directories were selected for the session.

Prerequisites

  1. Last9 account — Sign up at app.last9.io
  2. Claude Desktop with Cowork enabled — Download at claude.com/download
  3. Team or Enterprise plan with admin access
  4. OTLP credentials — Get your endpoint and auth header from Integrations → OpenTelemetry

Setup

  1. Get your Last9 OTLP credentials

    Navigate to Integrations → OpenTelemetry in your Last9 dashboard. Copy:

    • OTLP Endpoint (e.g., https://otlp-aps1.last9.io:443)
    • Authorization header (e.g., Basic <base64-token>)
  2. Open Cowork monitoring settings

    In Claude Desktop, go to Settings → Monitoring (admin access required).

  3. Configure the OTLP connection

    Fill in the three fields:

    FieldValue
    OTLP endpointhttps://<your-last9-otlp-endpoint>/v1/logs
    OTLP protocolhttp/json
    OTLP headersAuthorization=Basic <your-last9-auth-token>
  4. Save and restart Claude Desktop

    Click Save. Configuration is loaded at session start — you must restart the Desktop app for the settings to take effect.

  5. Run a Cowork task and verify

    Start any Cowork task. Navigate to Logs in Last9 and filter by service.name = cowork or search for claude_code.api_request to confirm events are flowing.

What you can do in Last9

Cost tracking per user

Every claude_code.api_request event carries cost_usd, input_tokens, and output_tokens tagged with user.email. Filter Last9 Logs by user to see per-person Cowork spend across your organization.

Session replay via prompt.id

All events from a single user interaction share a prompt.id UUID. Filter Last9 Logs by a specific prompt.id to reconstruct the full sequence:

user_prompt → api_request → tool_decision → tool_result → api_request

Tool usage audit

claude_code.tool_decision events record every permission prompt with tool.decision = accept | reject. Use this to understand which file operations or tools users are approving or blocking in their Cowork sessions.

Workspace visibility

The workspace.host_paths attribute identifies which local directories were shared with Cowork during the session — useful for auditing which data sources are being accessed.

Shared schema with Claude Code

Cowork reuses Claude Code’s OTel event schema via the Claude Agent SDK. If you are already sending Claude Code telemetry to Last9, Cowork events will land in the same log stream and can be distinguished by:

  • terminal.type — set to cowork for Cowork sessions vs cli for Claude Code
  • workspace.host_paths — only present in Cowork events

You can use a single Last9 dashboard covering both products by filtering on service.name (claude-code vs cowork) or grouping on terminal.type.


Troubleshooting

No events in Last9 after running a Cowork task

  • Confirm you restarted Claude Desktop after saving the settings — configuration loads at session start only
  • Verify the OTLP protocol is set to http/json — Last9 requires HTTP, not gRPC
  • Check the header format: Authorization=Basic <token> with no extra quotes

401 / authentication errors

Settings panel not visible

  • Cowork monitoring configuration requires admin access on Team or Enterprise plans — confirm your role in the Claude admin console

Please get in touch with us on Discord or Email if you have any questions.