Cursor 3 shipped through February-April 2026 with a redesigned Agents Window, parallel agent sessions, canvases, /multitask, and keybinding changes that cost any 2.x user 20 minutes on the first session. This page covers the full shortcut set organized by category, the settings worth changing on every machine, the @-context and slash-command reference, and the migration gotchas from 2.x.
By Ryan Calloway. Updated May 2026.
AI agent shortcuts
| Action | macOS | Windows / Linux | Notes |
|---|---|---|---|
| Toggle Agent panel | Cmd + I | Ctrl + I | Opens Composer / Agent side panel |
| Toggle Chat side panel | Cmd + L | Ctrl + L | Composer in a new chat (see migration note below) |
| Inline Edit | Cmd + K | Ctrl + K | Select code first, then give editing instructions in natural language |
| Open mode menu | Cmd + . | Ctrl + . | Switch between Agent / Ask / Manual / Custom modes |
| Cycle AI models | Cmd + / | Ctrl + / | Rotate through available models in current session |
| Cycle chat modes | Shift + Tab | Shift + Tab | Rotate between Agent, Ask, and Manual from the input box |
| Toggle Agent layout | Cmd + E | Ctrl + E | Switch between side panel and fullscreen Agent view |
| New chat | Cmd + N (or Cmd + R) | Ctrl + N | Start a fresh conversation |
| New chat tab | Cmd + T | Ctrl + T | Open a new chat tab; manage multiple sessions with tabs |
| New parallel agent session | Cmd + Shift + N | Ctrl + Shift + N | Queues a parallel Composer run (new in Cursor 3) |
| Toggle background agent panel | Cmd + Shift + B | Ctrl + Shift + B | Monitor running background agents |
| Queue message | Ctrl + Enter | Ctrl + Enter | Sends after current task finishes; useful for batching follow-ups |
| Cancel AI generation | Cmd + Shift + Delete | Ctrl + Shift + Delete | Stops a running generation immediately |
| Toggle voice mode | Cmd + Shift + Space | Ctrl + Shift + Space | Voice input for hands-free prompting |
| Hold for voice input | Ctrl + M (hold) | Ctrl + M (hold) | Hold to dictate; releases and finalizes when you let go |
Code suggestion shortcuts
| Action | macOS | Windows / Linux |
|---|---|---|
| Accept Tab suggestion | Tab | Tab |
| Partial accept (word by word) | Cmd + Right | Ctrl + Right |
| Reject suggestion | Esc | Esc |
| Accept all diff changes | Cmd + Enter | Ctrl + Enter |
| Reject all diff changes | Cmd + Backspace | Ctrl + Backspace |
| Quick question in Inline Edit (no changes applied) | Alt + Enter | Alt + Enter |
Context and navigation shortcuts
| Action | macOS | Windows / Linux |
|---|---|---|
| Add selected code to Chat context | Cmd + Shift + L | Ctrl + Shift + L |
| Add selected code to Inline Edit context | Cmd + Shift + K | Ctrl + Shift + K |
| Navigate previous chat | Cmd + [ | Ctrl + [ |
| Navigate next chat | Cmd + ] | Ctrl + ] |
| Paste as text (not context reference) | Cmd + Shift + V | Ctrl + Shift + V |
| Open Cursor settings | Cmd + Shift + J | Ctrl + Shift + J |
| Command palette | Cmd + Shift + P | Ctrl + Shift + P |
| Quick file open | Cmd + P | Ctrl + P |
| AI codebase search | Cmd + Shift + K | Ctrl + Shift + K |
| Re-index codebase | Cmd + Shift + R | Ctrl + Shift + R |
| Jump to next diagnostic | F8 | F8 |
| Jump to previous diagnostic | Shift + F8 | Shift + F8 |
| Toggle file reading strategy | Cmd + M | Ctrl + M |
| Open .cursor/rules | Cmd + , then R | Ctrl + , then R |
The 4 bindings that moved or are new
- “Jump to next diagnostic” was Cmd + Shift + M in 2.x. In Cursor 3 it is F8, matching VS Code default. Remap in the keybindings editor if you want the old binding back.
- “Open AI chat” changed meaning. Cmd + L opened a standalone chat view in 2.x. In Cursor 3, Cmd + L is Composer in a new chat. The old sidebar-only chat is now at
View > Cursor Chat. Old muscle memory lands you in Composer instead. - “New parallel agent session” (Cmd + Shift + N) did not exist in 2.x. Parallel agents are new in Cursor 3; this shortcut queues a concurrent Composer run alongside your current session.
- Inline Edit (Cmd + K) existed in 2.x but now opens a natural-language editing input after you select code. Select a function, press Cmd + K, type “add input validation”, and the diff appears inline.
@ context references
Type @ in the chat input to attach context directly to your prompt without copy-pasting:
| Reference | What it attaches | Example |
|---|---|---|
@Files |
Specific files or folders | @src/components/Header.tsx |
@Code |
Specific functions or classes (more granular than @Files) | @handleSubmit |
@Docs |
Indexed documentation; add custom URLs via “Add new doc” | @Docs Next.js |
@Git |
Diffs, commits, branches, PR state | @Git summarize what changed on this branch |
@Web |
Live web content; fetches and inlines the page | @Web https://docs.cursor.com |
@Cursor Rules |
Active .cursor/rules context in the current conversation | @Cursor Rules |
@Past Chats |
Previous chat history for continuity | @Past Chats |
Navigate candidates with arrow keys after typing @. Type / after a folder name to expand subfolders. Use @Code rather than @Files when you want the model to see a specific function without the surrounding file noise.
Slash commands
| Command | What it does | Notes |
|---|---|---|
/commit |
Generate a commit message from staged changes | Customizable via .cursor/commands/commit.md |
/pr |
Generate a pull request description | Can chain: /commit and /pr |
/worktree |
Run agent in an isolated git worktree | Keeps main code safe; ideal for experimental changes |
/multitask |
Run requests in parallel instead of queuing them | New in 2026-04-24 update; requires Pro plan |
/summarize |
Compress context window and summarize the conversation | Use when context runs low in long sessions |
/create-rule |
Auto-generate a .cursor/rules/*.mdc file from chat |
Creates files with proper frontmatter |
/migrate-to-skills |
Convert existing rules and slash commands to skills format | Cursor 2.4+ feature; preserves original behavior |
Custom slash commands live as Markdown files in .cursor/commands/*.md (project-level) or ~/.cursor/commands/*.md (global). Team and Enterprise plans can create shared commands via the Cursor Dashboard.
The 6 settings worth changing on every machine
// .cursor/settings.json
{
"composer.agent.model": "auto",
"composer.agent.parallelism": 2,
"rag.chunker.size": 768,
"rag.chunker.overlap": 128,
"autocomplete.maxContextFiles": 12,
"indexer.includeNodeModules": false
}
The indexer.includeNodeModules setting is the most impactful for anyone on Node or pnpm. Cursor 3’s indexer walks node_modules by default, which extends cold-start time substantially on monorepos. The r/cursor “Cursor 3 cold start is slow” thread converges on this fix across dozens of replies. Set it to false unless you specifically author a library you want indexed.
The RAG chunker settings: 768 tokens with 128 overlap is the sweet spot for most codebases. The default 512/64 splits functions at awkward boundaries. Larger chunks mean fewer retrieval hits but better context per hit; the 768/128 ratio keeps context coherent without blowing the retrieval budget.
Mode reference
| Mode | What it does | When to use |
|---|---|---|
| Agent | Full autonomy; reads files, runs terminal commands, writes code across the repo | Multi-step tasks, refactors, feature implementation |
| Ask | Read-only; answers questions, explains code, does not write files | Code review, understanding unfamiliar code |
| Manual | You control every edit; agent suggests but does not apply automatically | Careful incremental changes where you want to approve each step |
| Custom | Configurable combination of the above behaviors | Team-specific workflows defined in .cursor/rules/ |
Canvases (April 2026)
Cursor agents can now respond with interactive canvases – durable artifacts pinned in the Agents Window side panel. Canvases combine tables, diagrams, and charts into dashboards and custom UIs. Request one by asking the agent to “create a canvas” or by using a rule that triggers canvas output for data-heavy responses. Canvases persist across chat sessions and can be reopened from the Agents Window.
.cursorignore and .cursor/rules migration
Two one-time gotchas when upgrading from 2.x:
- If your 2.x
.cursorignorehas any line starting with/, strip the leading slash. In Cursor 3 the matcher is gitignore-compatible, and a leading slash pins the pattern to the repo root only. A top-level/srcpattern now matches only the root-levelsrc/, not nested ones. - The legacy
.cursorrulesfile is still read in Cursor 3 but does not inherit the precedence of the new.cursor/rules/*.mdcfiles. Move your rules to the new location. The official Cursor docs cover the.mdcfrontmatter format.
Plan and pricing
| Plan | Price | Background agent cap | Parallel agents | Canvases |
|---|---|---|---|---|
| Free | $0 | n/a | ~50 slow requests/day | Limited |
| Pro | $20/mo | 2-hour soft cap | Yes | Yes |
| Max | $200/mo | No cap, priority GPU | Yes, higher limits | Yes |
| Business | $40/user/mo | 2-hour soft cap | Yes | Yes |
Related
For the full review of Cursor 3 + Composer 2 with the 14-task scores, see the Cursor 3 review. For the chunker math behind the 768/128 settings above, see the RAG defaults cheatsheet.
One-line takeaway
Set the indexer to skip node_modules, bump the RAG chunker to 768/128, learn Cmd + K for inline edits and Cmd + . for mode switching, move your rules to .cursor/rules/, and Cursor 3 stops surprising you within the first hour.