Telltale
Source Validation Matrix
Telltale supports several coding-agent source shapes, but validation depth is intentionally stated conservatively. This page summarizes what the Telltale documentation and local fixture gates support today, and where evidence remains lossy or fixture-backed only.
How to read support claims
A source is considered supported only when required coverage gates have fixture-backed proof. Live host validation is useful operational context, but it is not the support gate and should not require scanning large or sensitive real stores.
- Most validated so far: Codex and OpenCode.
- Some real-world validation: Claude Code, GitHub Copilot, and Gemini CLI.
- Primarily fixture-backed today: Qwen CLI, RooCode, KiloCode, and OpenClaw.
- Public examples should use synthetic fixtures and bounded dry-run commands, not raw local transcripts.
Client evidence matrix
This matrix summarizes Telltale source support notes from the repository. “Lossy” means the live agent or raw format may contain useful detail that the current legacy normalization path does not preserve.
Telltale source validation status and evidence caveats
Codex
- Source kind
- `codex.sessions`, `codex.archived_sessions`, `codex.headless_sessions`
- Session format
- JSONL
- Current confidence
- Highest; bounded live validation R01 complete
Call ID, error state, and structured content parts are lossy through legacy flat conversion.
OpenCode
- Source kind
- `opencode.sqlite`, `opencode.legacy_json`
- Session format
- SQLite and legacy JSON
- Current confidence
- Highest; bounded live validation R02 complete
Call ID, error state, workspace, and structured content parts are lossy through legacy flat conversion.
GitHub Copilot
- Source kind
- `copilot.process_log`
- Session format
- Process logs
- Current confidence
- Medium; bounded live validation R03 complete
Process logs are lossy; user intent, call ID, error state, workspace, static MCP inventory, and content parts are unavailable through the legacy path.
Claude Code
- Source kind
- `claude.projects`
- Session format
- JSONL
- Current confidence
- Medium; fixture-backed with no current live session note
Workspace is absent; timestamps can be partial; call ID, error state, and content parts are lossy through legacy conversion.
Gemini CLI
- Source kind
- `gemini.tmp`
- Session format
- Single JSON session files
- Current confidence
- Medium-low; fixture-backed and not installed in current live-validation notes
Workspace is absent; timestamps are partial; call ID, error state, and content parts are lossy.
Qwen CLI
- Source kind
- `qwen.projects`
- Session format
- JSONL
- Current confidence
- Fixture-backed; needs stronger documentation confirmation
Workspace is absent; timestamps can be partial; usage metadata is not currently extracted.
RooCode
- Source kind
- `roocode.tasks`
- Session format
- `ui_messages.json` arrays
- Current confidence
- Fixture-backed
Static MCP inventory, call ID, error state, and content parts are unavailable through current support.
KiloCode
- Source kind
- `kilocode.tasks`
- Session format
- `ui_messages.json` arrays
- Current confidence
- Fixture-backed
Static MCP inventory, call ID, error state, and content parts are unavailable through current support.
OpenClaw
- Source kind
- `openclaw.agents`
- Session format
- JSONL-like files
- Current confidence
- Fixture-backed; needs stronger documentation confirmation
Workspace is absent; non-standard `.jsonl` suffix variants are handled by filename matching.
Required coverage gates
Before a source should be advertised as supported, the Telltale source-validation matrix requires deterministic coverage that can run from a clean checkout.
- Discovery finds the expected fixture files.
- At least one benign fixture parses without errors.
- At least one tool-call fixture parses correctly.
- At least one tool-result fixture parses correctly.
- At least one positive detection fixture fires a deterministic rule.
- At least one benign or negative fixture stays quiet under bundled rules.
- Capability and lossy-field notes are documented when the source becomes user-visible.
Adding or changing a source
The public contributor checklist separates session-store discovery from installed-agent inventory, requires synthetic fixtures before support claims, and keeps source-specific parser work out of detection logic. The parser refactor plan makes source identity and fallback behavior explicit without changing the normalized pipeline.
Safe validation commands
Use fixture-backed checks first. When checking real stores, keep the scan bounded, read-only, and summarized without publishing raw paths or transcripts.
cargo run --bin telltale -- scan --once --dry-run --root tests/fixtures/session_stores
cargo run --bin telltale -- rules validate --rules config/rules/tool-call-regex.yaml Run from the Telltale repository. The fixture tree is synthetic and safe for local verification.
telltale scan --once --dry-run --root "$HOME" --client codex --max-sources 5 Source-validation docs recommend client filters and source caps for real-store checks. Do not publish raw transcript content or local machine-specific paths.
Project-local source discovery
Some sources are project-local rather than home-relative. Telltale can scan project roots declared in YAML; project-local discovery is additive to home-relative sources discovered from --root.
projects:
- name: my-project
path: ~/github/my-project telltale scan --once --root "$HOME" --project-config projects.yaml Copilot process logs use project-local logs/copilot. Project-local OpenCode and Codex stores use registry-defined subpaths.
What not to overclaim
- Do not describe fixture-backed sources as fully live-validated.
- Do not treat normalized records as originals; preserve raw stores separately.
- Do not imply Copilot logs preserve user intent, complete workspace metadata, or full structured transcript context.
- Do not publish workstation-specific session paths, transcript identifiers, credentials, telemetry logs, or SIEM configuration from live validation.