Basics
Cursor Tab: How Autocomplete Predicts Your Next Edit
Cursor Tab is Cursor's AI-powered autocomplete. It suggests code as you type, drawing on your recent edits, the surrounding code and linter errors. Suggestions appear as grayed-out text ahead of your cursor. Press Tab to accept, Esc to reject, and Tab again to jump to the next predicted editing location.
On this page
What is Cursor Tab and what does it read?
Tab is Cursor's AI-powered autocomplete. It suggests code as you type, and the suggestion arrives as grayed-out text ahead of your cursor rather than in a dropdown you have to open. What separates it from a snippet engine is the input it reads. Three signals feed each prediction:
- Your recent edits
- What you just changed, so the next suggestion follows the direction of the work.
- Surrounding code
- The code around your cursor in the current file.
- Linter errors
- Existing errors in the file, which Tab can suggest fixing.
Of the three signals, linter errors get the least attention. An autocomplete that reads only the prefix can finish the line you are on. Reading the errors already sitting in the file means Tab can propose a fix for something you broke two minutes ago, which is a different job from finishing a line.
Recent edits are the steering input, and that shows up most at the start of a session. Open a file you have not touched today and the first suggestion has little to work from beyond the code around your cursor. Make two or three edits by hand in the direction you are heading and the suggestions narrow to that direction. That is, I think, why Tab reads as inconsistent to people in their first hour with it, when they are sampling it at its coldest. Suggestions that never arrive at all are a separate problem, and the troubleshooting guide lists the four usual causes.
Fix the context, not the model
0:42 · narratedRead this demo as text
- Tab wants to rewrite the return into a sort — and that drops the filtering this function exists for. Confident. Plausible. Wrong. Reject it. A miss you ignore costs nothing.
- Another miss flips the empty-query contract. One wrong ghost is noise. Two in a row? That's a signal about the spot — nothing near the cursor states your intent.
- One comment naming the goal, and the next ghost is the guard you came to write. Tab to accept. Same file, same model — the only thing that changed was the context you gave it.
Practice next: Practice this yourself in the hands-on module.
Simulated Cursor 3.12 (macOS, light) — beta educational reconstruction, not the real product.
This exact topic is a hands-on Lesson: Tab Autocomplete Basics — about 5 minutes, free to read. Or try it live in the simulator →
Rather do it than read about it? Run 11 interactive Cursor walkthroughs in a simulated editor. Free, no account needed.
How do I accept or reject a Tab suggestion?
Three keystrokes cover the whole interaction. Accepting is one key, rejecting is a key or simply typing over the suggestion, and there is a third for taking only part of it. The table pairs each action with its key on both platforms.
- Action
- Accept the full suggestion
- Key
Tab
- Action
- Reject
- Key
Esc, or keep typing
- Action
- Accept word-by-word (Mac)
- Key
Cmd+Right Arrow
- Action
- Accept word-by-word (Windows/Linux)
- Key
Ctrl+Right Arrow
| Action | Key |
|---|---|
| Accept the full suggestion | Tab |
| Reject | Esc, or keep typing |
| Accept word-by-word (Mac) | Cmd + Right Arrow |
| Accept word-by-word (Windows/Linux) | Ctrl + Right Arrow |
Suggestions render as grayed-out text ahead of your cursor.
Accept what matches, drop what drifts
0:31 · narratedRead this demo as text
- Okay, watch Tab. It predicts the rename you already started. Hit Tab for the next two hits. It chains the edit points so a mechanical rename never pulls your hands off the keys.
- Next ghost wants the CSS class too. That drifts past your intent. Reject it. Then check Source Control: two changes, both inside the rename you started. Accept what matches. Drop what drifts.
Practice next: Practice this yourself in the hands-on module.
Simulated Cursor 3.12 (macOS, light) — beta educational reconstruction, not the real product.
Word-by-word acceptance is the control worth learning early, and one specific failure is why. A suggestion opens on exactly the right shape and then drifts somewhere in its second half. Take the whole thing and you own a line that reads like your own code, which is the kind of line a reviewer skims instead of checking. Walk into it with Cmd + Right Arrow instead, and keep typing the moment it stops matching what you wanted.
Between the two ways of rejecting, typing over the suggestion is the cheaper one, since it is what you were about to do anyway. Esc is worth the keystroke when the suggestion is long enough to be in your way while you think.
Remapping the accept key is offered, and it is the change I would make last. The pull toward it is indentation muscle memory, and Cursor does let you rebind Accept Cursor Tab Suggestions from Keyboard Shortcuts. The catch is that Tab is the accept key in Cursor's own shortcut reference, so a rebind becomes a local convention that every doc and every colleague pairing with you will get wrong. Rebind it if the conflict is genuinely costing you edits. If it only bites in two file types, use the per-extension switch further down instead.
Can Tab edit multiple lines at once?
Yes. A single Tab suggestion is not limited to finishing the line under your cursor. Cursor documents three shapes it can take, and they get progressively larger:
- Modify multiple lines in one accepted suggestion.
- Add missing import statements that your new code needs.
- Suggest coordinated edits across related code.
The import case is the everyday one. Type a call to something you have not imported yet and the import arrives with the suggestion.
The larger shapes change what reviewing a suggestion means, though. A single-line completion you judge from the line you are already reading. Once a suggestion also edits code above your cursor, part of what you accepted sits outside the window you were looking at, so read the diff rather than the line, and read it properly on code you did not write.
Tab catches the rest of the rename
0:26 · narratedRead this demo as text
- You already renamed the parameter on the signature. Look — Tab answers with two gray lines at once. Both leftover references want to become items.
- Tab accepts the multiline rename. Read every line first — a multiline suggestion is still a suggestion, not a free pass to skip review.
Practice next: Practice this yourself in the hands-on module.
Simulated Cursor 3.12 (macOS, light) — beta educational reconstruction, not the real product.
What are jump-in-file and cross-file suggestions?
Tab predicts where you will edit next, not only what you will type next. Once you have accepted a suggestion, the Tab key changes meaning: press it again and Cursor moves you to the next editing location. The two forms differ in how far the jump reaches.
- Jump-in-file
- Accept a suggestion, press
Tabagain, and Tab predicts your next editing location in the file and jumps there. It saves you from scrolling or navigating by hand. - Cross-file
- When a change in one file needs an update in another, Tab predicts that edit too. A portal window appears at the bottom of the editor when a jump to another file is available.
The key changing meaning is, I suspect, what catches most people, and it catches them the same way every time. You accept a suggestion, your hand is still on Tab, you press it again out of habit, and your cursor is now somewhere else in the file. Nothing is broken by that. You have been moved, and if you did not read where it took you, your next keystroke lands in the wrong place.
The portal window at the bottom of the editor is what tells you Tab has found work in another file. It is easy to miss while your attention is on the line in front of you, and if you miss it the change you believe you have finished is only finished in the file you were looking at.
The cost usually arrives later, as a failing test or a reviewer asking why one call site moved and its neighbour did not. When a rename half-lands on you, search the old name across the repo before you commit, which is the check I would run on any rename an editor helped with.
Does Cursor Tab follow my rules?
No. Cursor's rules documentation answers this one directly: rules do not impact Cursor TabCursor's original autocomplete: multi-line, edit-aware suggestions you accept with the Tab key. Press Enter for the full definition. or other AI features. Rules reach Agent and the chat surfaces; Tab sits outside their scope.
So the levers over Tab are different from the ones over the agent. No rule file reaches it. What it reads is the code around your cursor and what you just did to it, so a convention reaches its suggestions by being present in the file rather than by being written down somewhere.
My first instinct was to treat that as a gap and write the convention into a rule anyway, on the theory that at least the agent would respect it. That is the wrong order of operations. If you want Tab to follow a pattern, put one correct instance of it in the file and start typing the second one. Keep the rule file for the surfaces that read rules.
If you concluded your rule file was broken after watching Tab ignore it, the rules fix page covers where else that test goes wrong.
Can I restrict or audit what Tab writes?
Two hooks cover Tab specifically. beforeTabFileRead runs before Tab reads a file and returns allow or deny, which is where redaction or access control goes. afterTabFileEdit runs after Tab edits a file and receives the edit range plus the line before and after, enough to drive a formatter or an audit log. Both fire only for Tab, never for Agent.
On a team of five I would not wire either one. The setup cost is real and every hook is one more thing that can break on somebody's machine. That calculus flips where a secret sitting in a file is a reportable event rather than an embarrassment, since beforeTabFileRead runs early enough to redact before Tab sees the contents.
The wording matters if any of this ends up in a written policy. Tab completions are an IDE feature, so neither hook runs in cloud agents. A policy line that reads 'every file Cursor reads passes through our redaction script' does not hold for a cloud agent run, so scope the sentence to the IDE before somebody audits you against it.
How do I turn Tab off or change its shortcut?
Tab has a status indicator in the bottom-right corner of Cursor, and clicking it is how you control the feature. It gives you three levels of off, from a timed pause to a permanent exclusion for particular file types.
- Snooze: disable Tab temporarily for a duration you choose.
- Disable globally: turn Tab off for all files.
- Disable for specific extensions: turn Tab off for certain file types, such as markdown or JSON.
The same settings live under Cursor Settings → Tab. Of the three, the per-extension switch is probably the one you keep: markdown and JSON are where a code-shaped suggestion is mostly noise, and turning Tab off there costs you nothing in the files where you want it. Snooze is for a screen share or a pairing session. Reach for the global switch last, because if the actual complaint is that Tab keeps guessing at your YAML, disabling globally solves it by removing the feature everywhere else too.
Cost is not a reason to switch it off on a paid plan. Cursor's models and pricing page lists unlimited Tab completions on the individual paid plans, and its sizing guidance says daily Tab users always stay within $20 of usage, which is what Pro already includes. Free (Hobby) accounts are the exception: they carry a monthly Tab allowance, and once it is spent suggestions pause until the next billing cycle.
Frequently asked questions
Does Cursor Tab suggest edits in other files?
Yes. Tab predicts cross-file edits when a change in one file needs an update in another. When a jump to another file is available, a portal window appears at the bottom of the editor.
How do I accept only part of a Tab suggestion?
Accept it word-by-word: press ⌘→ on Mac, or Ctrl→ on Windows and Linux. Keep typing to reject whatever is left.
Can I turn Tab off for markdown or JSON files only?
Yes. Click the Tab status indicator in the bottom-right corner of Cursor and choose to disable Tab for specific extensions. You can also snooze it for a set duration or disable it globally.
Do .cursor rules apply to Cursor Tab?
No. Cursor's rules documentation states that rules do not impact Cursor Tab or other AI features; they apply to Agent and the chat surfaces. To steer Tab toward a pattern, put a correct instance of it in the file you are editing, since Tab reads your recent edits and the surrounding code.
Can I audit what Cursor Tab writes?
Yes, with two Tab-specific hooks. beforeTabFileRead runs before Tab reads a file and can allow or deny access, so it is where redaction goes. afterTabFileEdit runs after Tab edits a file and receives the edit range plus the line before and after, which suits a formatter or an audit log. Both fire only for Tab, not Agent, and neither runs in cloud agents because Tab completion is an IDE feature.
Sources & last verified
- Cursor - Tab
- Cursor - Tab issues
- Cursor - Keyboard shortcuts
- Cursor - Rules
- Cursor - Hooks
- Cursor - Models and pricing
Cursor ships frequently. Last updated July 28, 2026.