Skip to content
Telltale

Understand evidence gaps

See which fields each source can expose before interpreting a missing prompt, result, timestamp, or call ID.

Technical reference for a development snapshot. Check the matching release when operating an installed version.

On this page

This document records what each supported source can expose from its raw store. Detection and analyst review must not assume every source has the same visibility.

Legend: Full is reliably present and extracted, Partial is conditional, Absent is not present, and Lossy exists upstream but canonical mapping does not preserve it as a structured fact.

Supported sources

Codex

Sources: codex.sessions, codex.archived_sessions, codex.headless_sessions (JSONL).

CapabilityStatusNotes
User and assistant messagesFullRole and event-message records are parsed.
Tool calls and resultsFullTool names, arguments, and result content are parsed.
Model, provider, agentFullInherited from session metadata when needed.
WorkspacePartialPresent in some session metadata.
Timestamp and session IDFullSource-reported values only. A missing session id fails closed.
Process ID and exit codePartialProcess ID is absent. A completed command preserves exit_code as tool.exit_code.
Call ID, error state, content partsPartialPreserved when the source reports them. Missing IDs are not fabricated.
Completed file changesPartialExact item_completed / FileChange maps to one reported Tool result: structured add/delete content, update diff/move path, optional terminal status and diagnostic fields. Field-labeled result text is searchable; no filesystem execution or file state is inferred. Existing structured and search bounds apply.

The Canonical Observation v2 adapter covers all three registered Codex identities. It does not use filename/path fallback for v2 identity.

Claude Code

Source: claude.projects (JSONL).

CapabilityStatusNotes
User and assistant messagesFullMixed message.content blocks are parsed.
Tool calls and resultsFulltool_use and tool_result blocks are parsed.
ModelFullPreserved from source records.
Provider and agentPartialNot always source-reported.
WorkspaceAbsentNot available in this source contract.
TimestampPartialNot guaranteed on every entry.
Session IDFullSource-reported value only. A missing session id is replay unverifiable.
Process ID and exit codeAbsentNot reported.
Call ID, error state, content partsPartialPreserved when the source reports them. Missing IDs are not fabricated.

OpenClaw

Source: openclaw.agents (existing JSONL fixtures, including archived/reset suffixes). This profile does not describe the current default SQLite store, which is not discovered or qualified; see the OpenClaw compatibility boundary.

CapabilityStatusNotes
User and assistant messagesFullRole-based records are parsed.
Tool calls and resultsFullTool names, arguments, and result content are parsed.
Model, provider, agentFullPreserved when reported; the agent has a source-specific default.
WorkspaceAbsentNot available.
TimestampPartialPresent on some records.
Session IDFullSource-reported value only. A missing session id is replay unverifiable.
Process ID and exit codeAbsentNot reported.
Call ID, error state, content partsPartialPreserved when the source reports them. Missing IDs are not fabricated.

The canonical adapter reports ToolCall and UserContext Supported and ToolExecution Unknown.

Qwen CLI

Source: qwen.projects (JSONL).

CapabilityStatusNotes
User and assistant messagesFullRole-based records are parsed.
Tool calls and resultsFullTool names, arguments, and result content are parsed.
Model, provider, agentFullPreserved when reported.
WorkspaceAbsentNot available.
TimestampPartialPresent on some records.
Session IDFullSource-reported value only. A missing session id is replay unverifiable.
Process ID and exit codeAbsentNot reported.
Call ID, error state, content partsPartialPreserved when the source reports them. Missing IDs are not fabricated.

The canonical adapter reports ToolCall and UserContext Supported and ToolExecution Unknown.

OpenCode

Source: opencode.sqlite.

CapabilityStatusNotes
User and assistant messagesFullLegacy message and part data, or OpenCode v2 session_message user text and assistant text entries. Reasoning is not retained.
Tool calls and resultsFullLegacy tool parts keep their direct lifecycle. v2 tool entries emit a request and, when terminal, a returned result; long authored text (commands, patches, file bodies, prompts) keeps a 64 KB budget, and v2 file tools report their path. Rows still over a bound are quarantined and reported by coordinates.
Model, provider, agentFullPreserved from source JSON and, for v2, the session row.
WorkspacePartialPreserved only when the SQLite row reports it.
Timestamp and session IDFullSQLite rows provide source timing and session context.
Process ID and exit codePartialPID is never reported. Exit code is reported only for v2 user shell (!) commands and settled v2 agent shell tool calls.
Tool executionPartialLegacy running/terminal parts report execution. v2 tool entries claim execution when executed: true or when a completed agent shell tool reports how its command settled; other local tools stay Unknown. v2 shell commands report it.
Call ID, error state, content partsPartialReported call IDs and error states are preserved.

The opencode.sqlite canonical adapter feeds the production Detection v2 source runtime. Caller-supplied record evaluation was removed; use the embedding surface for source scans.

GitHub Copilot

Source: copilot.process_log.

The capabilities below describe the existing accumulated-output process-log adapter, not every current Copilot CLI log. The current v1.0.101 pin’s default-level record format remains unqualified; the historical v1.0.96 runtime assessment does not qualify it. Home and COPILOT_HOME discovery remain disabled and their upstream cases remain known gaps. events.jsonl and session-store.db are not acquired. See qualification evidence.

CapabilityStatusNotes
User and assistant messagesLossyProcess logs do not contain full conversation context.
Tool callsFullFunction-call arrays provide name, arguments, and optional call ID.
Tool resultsPartialPresent only on some function-call records.
Model and providerPartialNot populated on every record.
AgentFullThe adapter identifies Copilot.
WorkspacePartialWorkspace initialization records provide a UUID.
TimestampPartialLeading RFC3339 timestamps are preserved when present.
Session IDFullDerived from workspace initialization.
Process IDPartialMay be present in the filename but is not extracted.
Exit code and error stateAbsentNot reported.
Call IDFullPreserved when reported.
Content partsAbsentNot present in process logs.

The canonical adapter reports ToolCall Supported, UserContext Unsupported, and ToolExecution Unknown.

Cross-source implications

  • Copilot detections cannot rely on user-context matching.
  • Model/provider attribution is weaker for Copilot and Claude Code.
  • Workspace correlation is available only from some Codex and Copilot records.
  • Error-based detection remains limited by each source’s canonical evidence.
  • Call-ID availability remains source-dependent; missing IDs are not fabricated.
Source and version

This reference reproduces the complete upstream document. Heading and status presentation follow this site’s theme; technical text and limitations stay with the source.

Read the original Markdown at e67786817228.

Apache-2.0 license