Skip to main content
πŸŽ“ Claude Code Masterclass Learn AI-assisted development on Udemy β€” plus the companion book on Leanpub & Amazon. Start Learning
Fix Terraform Error Saved Plan is Stale
DevOps

Fix Terraform Error Saved Plan is Stale

Plan file outdated and can't be applied? Understand plan file lifecycle, auto-approve workflows, and CI/CD plan-apply patterns.

LB
Luca Berton
Β· 1 min read

The Error

When running terraform plan or terraform apply, you may encounter:

Error: Saved plan is stale

This error is common and usually straightforward to fix once you understand the cause.

Common Causes

1. Configuration Issues

The most frequent cause is a misconfiguration in your .tf files:

  • Incorrect resource references or attribute names
  • Missing required arguments
  • Type mismatches in expressions

2. State Issues

Terraform state can get out of sync:

# Check current state
terraform state list

# Show specific resource
terraform state show <resource_address>

# Refresh state from real infrastructure
terraform refresh

3. Provider or Version Issues

Provider updates can introduce breaking changes:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
  required_version = ">= 1.5.0"
}

Step-by-Step Fix

Step 1: Get Detailed Output

# Run plan with verbose logging
TF_LOG=DEBUG terraform plan 2>&1 | tee plan-debug.log

# Validate configuration
terraform validate

Step 2: Check Your Configuration

# Format and validate
terraform fmt -recursive
terraform validate

# Check for unused declarations
terraform plan -detailed-exitcode

Step 3: Apply the Fix

Based on your diagnosis, update your configuration:

# Example: Fix resource dependencies
resource "aws_instance" "web" {
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t3.micro"

  depends_on = [aws_security_group.web]
}

Step 4: Verify

# Plan again to confirm fix
terraform plan

# Apply with auto-approve (only in CI/CD)
terraform apply

Prevention

  1. Use terraform validate before every plan
  2. Pin provider versions in required_providers
  3. Use terraform fmt for consistent formatting
  4. Implement CI/CD with plan review before apply
  5. Enable state locking to prevent concurrent modifications
  6. Use modules for reusable, tested configurations

Master Terraform and Infrastructure as Code with Luca Berton’s courses β€” practical, hands-on training for DevOps engineers.

Free 30-min AI & Cloud consultation

Book Now