Skip to content
Jents Academy
Connect your AI 3 min read

Connect Claude Cowork

Get Claude Cowork into Jents

Cowork reports what it used over OpenTelemetry, the same idea as Claude Code โ€” except Cowork also reports the real dollar cost of every call, so nothing here is estimated. Setup is one screen in the Claude admin console, done once for the whole organization.

What you get
Connects by๐Ÿ“ฎ Telemetry (events)
CostExact โ€” Cowork reports cost_usd itself
AttributionPer person, automatically (Cowork stamps every event with the user's email)
NeedsClaude Team or Enterprise, desktop app 1.1.4173+, and an org admin
Changes your call pathNo โ€” calls still go straight to Anthropic

One admin turns it on for everyone. Unlike Claude Code, there is nothing for each teammate to paste. No data leaves Claude until an admin sets the endpoint below.


1. Get your capture key

Add AI source โ†’ "AI your team uses" โ†’ Generate an Activation key. Copy the key.

Your endpoint is:

https://app.jents.io/api/capture

2. Point Cowork at it

In the Claude admin console: Admin settings โ†’ Cowork, then fill in the OTLP fields:

FieldValue
OTLP endpointhttps://app.jents.io/api/capture
OTLP protocolhttp/json (http/protobuf also works)
OTLP headersAuthorization=Bearer YOUR-ACTIVATION-KEY

Save. That's the whole setup.

Enter the base URL, not .../v1/logs. Cowork appends the signal path itself โ€” the same convention every OpenTelemetry exporter follows.

3. Confirm it's flowing

Use Cowork for a minute, then open Observability โ†’ Subscriptions. A Claude Cowork row appears with the people using it. Per-person detail is on Observability โ†’ group by Person.

Events arrive in batches, so give it a couple of minutes before worrying.


What Jents keeps (and what it doesn't)

Cowork emits six kinds of event. Jents reads the two that describe a call โ€” api_request and api_error โ€” and drops the rest on arrival:

EventKept?Why
api_requestโœ…Tokens, cost, model, duration โ€” this is the usage
api_errorโœ…So your success rate is real, not silently rosy
user_promptโŒPrompt text/length โ€” not needed to measure cost
assistant_responseโŒResponse text โ€” and counting it would double-count the turn
tool_resultโŒWhich tool ran, no tokens attached
tool_decisionโŒPermission decisions

So no prompt or response content is stored by Jents, even if you have Claude's otlpContentCapture setting switched on for another destination.

Why your Cowork cost may show $0

By design. Cowork isn't sold separately โ€” it comes with a Claude Team or Enterprise seat. If those seats are already counted somewhere else in Jents, the honest extra cost of Cowork is nothing, so Jents defaults it to "Included with an existing Claude seat" rather than inventing a second bill for a subscription you're already paying.

If your Claude seats exist only for Cowork, set the real plan: Observability โ†’ Subscriptions โ†’ Claude Cowork โ†’ confirm the plan (Claude Team or Claude Enterprise). The seat bill then flows into your budgets, forecast and per-person cost.

Either way the tokens and the per-call cost_usd are captured from day one โ€” that's the "what is this actually worth" number, and it's on the tool's page as usage value.

Troubleshooting

What you seeWhat it means
Nothing arrivesRe-check the header format: Authorization=Bearer jingest_โ€ฆ โ€” it's one string, Authorization is the header name, not part of the value.
Nothing arrives, header looks rightConfirm the Claude desktop app is 1.1.4173 or later, and that the admin saved the setting for the right organization.
Usage appears under the wrong personCowork attributes by the signed-in user's email. Someone signed into Claude with a personal address will show separately โ€” invite that address on People, or have them sign in with their work account.
Your network blocks itCowork adds the collector's hostname to the session egress allowlist automatically, so app.jents.io doesn't need to be allowlisted by hand.

Related

  • Track your team's AI usage โ€” the Claude Code side of the same story
  • How Jents supports every tool โ€” what you get from each connection type