Loading...

Skip to main content

Data Collected

What we do NOT collect​

No prompt or response content

We do not collect the content of your conversations — no prompts, no model responses, no raw API bodies, and no tool results/output. Content capture is disabled in every supported tool: log_user_prompt = false for Codex, captureContent: false for Copilot in VS Code, OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false for Copilot CLI and the macOS desktop app, and for Claude Code OTEL_LOG_USER_PROMPTS=0, OTEL_LOG_ASSISTANT_RESPONSES=0, OTEL_LOG_RAW_API_BODIES=0, and OTEL_LOG_TOOL_CONTENT=0.

One exception applies to Claude Code tool inputs — see the caution below.

What we do collect​

Metadata about each AI call — enough to measure usage, not to reconstruct the conversation: model, token counts, cost, latency, your enduser.id, and which tools and skills were invoked.

Tool inputs are collected for Claude Code

Claude Code runs with OTEL_LOG_TOOL_DETAILS=1, so in addition to tool names and outcomes it records tool input parameters — bash command strings, file paths, search patterns, URLs, skill / MCP / workflow / subagent names, and JSON-serialized tool arguments (individual values truncated at ~512 characters, full payload bounded to ~4 KB). It does not record tool results/output (OTEL_LOG_TOOL_CONTENT=0).

Because those arguments are captured, they can themselves contain snippets of file content or prompt-like text — for example the content written by a Write, the old_string/new_string of an Edit, or the prompt passed to a delegated agent. The truncation limits above bound how much is captured, but short files or snippets can be recorded in full. Codex and Copilot do not emit this tool-parameter detail — they report call-level metadata only.

FieldMeaningExample
service.nameWhich assistant emitted the dataclaude-code, codex, copilot-chat
gen_ai.systemModel vendoranthropic, openai, github
gen_ai.request.modelModel usedclaude-sonnet-4-6, gpt-5-codex, gpt-4o
gen_ai.operation.nameKind of callchat
enduser.idWho (your Aliz email)jane.doe@aliz.ai
gen_ai.usage.input_tokensPrompt/context tokens1843
gen_ai.usage.output_tokensGenerated tokens412
costSpend for the call (Claude/Codex); Copilot reports a premium-request multiplier, not USD0.0091
durationCall latency (ms)2140
tool / skill usage (Claude Code)Tool/skill name, outcome, and input parameters (bash commands, file paths, patterns, URLs, args) — but not results/outputtool Bash ran git status; skill code-review invoked
timestampWhen the call happened2026-07-29T09:14:22Z

The collector normalizes these into shared gen_ai.* metrics so the three providers can be compared side by side.

Sample records​

These are representative of what lands in BigQuery. Note there is no prompt or response text — but for Claude Code, tool events carry the tool input (see the second record below).

Claude Code​

Claude Code emits log events (e.g. api_request) plus tool-usage events. With OTEL_LOG_TOOL_DETAILS=1, tool events include the input parameters:

{
"service.name": "claude-code",
"gen_ai.system": "anthropic",
"event.name": "api_request",
"gen_ai.request.model": "claude-sonnet-4-6",
"enduser.id": "jane.doe@aliz.ai",
"gen_ai.usage.input_tokens": 1843,
"gen_ai.usage.output_tokens": 412,
"cost_usd": 0.0091,
"timestamp": "2026-07-29T09:14:22Z"
}
{
"service.name": "claude-code",
"event.name": "tool_result",
"tool_name": "Bash",
"tool_input": "{\"command\":\"git status\",\"description\":\"Show working tree status\"}",
"success": true,
"enduser.id": "jane.doe@aliz.ai",
"timestamp": "2026-07-29T09:14:25Z"
}

OpenAI Codex​

Codex emits spans; the LLM details live on the sampling-request span:

{
"service.name": "codex",
"gen_ai.system": "openai",
"span.name": "run_sampling_request",
"gen_ai.operation.name": "chat",
"gen_ai.request.model": "gpt-5-codex",
"enduser.id": "jane.doe@aliz.ai",
"gen_ai.usage.input_tokens": 2210,
"gen_ai.usage.output_tokens": 587,
"duration_ms": 3120,
"timestamp": "2026-07-29T09:20:03Z"
}

GitHub Copilot​

Copilot (VS Code, CLI, and the macOS desktop app) emits chat spans, from which the collector derives gen_ai.calls and gen_ai.duration:

{
"service.name": "copilot-chat",
"gen_ai.system": "github",
"gen_ai.operation.name": "chat",
"gen_ai.request.model": "gpt-4o",
"enduser.id": "jane.doe@aliz.ai",
"gen_ai.usage.input_tokens": 1502,
"gen_ai.usage.output_tokens": 240,
"duration_ms": 1875,
"timestamp": "2026-07-29T09:26:41Z"
}

Copilot CLI and the tested macOS desktop runtime both emit service.name=github-copilot; the dashboard's copilot-cli label covers both. See the attribution limitation for the verification scope.

note

Exact field names vary a little by provider and by the version of each tool. The collector maps provider-specific fields onto the shared gen_ai.* convention so they can be queried uniformly in BigQuery. The samples above are illustrative of shape and content, not a byte-for-byte schema.