Cursor Unchained
This project aims to reverse engineer Cursor's Tab complete to enable it to be used in other IDEs.
Cursor's Tab complete is known to be the best tab complete on the market, however it's limited to only being available in Cursor which itself is tied down by Vscode's long history of technical debt. Cursor is focused on fixing these problems but why don't we unshackle the beast and bring the best tab complete to all!
Example Tab Completion
Example Refresh Tab Context [WIP] (Workspace paths are encoded)
Requirements
- Cursor Account
Overview
StreamCpp: the main completion service that is used to send tab completion requests to the Cursor API.
RefreshTabContext: a context refresh service that is used to refresh the tab context which I believe is used to provide StreamCpp with more context for the tab completion request via codeblocks.
Environment Variables (StreamCpp)
note: this is obviously a pain and quite brittle, I should find a better way to do this in the future.
-
Create a new file called
.envin the root of the project -
Open Cursor
-
Cmd + Shift + P to open the Command Palette
-
Developer: Open Developer Tools for Extension Host > LocalProcess pid:
-
Navigate to the Network tab
-
Trigger the tab completion request: in the Network tab this will appear as StreamCpp
-
Copy the bearer token, x-request-id, x-session-id and x-cursor-client-version
-
Copy the values and paste them into the
.envfile
Usage (StreamCpp)
-
Run
bun run streamCppto send a tab completion request -
The response will be logged to the console
-
Edit payload.currentFile.contents to the code you want to tab complete in the
src/constants.tsfile
Environment Variables (RefreshTabContext)
This requires looking through and debugging the source code via Help Tab > Toggle Developer Tools. It's kind of a pain so I'll add it later.
Usage (RefreshTabContext)
-
Run
bun run refreshTabContextto send a refresh tab context request -
The response will be logged to the console


