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.
By Novus Stream Solutions Editorial Team. Published 2026-07-28. Last reviewed 2026-07-31. 4 min read.
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.
This post covers the three agents with the richest event data. Cursor is handled separately because its inputs are exported Markdown and a local SQLite snapshot rather than a telemetry stream, which changes what can be measured at all.
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 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 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.
The tracker should convert each provider into a shared session shape:
- Provider.
- Product.
- Source session ID.
- Start and 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. The metrics and provenance reference documents the labels attached to each of those fields.
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.
Working directories help group sessions by project, but they can expose usernames, client names, and confidential repository structures.
A safer flow is:
- Detect a local path.
- Hash it in the browser.
- Ask the user to map it to a display project.
- Upload only the hash and approved project name.
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.
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.
Related reading
Privacy
AI Usage Constellations Without Exposing Session Names
Explore provider, model, project, date, and metric patterns as a session constellation while keeping conversation titles gated and workspace paths represented only by one-way hashes.
Metrics
How to Compare AI Usage Without Misleading Deltas
A defensible AI-usage comparison starts with two explicit slices, checks metric coverage and provenance, and keeps refused deltas visible instead of silently dropping them.
Guides
Unavailable Is Not Zero: Why Claude, Gemini, and ChatGPT Tokens Stay Blank
Consumer chat exports omit tokens, cost, and often model names. AI Stats renders those fields Unavailable, never a synthetic 0, and explains the capability reason underneath.
Was this page helpful?
Your answer stays in this browser. It is not sent anywhere, and no account or cookie is involved.