# Terraform: "Unsupported argument" and "Unsupported block type" are version or typo problems

## What you are seeing

```
Error: Unsupported argument

  on main.tf line 12, in resource "aws_instance" "web":
  12:   new_feature_flag = true

An argument named "new_feature_flag" is not expected here.
```

## First response

1. Check the provider version in the lock file against the provider docs for that argument. "Not expected here" most often means "added in provider v5.40 and you have v5.31". The fix is a version bump, not config creativity.
2. Check spelling against the docs, including underscores vs hyphens and singular vs plural block names. Copy the argument name from the docs page, not from memory.
3. Check you are in the right resource or block. Arguments valid in one resource are not valid in a similar-looking one, and data sources accept a subset of the resource's arguments.

## Rules for agents

1. When the docs say the argument exists and your version is current, verify the docs version matches your provider version. Registry docs default to the latest release.
2. Do not work around with provisioners or null resources. If the provider lacks the argument, the right moves are: upgrade the provider, or accept the limitation and document it.
3. `terraform validate` catches these without any cloud access. Run it before plan in every workflow; it is the cheapest check you have.
4. After a provider upgrade that adds the argument, remember `init -upgrade` actually installs the new version. Editing the constraint alone changes nothing.
