---
name: "cursor-context-management"
description: |
  Optimize context window usage in Cursor with @-mentions, context pills, and conversation strategy.
  Triggers on "cursor context", "context window", "context limit", "cursor memory", "context management",
  "@-mentions", "context pills".
allowed-tools: "Read, Write, Edit, Bash(cmd:*)"
version: 1.0.0
license: MIT
author: "Jeremy Longshore <jeremy@intentsolutions.io>"
compatible-with: claude-code, codex, openclaw
tags: [saas, cursor, cursor-context]
---
# Cursor Context Management

Optimize how Cursor AI uses context to produce accurate, relevant responses. Context is everything the model sees when generating a response -- managing it well is the single biggest lever for output quality.

## Context Sources

Cursor assembles context from multiple sources before each AI request:

```
┌─ Always Included ─────────────────────────────────────┐
│  System prompt (Cursor internal)                      │
│  Active .cursor/rules/*.mdc with alwaysApply: true    │
│  Current file (for Tab, Inline Edit)                  │
└───────────────────────────────────────────────────────┘
┌─ Conditionally Included ──────────────────────────────┐
│  Selected code (highlighted before Cmd+L/Cmd+K)       │
│  @-mention targets (@Files, @Folders, @Code)          │
│  Glob-matched rules (.mdc with matching globs)        │
│  Conversation history (prior turns in chat)           │
│  Open editor tabs (lightweight reference)             │
└───────────────────────────────────────────────────────┘
┌─ On-Demand (explicit @-mention) ──────────────────────┐
│  @Codebase  → semantic search across indexed files    │
│  @Docs      → crawled external documentation          │
│  @Web       → live web search results                 │
│  @Git       → uncommitted diff or branch diff         │
│  @Lint Errors → current file lint diagnostics         │
└───────────────────────────────────────────────────────┘
```

## Context Pills

Active context appears as pills at the top of the Chat/Composer panel:

```
[main.ts] [src/utils/] [@Web: next.js 15] [Rule: typescript-standards]
```

- Click a pill to expand and see its contents
- Click `x` on a pill to remove it from context
- Adding too many pills fills the context window, degrading response quality

## @-Mention Strategy by Task

### Code Understanding
```
@src/auth/middleware.ts @src/types/user.ts
Explain how the JWT validation works and what happens when a token expires.
```
Use `@Files` for specific files. Avoid `@Folders` unless you need the full directory -- it consumes a lot of context.

### Bug Investigation
```
@src/hooks/useCart.ts @Lint Errors @Recent Changes
The cart total is NaN after the latest changes. What broke?
```
`@Recent Changes` + `@Lint Errors` gives the model forensic context.

### Architecture Questions
```
@Codebase where are database queries made?
```
`@Codebase` triggers semantic search across the indexed codebase. Good for discovery when you do not know which files are relevant. Costs more context than targeted `@Files` mentions.

### Using External Knowledge
```
@Docs Prisma @Web prisma client extensions 2025
How do I add soft-delete as a Prisma Client extension?
```
`@Docs` uses pre-indexed documentation. `@Web` does a live search. Combine both for comprehensive answers about third-party tools.

## Context Budget Management

Each model has a context limit. Overloading it causes the model to drop information silently:

| Model | Context Window | Practical Limit |
|-------|---------------|-----------------|
| GPT-4o | 128K tokens | ~80K usable |
| Claude Sonnet | 200K tokens | ~150K usable |
| Claude Opus | 200K tokens | ~150K usable |
| cursor-small | 8K tokens | ~5K usable |

### Signs of Context Overflow

- Model forgets instructions from earlier in the conversation
- Responses become generic or repetitive
- Model contradicts what it said 3 turns ago
- Suggested code ignores file context you provided

### Mitigation Strategies

1. **Start new conversations frequently.** One topic per conversation.
2. **Use specific @Files, not @Folders.** `@src/api/users.ts` is better than `@src/api/`.
3. **Remove context pills you no longer need.** Click `x` to drop stale files.
4. **Avoid @Codebase for narrow questions.** It pulls in many code chunks. Use `@Files` when you know the location.
5. **Break large tasks into steps.** Ask for the type definitions first, then the implementation, then the tests -- in separate turns or chats.

## Automatic vs Manual Context

Cursor automatically includes context in some cases:

| Feature | Automatic Context |
|---------|------------------|
| Tab Completion | Current file + open tabs + recent edits |
| Inline Edit (Cmd+K) | Selected code + surrounding file |
| Chat (Cmd+L) | Conversation history + explicitly added context |
| Composer (Cmd+I) | Referenced files + codebase search |

For Chat and Composer, you control context through @-mentions. Tab and Inline Edit manage their own context automatically.

## .cursorignore for Context Control

Prevent files from ever being included in AI context:

```gitignore
# .cursorignore (project root)

# Secrets and credentials
.env
.env.*
**/secrets/
**/credentials/

# Large generated files
dist/
build/
node_modules/
*.min.js
*.bundle.js

# Data files that consume context budget
*.csv
*.sql
*.sqlite
fixtures/
```

**Note:** `.cursorignore` is best-effort. It prevents files from appearing in indexing and AI features, but is not a security boundary for protecting secrets. Use `.gitignore` and environment variables for actual secret management.

## Advanced: Scoped Rules as Context

Project rules automatically inject context when relevant files are opened:

```yaml
# .cursor/rules/database-patterns.mdc
---
description: "Database query patterns and conventions"
globs: "src/db/**/*.ts,src/repositories/**/*.ts"
alwaysApply: false
---
# Database Conventions
- Use parameterized queries exclusively
- All queries go through repository pattern
- Wrap multi-table operations in transactions
- Use connection pooling (pool size: 10)
```

This rule automatically loads when editing database files, giving the AI the right conventions without you manually adding context each time.

## Enterprise Considerations

- **Data sensitivity**: Use `.cursorignore` to exclude files with PII, credentials, or regulated data
- **Privacy Mode**: Ensures code sent as context has zero data retention at model providers
- **Conversation hygiene**: Train teams to start new chats per task to avoid context bleed
- **Cost awareness**: Larger context = more tokens = higher API costs when using BYOK

## Resources

- [@ Symbols Overview](https://docs.cursor.com/context/@-symbols/overview)
- [Codebase Indexing](https://docs.cursor.com/context/codebase-indexing)
- [Ignore Files](https://docs.cursor.com/context/ignore-files)
