Skip to content

Add transcript parser support for GitHub Copilot CLI (~/.copilot/data.db) #1450

@zorfling

Description

@zorfling

Feature request

Add transcript parser support for the GitHub Copilot CLI so --sync-ai-activity can extract per-turn AI metrics (token counts, model, prompts, line changes) the same way it already does for Claude, Codex, and Cursor.

Context

I maintain @zorfling/wakatime-copilot-cli, a hook-based integration that fires wakatime-cli heartbeats from Copilot CLI's sessionStart / postToolUse / sessionEnd events under --category "ai coding". It works well for time + line-change attribution, but token counts can only come from transcript parsing — Copilot CLI's hook payloads don't surface tokens/model info to the hook script.

Where Copilot CLI stores session data

On macOS/Linux:

  • ~/.copilot/data.db — SQLite (tables include sessions, turns, events with usage_input_tokens, usage_output_tokens, usage_model, etc.)
  • ~/.copilot/session-state/<sessionId>/ — per-session working dir
  • ~/.copilot/data.db-wal / data.db-shm — WAL sidecars

The schema is reasonably stable and includes everything needed (model, input/output tokens, timestamps, working directory) per turn.

Suggested approach

Treat Copilot CLI like the existing Claude / Codex parsers — add a new transcript source that reads new rows from ~/.copilot/data.db since the last heartbeat and emits one AI heartbeat per assistant turn with:

  • --entity = cwd of the session (or most-recently-touched file)
  • --category "ai coding"
  • --plugin "github-copilot-cli/<version>"
  • model + token counts on the resulting heartbeat

Happy to help with schema details or testing if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions