DevOps & Tooling · Cursor
Terraform & OpenTofu IaC .cursorignore
A .cursorignore for Terraform & OpenTofu IaC that keeps build output, large files and secrets out of Cursor's index (best effort).
- Path
- .cursorignore
- Loads
- Indexing and AI features
- Format
- gitignore syntax
- Used by
- Cursor
What this file tells the agent
This .cursorignore keeps Terraform & OpenTofu IaC build output, large data files and environment secrets out of Cursor's index and AI features, so context goes to your source code. It is best effort: commands the agent runs in the terminal can still read ignored files, so keep real secrets out of the repo too.
- Pin explicit version constraints for all providers and required Terraform/OpenTofu core versions (required_providers).
- Store state securely in remote backends (S3 with DynamoDB state locking or GCS/Terraform Cloud); ban local terraform.tfstate.
- Enforce mandatory resource tagging (Environment, Project, Owner, ManagedBy) on all provisioned cloud assets.
- Never hardcode secrets, API keys, or master database passwords; inject via secure variables with sensitive = true or secret managers.
- Declare explicit lifecycle { prevent_destroy = true } blocks on critical production databases and storage buckets.
Code to avoid, and what to write instead
The rule steers the agent away from the left and toward the right.
# Dangerous: Hardcoded secret, no version lock, unmanaged state
resource "aws_db_instance" "bad_db" {
engine = "postgres"
password = "plaintextpassword123" # Leaked credentials in git!
}terraform {
required_version = ">= 1.7.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40"
}
}
backend "s3" {
bucket = "corp-tf-state-prod"
key = "vpc/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "terraform-locks"
encrypt = true
}
}
resource "aws_db_instance" "primary" {
identifier = "app-db-prod"
allocated_storage = 50
engine = "postgres"
instance_class = "db.r6g.large"
password = var.db_password
skip_final_snapshot = false
lifecycle {
prevent_destroy = true
}
}Install it in one command
- 01
Go to your project root
The file goes at .cursorignore, relative to the root.
- 02
Download the file
Run the command on the right. It downloads this preset and writes the file.
- 03
Make sure it gets used
Cursor applies .cursorignore automatically. Matching files leave the index and AI features, but commands the agent runs in the terminal can still read them.
$ curl -fsSL "https://www.devscratchpad.tech/api/raw/cursorignore/terraform-iac" -o ".cursorignore"
writes .cursorignore
.cursorignore
To write the file from your own code instead, use Read your code or Convert Legacy Rules in the editor above.
More for Terraform & OpenTofu IaC
Questions
- How is .cursorignore different from .gitignore?
- .gitignore decides what git tracks. .cursorignore keeps files out of Cursor's codebase index and AI features; Cursor already skips files in .gitignore when it indexes.
- Does .cursorignore reduce wasted context?
- Yes. Ignored files are not indexed or pulled into requests, so build output and large data files do not crowd out your source code.