cursor

Identity

  • Names: cursor / com.cursor.agent.
  • Native format: cursor-agent-transcript; cursor-cli-transcript names the same CLI JSONL dialect. projects/<workspace>/agent-transcripts/<id>/<id>.jsonl. IDE state.vscdb and CLI store.db blob graphs are separate, unqualified formats.
  • Session ID: The matching full directory and filename ID is the native conversation key. No namespace. A renamed file alone cannot supply a different identity.
  • Entity keys: The transcript has no stable message IDs. Derive positional message and record IDs with idScope: capture. Regeneration requires a new capture.
  • Notes: Keep prompt wrappers verbatim. User role alone does not establish a human author. A prompt timestamp tag supplies only that prompt’s ts, with tsSource: embedded_text and tsPrecision: min; require an explicit offset. is_error supplies result status when present. Exact MCP identity needs separately recorded protocol, server and tool fields. Do not infer model calls, usage or external output bytes. Declare the missing fields and unsupported stores.

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

cursor: native facts without a standard field

  • Links and lineage: Admitted tool_use.id joins tool_result.tool_use_id, toolUseId or toolCallId only when the aliases agree and one invocation owns the ID. These are fixture rules, not a claim about every Cursor release. No parent, child, copy or root mapping is qualified.

Usage

Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare when semantic coverage is incomplete. 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.cursor.agent/unassigned"] with the common shape. A selection may keep these facts with any subset of sessions, including an empty subset, but must not imply that a session owns them. 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: fixture-verified: the strict CLI transcript parser and fixtures in ctxrs/ctx at 74f63227f1c7416607d704668f38b9c7c9de6a16, documented against layout 2026.06.24-00-45-58-9f61de7. No provider-version conformance claim. Evidence applies only to the named formats and explicit mappings above. A real capture covers only the behavior that was exercised. A writer probe run without a model covers persistence only, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.