copilot-cli

Identity

  • Names: copilot-cli / com.github.copilot-cli.
  • Native format: copilot-cli-events, session-state/<id>/events.jsonl.
  • Session ID: session.start.data.sessionId, verbatim. No namespace for ordinary sessions. The cloud Copilot-Session ID has a different scope.
  • Entity keys: Event id identifies an observation; messageId identifies a logical message when present. apiCallId identifies an inference. toolCallId, requestId and hookInvocationId identify tools, requests and hooks. chunkIndex within one messageId supports folding.
  • Triggers: data.turnId identifies the consuming turn. On its first record, source: schedule-<decimal-id> supplies trigger.kind: schedule, the full native source and suffix ID. Keep recorded intervalMs, at, cron, tz, recurring and selfPaced in trigger.schedule. Schedule creation and later steering do not count as a schedule firing. isAutopilotContinuation supports auto_continuation; retain the Boolean in metadata. A leading agent-... source supports a peer trigger, not a guessed session reference.
  • Notes: transformedContent is model text; content is display text when both exist. Results use result.content for model text, detailedContent for display and the result object for raw. success controls status, never an exit code. assistant.usage reports one call through apiCallId; input cache inclusion is unknown. The native cost multiplier is not USD. Counts-only truncation and compaction have unknown replacement ranges. Full permission, input and hook revisions require their native IDs; no fork or rewind boundary is qualified here.
  • Tool kinds: exact names bash and powershell map to execute; view to read; edit and create to edit; grep and glob to search; web_fetch and web_search to fetch. Other names need recorded kind evidence.
An embedded agentId may identify a child stream only when the pinned format establishes a distinct conversation. Its namespace is the enclosing native sessionId; retain the same namespace in parent refs. Otherwise keep lane facts unassigned.

Position basis

Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions form the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.

Destinations

copilot-cli: native facts without a standard field

  • Links and lineage: toolCallId is the call/result join. A toolRequests item and an execution-start event with that ID can be views of one request only when their correspondence is unique. Counts and event order do not pair reused IDs. detachedFromSpawningParentSessionId records continuation. parentId records chronological order, not a branch. Embedded agentId is local to the owning session. Use the container namespace only when there is evidence of a child conversation under the identity rule above. Other embedded events remain vendor records owned by the containing session. Do not mix them into root context or claim a root.

Usage

Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare incomplete semantic coverage. Schema defaults and placeholder zeros are not reported usage. Backend inclusion rules require evidence; do not infer them from a model name.

Lane and unassigned facts

Facts without established session ownership use manifest _meta["com.github.copilot-cli/unassigned"] with the common shape. Selection may retain these facts with any session subset, including an empty subset, but must not imply session ownership. State the selection policy in the export report.

Losses

Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Omitted unassigned facts use a documented vendor loss or report, not a new core category.

Evidence

Basis: observed and fixture-verified: shipped CLI 1.0.104 / SDK 1.0.27 schema and a sanitized native scheduler capture. The 1.0.77-shaped fixtures are authored. The capture covers scheduling, abort and shutdown, not successful inference. No version-level conformance claim. Evidence applies only to the named formats and explicit mappings above. A real capture covers only exercised behavior. A writer probe run without a model covers persistence, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.