DEV Community

Cover image for I reverse-engineered where 6 AI coding tools store your prompts — and built a dashboard for it
Al Amin Rifat
Al Amin Rifat

Posted on

I reverse-engineered where 6 AI coding tools store your prompts — and built a dashboard for it

I use a lot of AI coding tools — Claude Code, Cursor, GitHub Copilot, OpenCode,
Windsurf, and Antigravity. The problem: my prompt history was trapped in six
separate local stores, in six different formats, with no way to see it together.

So I built AI Prompt Monitor
a local, self-hosted Next.js dashboard that ingests all of it into one searchable,
filterable view.

What it does

  • Aggregates prompts from all six tools into a local SQLite index
  • Filter by platform, project, and date range; full-text search
  • Stats (total prompts, sessions, projects) + charts (prompts/day, per platform)
  • A dedicated page per platform
  • Copy any prompt or session ID with one click
  • 100% local and read-only — nothing is ever uploaded

The hard part: every tool hides prompts differently

This is where it got interesting. Here's what I found:

Tool Storage Format
Claude Code ~/.claude/history.jsonl JSONL — easy
Cursor state.vscdb (~700MB) SQLite; prompts split across composerData + bubbleId rows
OpenCode opencode.db clean relational SQLite (sessions/messages/parts)
Copilot workspaceStorage/*/chatSessions/*.json per-workspace JSON
Windsurf ~/.codeium/chat_state/*.pbtxt text-format protobuf (legacy); Cascade is encrypted
Antigravity state.vscdb trajectory summaries base64'd protobuf I decoded by hand

A few things I had to solve:

  • Locked databases — IDEs hold their SQLite files open, so I copy them to a temp dir and open the copy read-only.
  • No native dependencies — using Node 22's built-in node:sqlite means no better-sqlite3 build step.
  • Encrypted stores — Windsurf Cascade and Antigravity conversation bodies are encrypted on disk, so those gracefully fall back to titles only.
  • Project attribution — Cursor doesn't directly link prompts to a project, so I match against workspace generation data by text and timestamp.

Try it

git clone https://github.com/alaminrifat/ai-prompt-monitor.git
cd ai-prompt-monitor
npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:3000 and hit Refresh. Needs Node 22+.

It's MIT licensed and I'd love contributions — especially parsers for more tools.
If you know where your favorite tool stores its history, open an issue or a PR.

https://github.com/alaminrifat/ai-prompt-monitor

Top comments (0)