AI Query History and AI App Artifacts
IRFlow Timeline turns local AI assistant stores into timeline evidence. Collect AI Artifacts (or a single AI Apps import) parses desktop, CLI, and editor-assistant history into one AI Query History tab so you can review prompts, responses, tool calls, workspaces, source files, and possible pasted secrets.
This page is the high-level workflow. Per-app artifact paths, parser coverage, and caveats live in the guides below.
| Guide | What it covers |
|---|---|
| Claude Desktop | Claude Code CLI, Desktop/Cowork sessions, deletion tombstones, staged uploads, usage windows |
| ChatGPT / Codex | ChatGPT Desktop/Atlas, OpenAI Codex rollouts, and ChatGPT Computer History (Skysight) |
| Grok AI | Grok Build sessions, search index, app log, and stores that outlive a deleted chat |
| Cursor | Agent transcripts, composer/workspace SQLite, and conversation-search.db |
| Gemini | Gemini CLI chats, shell history, checkpoints, and nested subagents |
For the product overview, see AI Artifacts.
v1.0.11
Grok Build and Claude Desktop stores that sit outside the session tree are now collected — search indexes, deletion tombstones, staged uploads, and usage windows. Computer History claims were re-checked against a live capture. Details are on the Grok, Claude, and ChatGPT / Codex pages.
What AI Query History is
IRFlow collects more than prompts. A typical row can carry the user or assistant message, invoked tools, exact shell commands, session IDs, workspace/cwd, source file, model, and endpoint user/host when the collection path exposes them.
That is what makes the tab usable as evidence: did someone paste credentials, ask for help with suspicious commands, generate code in a sensitive workspace, or receive output that exposed secrets?
Tool is the AI app family (Claude Code, OpenAI Codex, Grok Build, Cursor). InvokedTool is a tool/action inside that app (a shell command, editor operation, or model tool call). Summary is the grid preview; FullText is the complete body for search, secret hunt, and export.
Supported apps
| App | Status | Guide |
|---|---|---|
| Claude Code / Desktop | Parsed — CLI JSONL, Desktop/Cowork transcripts, deletion tombstones, staged uploads | Claude Desktop |
| OpenAI Codex | Parsed — history.jsonl, rollout JSONL, versioned state*.sqlite | ChatGPT / Codex |
| ChatGPT Desktop / Atlas | Parsed LevelDB/SQLite when present; v2/v3 bundles inventoried only | ChatGPT / Codex |
| ChatGPT Computer History | Separate 54-column tab — OS interaction telemetry, not chat | ChatGPT / Codex |
| Grok Build | Parsed sessions plus search index, app log, and open-session record | Grok AI |
| Cursor | Parsed transcripts, composer/workspace SQLite, conversation search index | Cursor |
| Gemini CLI | Parsed JSONL chats, shell history, checkpoints, nested subagents | Gemini |
| GitHub Copilot | Parsed CLI sessions and VS Code-family chatSessions/ | below |
| Windsurf | Parsed VS Code-family chat stores; Cascade .pb inventory-only | below |
| Continue | Parsed ~/.continue/sessions/*.json | below |
Evidence is one of parsed history (rows in the grid), inventory-only (detected, bodies not decoded), or browser hints (collect the browser profile separately).
Collect AI Artifacts

Tools → Analysis → AI Artifacts → Collect AI Artifacts merges every discovered store into one tab.

- This Mac — the logged-in analyst profile.
- Browse folder… — KAPE output, triage packages, mounted disks, or any tree with
Users\/home/layouts. IRFlow matches Windows, Linux, and macOS paths inside the folder you pick.
After discovery, choose main sessions only (faster triage) or include subagents. The activity log shows per-source status, files read, and row counts.
Use a single AI Apps entry when you already know the root (.claude, .codex, .grok, .cursor, .gemini). File → Open… on those folders does the same thing.
Empty collection: the modal lists expected paths and flags Users\ / home/ trees that have no AI stores. Stale app session: if discovery falls back to an older IPC channel, quit and restart so preload loads discoverAiHistoryProfile.
Other supported apps
These stay on the merged timeline and do not have a dedicated guide yet.
| App | Typical path | Notes |
|---|---|---|
| GitHub Copilot CLI | $COPILOT_HOME or ~/.copilot/ | Sessions, command history, plans/checkpoints, safe session-store.db metadata. Auth/MCP secrets are excluded. |
| GitHub Copilot (VS Code) | Code/User/workspaceStorage/<hash>/chatSessions/ | Also Insiders, VSCodium, and emptyWindowChatSessions. |
| Windsurf | Windsurf/User/workspaceStorage/*/state.vscdb | Cascade .pb bundles are inventoried, not decoded. |
| Continue | ~/.continue/sessions/*.json | Local prompts/responses mapped to the workspace directory. |
Import from Tools → Analysis → AI Artifacts → AI Apps → GitHub Copilot / Windsurf / Continue.
AI Secret Hunt
On an AI Query History tab, Tools → Detection → AI Secret Hunt scans prompts, responses, and tool output for API keys, tokens, private keys, and high-confidence secrets. Findings are redacted by default — cleartext is never written to disk.


Export for reporting
Tools → Export → Export AI History Package… writes:
| File | Purpose |
|---|---|
<tab>_timeline.csv | Current grid rows (filters, sort, visible columns). FullText is always included. |
manifest.json | Source path, row count, size, mtime, SHA-256 (first 250 files hashed) |
README.txt | Short description of the bundle |
Export Source Manifest (sources only) writes the inventory without the timeline CSV.
Investigation tips
- Filter InvokedTool for
Shell/Bash, then read ToolCommand (exact command) and ToolInput (cwd, timeout, permissions). Treat those columns as evidence. - Filter Role =
userfor prompts;assistantfor model replies. - Merged scans dedupe identical prompts across tools. The kept row’s AlsoInTools column lists every app that saw the same text.
- Workspace correlates to repos and production paths. User / Host come from
Users\<name>\or a KAPE host folder when present. - Row Detail → Filter session / Correlate path jumps to open Prefetch, EVTX/Sigma, or Amcache tabs.
Safeguards
- Profile extracts run in a worker, are cancellable, and stop at 3,000,000 rows.
- Malformed JSONL lines are skipped and counted in the import notice.
- Browse-folder scans stay inside the folder you authorized.
- Paths come from in-app pickers and the path-authorizer allow-list.
Limitations
- Summary is truncated for the grid — use FullText and Open source.
- Browser-only ChatGPT, Claude, Grok, Copilot, or Gemini usage is hint-only; collect the browser profile separately.
- Consumer Grok web/mobile is not a native store.
- Official Gemini desktop app is not parsed — only Gemini CLI.
- ChatGPT
conversations-v2-*/v3-*bundles are inventoried, not decoded.
App-specific caveats (Computer History retention, Claude tombstones, Grok memtrace/, Cursor search indexes) are on the per-app pages.
See also
Relocated sections
Older links that pointed at headings on this page now live on the per-app guides: