diff --git a/tff b/tff
index cf6907775cbf5db5213d7871b60fff93642d26e2..b980c15d5210028341177c09b6cc8901cb1ed267 100755
--- a/tff
+++ b/tff
@@ -3,7 +3,20 @@ set -eu
 
 command -v terraform >/dev/null || { echo "Can't find the terraform binary, aborting." >&2; exit 1; }
 
+version="$(terraform version | sed --silent 's/Terraform v\([0-9]*\)\.\([0-9]*\)\.[0-9]*$/\1.\2/p')"
+major="$(echo "$version" | cut -d '.' -f 1)"
+minor="$(echo "$version" | cut -d '.' -f 2)"
+if [ "$major" -gt '0' ] || [ "$minor" -gt '14' ]
+then
+    post0_14='1'
+fi
+
 for i in "$@"
 do
-    terraform fmt "$(dirname "$i")" || true
+    if [ -n "${post0_14:-}" ]
+    then
+        terraform -chdir="$(dirname "$i")" fmt || true
+    else
+        terraform fmt "$(dirname "$i")" || true
+    fi
 done
diff --git a/tfv b/tfv
index 5d9f1b67f66e158fd0dc3aefe8b68e62d30e597c..f0ae3943148cebbb83e44cee30e2fedff30b4d53 100755
--- a/tfv
+++ b/tfv
@@ -6,10 +6,24 @@ command -v terraform >/dev/null || { echo "Can't find the terraform binary, abor
 export TF_INPUT='0'
 export TF_IN_AUTOMATION='1'
 
+version="$(terraform version | sed --silent 's/Terraform v\([0-9]*\)\.\([0-9]*\)\.[0-9]*$/\1.\2/p')"
+major="$(echo "$version" | cut -d '.' -f 1)"
+minor="$(echo "$version" | cut -d '.' -f 2)"
+if [ "$major" -gt '0' ] || [ "$minor" -gt '14' ]
+then
+    post0_14='1'
+fi
+
 for i in "$@"
 do
-    terraform init -backend=false "$(dirname "$i")" || { code='1'; continue; }
-    terraform validate "$(dirname "$i")" || code='1'
+    if [ -n "${post0_14:-}" ]
+    then
+        terraform -chdir="$(dirname "$i")" init -backend=false || { code='1'; continue; }
+        terraform -chdir="$(dirname "$i")" validate || code='1'
+    else
+        terraform init -backend=false "$(dirname "$i")" || { code='1'; continue; }
+        terraform validate "$(dirname "$i")" || code='1'
+    fi
 done
 
 exit "${code:-0}"