Cursor Tab Completion
Master Cursor's AI-powered Tab completion system. Tab uses a specialized Cursor model trained for inline code prediction -- it learns from your accept/reject behavior to improve over time.
How Tab Works
- You type code in the editor
- Cursor's model predicts what comes next based on: current file, open tabs, recent edits, project rules
- Ghost text (gray text) appears inline
- You decide: Tab to accept, Esc to dismiss
// You type:
function validateEmail(email: string)
// Ghost text appears:
function validateEmail(email: string): boolean {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; ← gray ghost text
return emailRegex.test(email);
}
Key Bindings
| Action | macOS | Windows/Linux |
|--------|-------|---------------|
| Accept full suggestion | Tab | Tab |
| Accept word-by-word | Cmd+→ | Ctrl+→ |
| Dismiss suggestion | Esc | Esc |
| Force trigger | Ctrl+Space | Ctrl+Space |
Word-by-word acceptance (Cmd+→) is powerful for partial suggestions. If the AI suggests a complete function but you only want the signature, accept word-by-word until you have what you need, then type your own body.
Tab Completion Settings
Access via Cursor Settings > Tab:
| Setting | Purpose | Recommendation | |---------|---------|----------------| | Tab Completion | Master on/off toggle | Keep enabled | | Trigger in comments | Generate comment text | Disable for less noise | | Accept suggestion keybinding | Remap Tab to another key | Default (Tab) works best | | Suggestion delay | Time before ghost text appears | Lower = faster but more flicker |
Disabling Tab for Comments
If Tab suggestions in comments are distracting:
Cursor Settings > Tab Completion > uncheck Trigger in comments
Context That Improves Completions
Tab quality depends heavily on available context:
- Current file: The model reads the full file you are editing
- Open editor tabs: Files open in other tabs provide pattern context
- Recent edits: Changes you have made in the last few minutes
- Project rules:
.cursor/rules/*.mdcor.cursorrulescontent - Codebase index: If indexed, the model uses semantic code search
Tips for Better Suggestions
// BAD: Tab has no context about what you want
function process(data) {
// GOOD: Type signature gives Tab strong signal
function processPayment(
amount: number,
currency: 'USD' | 'EUR',
paymentMethod: PaymentMethod
): Promise<PaymentResult> {
Write descriptive function names and type signatures first. Tab uses these as strong signals for generating the body.
Using Comments as Prompts
// Parse CSV file, skip header row, return array of objects with typed fields
function parseCSV(filepath: string): Promise<Record<string, string>[]> {
// Tab will generate the full implementation based on the comment above
}
Tab vs Other AI Features
| Feature | Trigger | Scope | Speed | |---------|---------|-------|-------| | Tab | Automatic while typing | Single completion | Instant (~100ms) | | Inline Edit (Cmd+K) | Manual selection + prompt | Selected code block | ~2-5 seconds | | Chat (Cmd+L) | Manual prompt | Conversational | ~3-10 seconds | | Composer (Cmd+I) | Manual prompt | Multi-file | ~5-30 seconds |
Tab is the only feature that runs continuously as you type. It is optimized for speed over capability -- simple completions, not complex reasoning.
Important Limitations
- No custom models for Tab: Even with BYOK (Bring Your Own Key), Tab always uses Cursor's proprietary model. Custom API keys apply to Chat and Composer only.
- No reasoning: Tab predicts the next tokens; it does not reason about correctness. Always review suggestions.
- Context window: Tab sees less context than Chat or Composer. For complex logic, use Cmd+K or Cmd+L instead.
Conflict Resolution
If Tab conflicts with other extensions:
- Disable GitHub Copilot:
Extensions> search "Copilot" > Disable. Running both causes duplicate ghost text. - Disable TabNine / Codeium: Same issue -- only one inline completion provider should be active.
- VS Code IntelliSense: Tab and IntelliSense coexist. IntelliSense handles imports/completions, Tab handles multi-line generation.
Remap if needed: Cmd+K Cmd+S > search acceptCursorTabSuggestion > assign new key.
Measuring Tab Effectiveness
Tab gets better with usage. The model learns from:
- Accepts (Tab): Reinforces the pattern
- Rejects (Esc): Discourages similar suggestions
- Partial accepts (Cmd+→): Signals which parts were useful
After a few days on a project, Tab suggestions become noticeably more aligned with your coding style.
Enterprise Considerations
- Tab suggestions are generated using Cursor's proprietary model -- not configurable via API keys
- Privacy Mode applies to Tab: with Privacy Mode on, code sent for Tab predictions has zero data retention
- Tab is included in all Cursor plans (Free tier has limited daily uses)
- No audit logging for individual Tab completions