VS Code
Use Cusp inside VS Code, Cursor or Kiro, with edits reviewed in the diff editor, context from your selection and diagnostics, and native approval prompts.
The Cusp extension puts the agent in a VS Code panel. It's a client of the local Cusp daemon, so the sessions are the same ones you see in the desktop app and the cusp CLI: start in the editor, continue in the terminal, or the other way round.
The extension goes live on the VS Code Marketplace and Open VSX with the first public release.
Requirements
- VS Code 1.105 or later, or a compatible editor such as Cursor or Kiro.
- A trusted workspace. The extension doesn't run in Restricted Mode.
- A model provider configured in Cusp, or a provider key in the environment.
Install
Install the extension
Available with the first public release.
Open Cusp
Click the Cusp icon in the activity bar, or press ⌘⎋ (Ctrl+Esc).
What you get
- The Cusp panel, in the activity bar or in an editor tab (Cusp: Open in New Tab): this workspace's sessions, a streaming transcript with tool calls, approvals and questions, and the mode, model and effort pickers.
- Edits reviewed in the diff editor. When Cusp asks to edit a file, the proposal opens beside the file. Accept (⌘↵) or Reject (⌘⌫) from the editor title. Finished changes can be reopened from the transcript and reverted.
- Context from your editor. Your selection is offered with your next message. ⌥K adds it as a mention like
@src/app.ts#L10-20.@mentions files, including unsaved changes. Cusp: Fix Problems in This File sends the file's diagnostics. - Native prompts. When the panel is hidden, approvals, questions and plan reviews also appear as VS Code notifications and quick picks.
- Status bar. Shows the daemon connection and whether a session is running or waiting for you.
- Terminal handoff. Cusp: Continue Session in Terminal opens the session in the
cuspterminal UI.cusprunning in this window's integrated terminal can read your selection and diagnostics and open diffs in the editor.
Keyboard shortcuts
| Command | macOS | Windows / Linux |
|---|---|---|
| Open Cusp | ⌘⎋ | Ctrl+Esc |
| New session | ⌘⇧⎋ | Ctrl+Shift+Esc |
| Add selection to chat | ⌥K | Alt+K |
| Accept / reject proposal (diff editor) | ⌘↵ / ⌘⌫ | Ctrl+Enter / Ctrl+Backspace |
| Respond to the pending request | ⌘⌥Y | Ctrl+Alt+Y |
| Switch permission mode (in the composer) | ⇧⇥ | Shift+Tab |
Other commands in the Cusp category: New Session, Show Sessions, Add File, Interrupt, Revert Change and Reconnect to Daemon.
Settings
| Setting | Default | Meaning |
|---|---|---|
cusp.daemon.url | Connect to this daemon instead of finding one | |
cusp.daemon.path | Path to a cusp-daemon executable to start | |
cusp.daemon.dataDir | ~/.cusp | Data directory for a daemon the extension starts |
cusp.permissions.nativePrompts | whenHidden | Show approvals as VS Code notifications: always, whenHidden or never |
cusp.diffs.reviewEdits | true | Open proposed edits in the diff editor for review |
cusp.context.shareSelection | true | Offer your editor selection with the next message |
cusp.terminal.bridge | true | Let cusp in integrated terminals talk to this window |
How it finds the daemon
The extension connects, in order, to:
- The daemon at
cusp.daemon.url, if set. - A daemon that's already running, such as the desktop app's, found through
~/.cusp/daemon.json. - A daemon it starts itself:
cusp.daemon.path, then the desktop app's bundledcusp-daemon, thencusp-daemonon yourPATH. A daemon it started stops when the window closes.
The terminal bridge
cusp in an integrated terminal reaches VS Code over a WebSocket on 127.0.0.1, with a random port and a random token for each window. The address and token are passed only to that window's terminals through environment variables, never written to disk. The token is checked in constant time, and any request from a browser (one with an Origin header) is refused. Turn the bridge off with cusp.terminal.bridge.
Next
- ACP editors: JetBrains IDEs, Zed and others.
- Permissions: modes and rules.