Reclaiming Local AI Chat History from a Dozen Proprietary Formats
A single normalizer for the dozen undocumented ways AI coding assistants stash your chat history on disk.
A Python toolkit reverse-engineers the undocumented local storage of Cursor, Claude Code, and a growing list of AI assistants to reclaim conversations for fine-tuning and backup.

What it does
ai-data-extractor is a Python toolkit that hunts through your local filesystem for chat histories left behind by AI coding assistants—Claude Code, Cursor, Windsurf, Aider, and others—and normalizes them into a single JSONL format. It handles the messy reality that each tool uses its own storage scheme, from SQLite databases to per-project Markdown transcripts, so you can back up conversations or repurpose them for training without manually reverse-engineering schemas.
The interesting bit
The project treats undocumented storage as a first-class problem rather than a blocker: for tools like Cursor and Windsurf that change their SQLite schemas without warning, it falls back to a generic heuristic that scans key-value stores for objects shaped like role-plus-text pairs. It also proves the abstraction generalizes beyond typical app-data folders by handling Aider’s decentralized model, where every project directory carries its own .aider.chat.history.md file.
Key highlights
- Supports ten sources including Claude Code, Cursor, Windsurf, Cline/Roo Code, Aider, and Codex CLI, auto-detecting macOS, Linux, and Windows path conventions.
- Uses read-only connections and defensive wrappers so a running editor or corrupt file never kills the entire extraction run.
- Outputs a normalized JSONL schema with
messages,session_id,code_context, andtool_usefields, though availability varies by source. - Ships with zero third-party dependencies—only the Python standard library.
- Explicitly warns users to scan for secrets and proprietary code before sharing or training on extracted data.
Caveats
- Cursor, Windsurf, and Trae rely on undocumented schemas that change frequently; the heuristic extraction is best-effort and may break on future updates.
- Aider stores transcripts inside individual project directories, and the default scan only covers a handful of common folder names—miss your actual layout and it comes up empty.
Verdict
Worth a look if you’re sitting on years of local AI coding conversations that you want to archive, analyze, or feed into a fine-tuning pipeline. Skip it if you only use cloud-based chat UIs that never touch your local disk.
Frequently asked
- What is kruzovic7/ai-data-extractor?
- A single normalizer for the dozen undocumented ways AI coding assistants stash your chat history on disk.
- Is ai-data-extractor open source?
- Yes — kruzovic7/ai-data-extractor is open source, released under the MIT license.
- What language is ai-data-extractor written in?
- kruzovic7/ai-data-extractor is primarily written in Python.
- How popular is ai-data-extractor?
- kruzovic7/ai-data-extractor has 811 stars on GitHub.
- Where can I find ai-data-extractor?
- kruzovic7/ai-data-extractor is on GitHub at https://github.com/kruzovic7/ai-data-extractor.