Cursor-Style Chat for Claude
A chat UI for the Claude Agent SDK —
the model, tools, and permission system are the SDK's own. Built with a
developer-first mindset: the goal was to bring some of the editing-experience
ideas Cursor popularized to Claude, rather than a typical chatbot sidebar —
inline diffs and per-file undo instead of opaque edits, edit-and-resend and
fork instead of a linear thread you can't rewind, and keyboard-driven
file/terminal references instead of copy-pasting context by hand. Runs
locally inside VS Code, authenticated via your Claude subscription (no API
key required).
Features
- Persistent per-tab sessions. Each chat tab keeps one long-lived agent process alive across turns, so background tasks can finish and notify you even after a turn ends.
- Multi-tab conversations. Run several independent sessions side by side, each resuming its own transcript across reloads.
- Inline diff, undo & review. File edits show as reviewable diffs with per-file undo, backed by pre-edit snapshots.
- Fork & edit-and-resend. Branch a conversation from any point, or edit an earlier message and resend it — optionally rewinding tracked files to that point using the SDK's native checkpointing.
- File and terminal references.
@mention files/directories inline (with autocomplete), or pull a terminal selection in as a reference chip.
- Guarded tool permissions. File edits auto-approve only inside the workspace and configured directories; everything else prompts for approval.
Usage
Open the chat from the activity bar icon, or run My Claude: Focus Chat from the Command Palette.
Chatting. Type a message and send. While the agent is working, you can queue
follow-up messages (drag to reorder) or attach images. Tool calls, file edits,
and todo lists render as cards inline; edits show a diff with per-file undo.
Referencing code and terminal output.
- Type
@ in the composer for a caret-aware, debounced file/directory
autocomplete, or drag files onto the input.
- Select code in the editor and press Ctrl+I (Cmd+I on Mac) to insert
an
@path:lines reference at the caret.
- Right-click a terminal selection and choose My Claude: Reference Terminal
Selection in Chat to attach it as a removable chip (terminal output has no
path to
@mention, so its text rides along in the prompt).
Slash commands. /clear wipes the current tab's transcript and starts a
fresh session; /model and /mcp are client-side pickers for the active
model and connected MCP servers.
Tabs & history. Use the tab bar to run multiple concurrent sessions. The
🕘 button opens the history panel to browse and reopen past sessions — state
persists across VS Code reloads.
Editing and forking. Click ⋮ on any of your past messages for:
- Edit & resend from here — reload that message into the composer, edit
it, and resend. You'll be asked whether to also rewind tracked files back to
their state at that point in the conversation.
- Fork conversation from here — branch the transcript up to that point
into a new tab, non-destructively. Files are untouched.
Permissions. In the default mode, file edits auto-approve only inside the
current workspace (and any configured additional directories); edits
elsewhere and all non-edit tools (e.g. running shell commands) prompt for
approval via a permission card.
Authentication. By default this runs claude login's subscription auth,
same as the Claude Code CLI. If you haven't logged in that way, run My
Claude: Set Anthropic API Key from the Command Palette to use an API key
instead — it's stored in VS Code's encrypted secret storage, not in a
settings file. Note this always takes over for new sessions once set, even if
you're also logged in via claude login; run My Claude: Clear Anthropic API
Key to go back to subscription auth.
Development
Requirements: VS Code 1.90+, Node.js, and a Claude subscription (logged in via the Claude Agent SDK's built-in auth — no API key needed).
npm install
npm run compile # type-check + bundle (src/ via tsc, webview/ via esbuild)
Then press F5 in VS Code to launch the Extension Development Host. The chat view appears in the activity bar.
npm run watch # rebuild on change
npm test # type-check both projects + run unit tests
Architecture
See CLAUDE.md for the full design: the host/webview/SDK layering, the postMessage protocol contract, and the data-flow notes for sessions, replay, fork, and edit-and-resend. It doubles as a design doc for AI coding agents working in this repo.
Contributing
Issues and PRs are welcome. Before diving in:
- Read CLAUDE.md first — it's the design of record for the
host/webview/SDK layering and the invariants the codebase relies on (the
protocol.ts contract, pure logic living in src/ with tests, the webview
never touching the SDK/VS Code APIs directly). Changes that cross those
layers are much more likely to get asked to rework.
- Run
npm test (type-checks both projects + unit tests) before opening a PR.
- Keep PRs scoped — this is a small, opinionated codebase, so smaller diffs
are easier to reason about than broad refactors bundled with a feature.
- If you touch the architecture (new message types, new layer responsibilities,
etc.), update CLAUDE.md in the same PR — it's expected to stay current, not
just describe history.
Status
Personal project, built and used as a daily driver; expect rough edges.
License
MIT