The alwaysApply Tax
We audited a mature Cursor configuration and found 22 rules with alwaysApply: true, totaling 2,700 lines loaded into every single conversation—including "what's 2+2?" This is the alwaysApply tax.
Configuring Your AI Assistant series
- Rules vs Skills — When to use each
- The alwaysApply Tax (this post) — The hidden cost of always-on rules
- How Cursor Finds Skills — Discovery mechanics
The Discovery
During optimization of a shared Cursor rules repository, we ran a simple audit:
# Count alwaysApply rules
grep -l "alwaysApply: true" rules/*.mdc | wc -l
# Result: 22 rules
# Total lines in those rules
grep -l "alwaysApply: true" rules/*.mdc | xargs wc -l | tail -1
# Result: ~2,700 lines
22 rules × ~120 lines average = 2,700 lines of context loaded in every conversation.
Even when the user asks something completely unrelated, all 2,700 lines are in the context window.
Why This Matters
1. Token Costs
Every token costs money:
- GPT-4: ~$0.03/1K input tokens
- Claude: ~$0.015/1K input tokens
- 2,700 lines ≈ 5,000-8,000 tokens
Per-conversation overhead: $0.08-0.25 (for nothing relevant)
Daily cost (50 conversations): $4-12.50
Monthly cost: $120-375 in wasted tokens
2. Context Window Competition
Models have finite attention:
- Claude: 200K tokens (but attention degrades with length)
- GPT-4: 128K tokens
2,700 lines of rules means:
- Less room for actual code
- Less room for conversation history
- Degraded attention on what matters
3. Response Quality
Models perform worse with irrelevant context:
- More "noise" to filter
- Higher chance of confusion
- Slower response times
The Audit Results
What We Found
| Category | Count | Lines | Should Be alwaysApply? |
|---|---|---|---|
core-* (essential) |
8 | ~600 | Yes |
core-* (domain-specific) |
9 | ~1,400 | No — use globs |
agent-* behaviors |
5 | ~700 | Some yes, some no |
| Total | 22 | ~2,700 | ~8-10 should stay |
Rules That Should Stay alwaysApply
| Rule | Why |
|---|---|
core-ai-assistant |
Defines AI persona (fundamental) |
core-code-quality |
Universal code standards |
core-security |
Security must never be forgotten |
core-workflow |
Basic development approach |
core-error-handling |
Universal error handling |
core-git |
Commit standards |
core-escalation |
When to ask humans |
core-refusal-behavior |
What to refuse |
Rules That Should Use Globs
| Rule | Current | Should Be |
|---|---|---|
core-diagrams |
alwaysApply | globs: ["*.mmd", "**/diagrams/**"] |
core-documentation |
alwaysApply | globs: ["**/*.md", "**/docs/**"] |
core-logging |
alwaysApply | globs: ["**/log*", "**/logger*"] |
core-configuration |
alwaysApply | globs: ["**/*.config.*", "**/config/**"] |
core-naming |
alwaysApply | globs: ["**/*.ts", "**/*.py"] |
core-data-sourcing |
alwaysApply | Skill (it's a workflow) |
Estimated Savings
Before: 22 rules, ~2,700 lines always loaded
After: 8-10 rules, ~800-1,000 lines always loaded
Reduction: ~65% fewer always-on tokens
The Decision Framework
When alwaysApply IS Appropriate
| Criterion | Example |
|---|---|
| Truly universal standard | "Never commit secrets" |
| Affects EVERY interaction | "You are a helpful assistant" |
| Safety/security critical | "Refuse harmful requests" |
| Fundamental workflow | "Verify before implementing" |
When alwaysApply is NOT Appropriate
| Criterion | Better Alternative |
|---|---|
| Domain-specific guidance | globs targeting relevant files |
| Workflow/procedure | Skill (invoked when needed) |
| Reference material | Skill with references/ folder |
| Rarely needed | Description-based activation |
The Test
Ask: "If someone asks 'what's 2+2?', does this rule need to be loaded?"
- If yes → alwaysApply
- If no → globs or skill
Case Study: The Logging Rule
Before
---
description: "Logging standards"
alwaysApply: true
---
# 240 lines of logging guidance
Problem: Loaded when user asks about CSS, database, anything.
After
---
description: "Logging standards"
globs:
- "**/log*"
- "**/logger*"
- "**/*logging*"
---
# Same 240 lines, but only when relevant
Result: Only loaded when user opens logging-related files.
The Compound Effect
Individual Rules Seem Small
"It's only 80 lines, no big deal."
But They Compound
| Rules | Avg Lines | Total |
|---|---|---|
| 5 | 80 | 400 |
| 10 | 80 | 800 |
| 15 | 80 | 1,200 |
| 20 | 80 | 1,600 |
| 25 | 80 | 2,000 |
Each "small" addition increases baseline cost for all conversations.
The Boiling Frog
You don't notice performance degradation because:
- It happens gradually
- You attribute slowness to "the AI being slow"
- You don't A/B test with fewer rules
How to Audit Your Setup
Step 1: Count alwaysApply rules
grep -l "alwaysApply: true" .cursor/rules/**/*.md | wc -l
Step 2: Measure total lines
grep -l "alwaysApply: true" .cursor/rules/**/*.md | xargs wc -l
Step 3: List them
grep -l "alwaysApply: true" .cursor/rules/**/*.md | \
xargs -I {} sh -c 'echo "=== {} ===" && head -5 {}'
Step 4: Evaluate each
For each rule, ask:
- Does this apply to EVERY conversation?
- Could this be glob-triggered instead?
- Is this really a skill (workflow)?
Step 5: Migrate
- Change
alwaysApply: truetoglobs: [...] - Extract workflows to skills
- Delete redundant rules
Organizational Patterns
For Teams
Problem: Everyone adds alwaysApply rules, no one removes them.
Solution:
- Require justification for alwaysApply
- Regular audits (quarterly)
- Budget: "We allow X lines of alwaysApply rules"
For Shared Configurations
Problem: Upstream rules affect all downstream users.
Solution:
- Minimize alwaysApply in shared configs
- Let downstream add their own if needed
- Document what's always-on and why
Common Objections
"But I might need it!"
Response: That's what globs and skills are for. You'll still have the rule when relevant.
"Performance impact is small"
Response:
- It's not small at scale (50+ conversations/day)
- It compounds with each rule
- It degrades response quality
"I can't remember which file triggers which rule"
Response:
- Document your globs
- Use clear, specific patterns
- The AI doesn't need YOU to remember—globs handle it
Benchmarks
Based on our audit:
| Metric | Healthy | Concerning | Critical |
|---|---|---|---|
| alwaysApply rules | < 10 | 10-20 | > 20 |
| alwaysApply lines | < 1,000 | 1,000-2,000 | > 2,000 |
| % of rules as alwaysApply | < 30% | 30-50% | > 50% |
If you're in the "critical" zone, your AI is working with one hand tied behind its back.
Key Takeaways
-
Every alwaysApply rule is a tax. Paid on every conversation, whether relevant or not.
-
Most rules shouldn't be alwaysApply. If it could use a glob, it should.
-
Audit regularly. Rules accumulate; performance degrades gradually.
-
Budget your always-on context. Set a line limit and enforce it.
-
The 2+2 test. If a rule doesn't need to be there for "what's 2+2?", don't make it alwaysApply.
What's Next
You know the cost of alwaysApply. But what about skills? If they're not alwaysApply, how does the AI find them? The next post covers the discovery mechanics—and why your carefully crafted skills might not be getting used.
Next: How Cursor Finds Skills — Discovery mechanics and the glob trap