Analytics Data Sources
Open Monitor > Analytics > Data sources to connect the sources that supply agent activity, skills, commands, and AI discovery data. Gateway activity appears automatically; agent telemetry and hook events require their own setup.
Start with the source card
The page separates Connect OTLP from Enable hooks. Each card names the supported agents, the data it collects, and the action that opens its setup.
| Card | Data shown on the card | Where to start |
|---|---|---|
| Willow Scanner Agent | Installed agents, MCP servers, skills and commands, device identity, and native telemetry | Open AI Discovery |
| Claude Cowork | Messages, model responses, tool usage, API requests, and errors | Configure Cowork observability in Anthropic Admin settings |
| Claude Code Profile | Active time, token usage and cost, commits and pull requests, skills, and optional messages | Configure profile |
| Codex | Discovery, native telemetry, and guard decisions | Use the scanner or manual Codex configuration for telemetry and Open Guards for hooks |
| Willow Guard Hooks | Messages, skills and commands, MCP prompts, and guard decisions | Under Enable hooks, select Open Guards |

If Analytics shows no data
OpenTelemetry is available to every organization, so each card shows its setup values right away. Follow the configuration instructions on the source card — opening the Data Sources page alone does not configure an agent on a developer machine.
If you only see Overview on Analytics, open Data sources to check which sources still need setup. Explore and Dashboards also require ClickHouse to serve the organization; see Explore.
How agent telemetry reaches Willow
Claude Code, Cowork, and Codex have their own OpenTelemetry exporter. Once configured, the agent sends OTLP over HTTP (JSON) straight to your organization's Willow connect URL. No Willow software has to run on the machine for this; the Scan Agent is one way to write the configuration, not a requirement.
| Agent | Willow endpoint | Telemetry toggle |
|---|---|---|
| Claude Code | https://{org-connect}/otlp/claude | Claude Code |
| Claude Cowork | https://{org-connect}/otlp/claude | Claude Code |
| Codex | https://{org-connect}/otlp/codex | Codex |
| Cursor | Uploaded by the Scan Agent | Cursor |
Every request carries Authorization: Bearer <org token>. The exporters append /v1/logs, /v1/metrics, and /v1/traces to the endpoint themselves. The setup values on each source card already include your connect hostname and token.
Willow matches each event to a user by the email the agent reports. Events with no matching user are stored without attribution.
Configure a source
Willow gateway activity appears automatically. Agent telemetry takes two steps: turn collection on in Willow, then configure the agent.
Turn on collection first
Open Admin > Settings > Log Settings > Collect Agent Telemetry and turn on each agent you want to collect. This switch is the only gate: while an agent is off, Willow rejects its telemetry even when the agent is configured correctly. Cowork uses the Claude Code switch.
Claude Code
- Select Configure profile on the Claude Code Profile card.
- Add the Willow telemetry (OTLP) add-on to a policy. Add Capture telemetry content too if you want prompts, responses, and tool output.
- Export and deploy the policy through MDM or managed settings. For a local test, use Install for me.
- Restart Claude Code.
Claude Code sends metrics and events: active time, cost, tokens, commits, pull requests, and native skill events.
Claude Cowork
Cowork does not read Claude Code policies. It requires an Anthropic Team or Enterprise plan.
- Copy the endpoint,
http/jsonprotocol, and authentication header from the Claude Cowork card. - Paste them into Anthropic Admin settings > Cowork > Observability and save.
- Start a new Cowork session.
Cowork sends messages, model responses, tool usage, API requests, and errors.
Codex
Codex does not read Claude Code policies. Expand Configure Codex manually on the Codex card and copy the [otel] block; your org token is already in it. Deploy it one of three ways:
- Single machine: paste the block into
~/.codex/config.tomland restart Codex. - Team or organization (managed settings): distribute the same block as Codex managed settings — a
managed_config.tomlpushed via macOS MDM (thecom.openai.codexdomain, keyconfig_toml_base64), or written to/etc/codex/managed_config.toml(Linux/macOS) or%ProgramData%\OpenAI\Codex\(Windows). Managed defaults apply at launch and take precedence over the user's~/.codex/config.toml. Because users can override managed defaults mid-session, add a matching hook in the admin-enforcedrequirements.tomlif you need telemetry to stay on. - Automatically: let the Willow Scan Agent configure it.
Codex sends logs, metrics, and traces.
Willow Scan Agent
Optional. On managed devices, the Scan Agent discovers installed AI agents, MCP servers, skills, and commands, and writes the telemetry configuration for every agent whose toggle is on:
- Claude Code and Codex: the same native exporter configuration as above.
- Cursor: Cursor has no native OTLP export, so the agent installs a Cursor hook that buffers events locally and uploads them in batches. Cursor telemetry requires the Scan Agent, and Willow must also enable it for your organization; ask Willow Support.
The Scan Agent leaves alone any agent that already exports to a collector other than Willow's.
Willow Guard Hooks
Open Security > Guards > Setup & Coverage, select Set up Guard Hooks beside Claude Code, Cursor, or Codex, activate the plugin, choose its hooks, and deploy it through managed settings or your plugin marketplace. Hook events capture messages, user-invoked skills and commands, MCP prompts, and guard decisions. See Guard Hooks.
Send telemetry through your own collector
To filter or enrich telemetry before Willow stores it, turn on OTLP proxy. Claude Code policies, Codex config, Cowork values, and the Scan Agent then point at your collector, which forwards to the endpoints above.
Troubleshooting
- Agent configured, but no data: check that the agent's switch is on under Collect Agent Telemetry. Willow returns
403for agents that are off. - Data arrives without a user: the email the agent reports does not match a Willow user.
- Prompt text is missing: turn on Log Content in Log Settings, and for Claude Code add Capture telemetry content to the policy.
Hook events and telemetry
OpenTelemetry and Guard Hooks collect different kinds of events. Use the source cards to decide which data you need: native telemetry reports agent usage, while hooks capture lifecycle events and guard decisions.

Related
- Analytics: gateway metrics, filters, and exports
- Guard Setup & Coverage: connect guard enforcement to each surface
- Log Settings: control stored content and responses
- OTLP proxy: route telemetry through your collector