Home /
Blog /
I Dumped GitHub Copilot for Cursor After 18 Months...
I Dumped GitHub Copilot for Cursor After 18 Months — Here's My DevOps Playbook
By CaelLee||8 min read
I Dumped GitHub Copilot for Cursor After 18 Months — Here's My DevOps Playbook
Meta Description: Real-world migration guide from GitHub Copilot to Cursor AI IDE with benchmarks, config files, and honest cost analysis. Spoiler: my Terraform modules have never been cleaner.
Last November, I stared at yet another Copilot suggestion that completely missed the point of my infrastructure-as-code setup. The 47th time, if I'm counting. Which I was. Because I'm that person.
Three months later, I've moved my entire DevOps workflow to Cursor. My Terraform modules are cleaner, my Docker Compose files actually respect healthchecks, and I'm sleeping better. Not because the code is perfect — it's not — but because I'm spending way less time fixing AI-generated nonsense.
Let me walk you through the migration. I've got config files, benchmarks, and all the gotchas I wish someone had written down before I started. Look, this isn't a "Copilot sucks" post. It doesn't. I used it for 18 months and it paid for itself many times over. But for infrastructure work specifically? Different beast entirely.
TL;DR for the Impatient
Context window: Cursor sees your entire project. Copilot sees ~2,000 tokens. This matters enormously for IaC.
Accuracy: 89% first-try accuracy with Cursor vs 67% with Copilot on Terraform resources (I tested this obsessively).
Cost: You'll pay $15-25 more per month. You'll save 8-12 hours. Do the maths.
Migration time: 15 minutes for basic setup, 2 weeks to retrain muscle memory.
The catch: Extension compatibility is hit-or-miss, and the memory footprint is chunkier.
Prerequisites — The Boring Bit
Nothing exotic here:
GitHub Copilot subscription (keep it active for comparison — I cancelled mine and regretted it, had to resubscribe for benchmarking)
VS Code 1.85+ installed (Cursor is VS Code under the hood)
Git 2.43+ configured with your work repos
OpenAI API key (optional, for custom model fallback when Claude gets weird)
10-15 minutes for initial setup
Why I Actually Switched: Three Numbers That Changed My Mind
I track things. Probably too much. My wife takes the mickey out of my spreadsheets, but they don't lie.
1. Context Window: The Game-Changer
# Copilot's effective context (tested Dec 2023)
# ~2,000 tokens of surrounding code
# Result: 23% of suggestions needed manual editing
# Cursor's context (v0.8.5, Jan 2024)
# Full file + cross-file references based on imports
# Result: 8% needed manual editing
I ran that test three times because I didn't believe the 8% figure. Honestly, I still side-eye it a bit. But the improvement is real.
Concrete example: I was refactoring an ECS task definition. Copilot suggested awsvpc network mode — fine, but it completely missed the security group configuration sitting in my variables.tf. Cursor pulled in both files and suggested the entire configuration, security group reference included. I sat there for maybe 30 seconds just... staring. It felt like the tool had actually read my project.
2. Infrastructure-as-Code Accuracy (I Tested 50 Terraform Blocks)
Tool
First-try Accuracy
Context-Aware
Multi-file Resolution
Copilot
67%
Partial
No
Cursor
89%
Full
Yes
Cursor + Claude 3 (API)
94%
Full
Yes
The Claude 3 numbers are from Anthropic's latest — I think the Opus variant? I should probably double-check which endpoint I was hitting. But the gap is real, regardless of the exact model.
3. The Docker Compose Incident (11 PM Edition)
Last week. Late. I was debugging a multi-container setup with inter-service dependencies. Copilot suggested a valid depends_on clause — technically correct — but ignored the healthcheck timing. Would've caused race conditions in production. Again.
Cursor didn't just suggest the correct healthcheck. It referenced my custom entrypoint script in a completely different directory:
# Copilot suggestion (incomplete — would've woken me up at 3 AM)
services:
api:
depends_on:
- db
# Cursor suggestion (production-ready, actually)
services:
api:
depends_on:
db:
condition: service_healthy
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/app
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d app"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
That start_period: 10s? That's the sort of detail that prevents PagerDuty alerts. Copilot would never have added that. It doesn't think about cold starts — it just pattern-matches.
The Actual Migration (Step by Step)
Step 1: Export Your Copilot Settings
Grab what you can. File locations vary:
# macOS/Linux
cat ~/.config/Code/User/settings.json | grep -A 10 "github.copilot"
# Windows (PowerShell)
Get-Content $env:APPDATA\Code\User\settings.json | Select-String "github.copilot"
# Mine looked like this (sanitised):
{
"github.copilot.enable": {
"*": true,
"terraform": true,
"yaml": true,
"markdown": false
}
}
Seriously: Don't cancel Copilot yet. Run both side-by-side for two weeks. I skipped this step, regretted it, and paid for an extra month just to benchmark properly.
Took three minutes. Most of that was waiting for the download.
Step 3: Sync Your VS Code Extensions
Cursor is VS Code-compatible. Symlink your extensions:
# Export from VS Code
code --list-extensions > vs-code-extensions.txt
# Import to Cursor
while read extension; do
cursor --install-extension "$extension"
done < vs-code-extensions.txt
Critical step: Disable the Copilot extension in Cursor. Trust me on this one:
cursor --disable-extension GitHub.copilot
I learned the hard way. Two AI assistants fighting over suggestions creates... chaos. Weird, glitchy chaos. You'll think your machine is possessed.
Step 4: Configure Cursor's AI (My Production Settings After 3 Months of Tinkering)
The temperature setting took forever to dial in. 0.3 feels right for infrastructure — creative enough to handle edge cases, not so creative it hallucinates AWS APIs. Which happened. Twice. I got a suggestion for awss3bucket_v2 once. That's not a thing. Claude got a bit... imaginative.
Step 5: Create Project Rules (This is Where Cursor Earns Its Keep)
.cursorrules in your project root:
rules:
- pattern: "*.tf"
instructions: |
Use AWS provider ~> 5.0 syntax
Always include tags block with Environment and Project
Prefer for_each over count
Include lifecycle { prevent_destroy = true } for stateful resources
- pattern: "*.yml"
instructions: |
Use GitHub Actions syntax
Pin action versions with SHA256
Include concurrency groups for deployment workflows
- pattern: "Dockerfile*"
instructions: |
Use multi-stage builds
Pin base images with digests, not tags
Run as non-root user (UID 1000)
Result? My team's PR review time dropped about 40%. Not because we're writing better code — though we are — but because Cursor catches style violations before they hit the PR. Our last sprint, we merged 23 PRs with zero style comments. That's never happened before. Ever.
The Money Bit: Cost Analysis
Item
GitHub Copilot
Cursor
Difference
Individual plan
$10/month
$20/month
-$10
Business (per seat)
$19/month
$20/month
-$1
API costs (Claude 3)
N/A
~$5-15/month*
Variable
My actual total
$10/month
~$25/month
-$15
*Based on my heavy usage: ~200 requests/day
Here's the thing: I'm paying $15 more per month. But I'm saving 8-12 hours. At DevOps contractor rates — even conservative ones — that's $1,200-1,800 in recovered time. The maths works.
But if you're a student or doing side projects? Stick with Copilot. The cost difference matters when you're not billing hourly.
The Migration Hiccups (Learn From My Mistakes)
Problem 1: Extension Weirdness
The AWS Toolkit extension acted up in Cursor v0.8.2. The explorer panel would disappear. Reappear. Disappear again. Like a ghost.
# Fix: Roll back to AWS Toolkit v1.84.0
cursor --install-extension [email protected]
Cost me an afternoon of head-scratching.
Problem 2: Git Diff Confusion
Cursor's git diff view initially showed AI suggestions as actual changes. I committed AI-generated code twice before I caught it. Embarrassing PR comments ensued.
// Fix: Add to .cursor/settings.json
{
"ai.gitDiffIntegration": "exclude"
}
Problem 3: Muscle Memory
My fingers knew Copilot's Alt+\ trigger. My i3 window manager also used Alt+\. Conflicts everywhere.
Took about a week to retrain myself. Still catch myself hitting Alt+\ occasionally.
Real-World Workflow: Before and After
Before (Copilot) — I'd write awss3bucket and get the bare minimum. Then spend 5-10 minutes manually adding encryption, versioning, logging, tags. Every. Single. Time.
After (Cursor with .cursorrules) — I get the complete compliant block:
Now I tweak the bucket name and move on. It's almost boring. In a good way.
Performance (Because I Measured That Too)
# Suggestion latency
# VS Code + Copilot: 847ms ± 45ms
# Cursor + Claude 3: 623ms ± 32ms (26% faster)
# Memory after 4 hours
# VS Code: 1.2 GB
# Cursor: 1.4 GB (17% more)
The memory hit is noticeable on my 16GB M1. Not a dealbreaker, but I close Chrome tabs more aggressively now.
When NOT to Switch
Be honest with yourself:
Heavy extension dependency: If you use 30+ niche extensions, test every single one
Regulated environments: Cursor's telemetry might not pass compliance (ask your security team)
Low-context coding: Standalone scripts? Copilot's probably fine
Team resistance: I lost a week to Slack debates. Don't force it
What's Next
I'm testing Cursor's "agent mode" (v0.9 beta) — it can execute terminal commands directly. Yesterday it suggested a terraform destroy. I nearly had a coronary. It was correct in context, but still. We're not ready for fully autonomous infrastructure. Not yet.
Your turn: Have you made the switch? What broke first? Drop your experience in the comments — especially if you've found config tricks I missed. I'm particularly curious about anyone using this with Pulumi or CDKTF.
Full-stack developer with 8+ years of experience. Currently building AI-powered developer tools. I've tested 20+ AI API providers and coding assistants.
Ready to get started?
Get your API key and start building with 180+ AI models.