Coding Agents
Claude Code, Codex, and Gemini CLI: What Can Be Measured Today
A source-by-source look at coding-agent sessions, telemetry, tokens, tools, agents, and the limits of cross-platform comparison.
Published 2026-07-28. Last reviewed 2026-07-28.
Coding agents produce richer activity data than ordinary chat interfaces because they interact with files, terminals, tools, repositories, and subagents.
That does not mean every coding agent exposes identical telemetry. A cross-platform tracker needs separate adapters and a normalized metric model.
Claude Code
Claude Code stores local session transcripts so users can resume work. It also supports OpenTelemetry for usage, costs, tool activity, events, metrics, and traces.
Depending on configuration and version, useful signals can include:
- Session starts.
- User prompts.
- Model usage.
- token counts.
- tool decisions.
- tool results.
- subagent activity.
- durations.
- errors.
- working-directory or project context.
Claude Code telemetry is the strongest option for ongoing measurement. Historical local transcripts remain useful when telemetry was not enabled.
Raw prompts and tool content may contain sensitive information. A tracker should make prompt logging optional and keep source text local by default.
Codex
Codex supports resumable sessions and maintains local session history. The open-source client and its session files make analytics possible, but a production adapter should not assume an undocumented file layout will never change.
Useful normalized fields may include:
- Session identifier.
- timestamped conversation events.
- model.
- token usage.
- tool calls.
- command events.
- file changes.
- repository or working-directory hints.
- session completion state.
The adapter should detect event schemas and maintain fixtures for every supported Codex version.
Gemini CLI
Gemini CLI has built-in OpenTelemetry support. It can export logs, metrics, and traces to a local file or an observability backend.
A local configuration can direct telemetry to a file such as `.gemini/telemetry.log`. Prompt logging can be enabled or disabled.
Useful signals may include:
- Session ID.
- installation ID.
- prompts.
- model usage.
- token counts.
- tool calls.
- latency.
- approval mode.
- errors.
- diff statistics where available.
For a personal analytics product, local file output provides a practical and transparent import path.
A normalized session model
The tracker should convert each provider into a shared session shape:
- Provider.
- product.
- source session ID.
- start/end.
- wall time.
- AI active time.
- prompt count.
- response count.
- tool-call count.
- agent count.
- token categories.
- model names.
- project hint.
- metric quality.
- warnings.
Provider-specific details can remain in metadata, but dashboard totals should use consistent definitions.
Do not equate tools and agents
A shell command is a tool call. It is not automatically a separate agent.
An agent count should increase only when the source emits an explicit subagent or agent-launch event. Otherwise the value should be unavailable.
This distinction prevents inflated statistics.
Do not expose local paths
Working directories help group sessions by project, but they can expose usernames, client names, and confidential repository structures.
A safer flow is:
1. Detect a local path. 2. Hash it in the browser. 3. Ask the user to map it to a display project. 4. Upload only the hash and approved project name.
What can be compared fairly?
Generally comparable:
- Session count.
- prompt count.
- tool-call count, with definitions.
- token totals where available.
- session wall time.
- provider usage share.
- project activity.
- time-of-day patterns.
Requires caution:
- AI active time.
- reasoning time.
- cost.
- agent count.
- files changed.
- completion rate.
Not fair without a common benchmark:
- Code quality.
- developer productivity.
- hours saved.
- provider intelligence.
- economic value.
The opportunity
Today’s coding tools expose enough data to build a useful personal analytics layer.
The winning product will not be the one with the largest number of charts. It will be the one that handles privacy, versioned parsers, duplicates, and measurement definitions correctly.
Users should be able to enjoy a “55 agents launched” achievement while still trusting that the underlying number came from a real source event.