diff --git a/cli/app/deploy.go b/cli/app/deploy.go
index 765e3a6e71..a44eee8089 100644
--- a/cli/app/deploy.go
+++ b/cli/app/deploy.go
@@ -81,6 +81,11 @@ recipes.
 					logrus.Fatal(err)
 				}
 			}
+		} else {
+			logrus.Infof("choosing '%s' as version to deploy", version)
+			if err := recipe.EnsureVersion(app.Type, version); err != nil {
+				logrus.Fatal(err)
+			}
 		}
 
 		if internal.Chaos {
diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go
index 975dba1366..64a0a9a7b7 100644
--- a/pkg/recipe/recipe.go
+++ b/pkg/recipe/recipe.go
@@ -109,6 +109,15 @@ func EnsureExists(recipe string) error {
 func EnsureVersion(recipeName, version string) error {
 	recipeDir := path.Join(config.ABRA_DIR, "apps", recipeName)
 
+	isClean, err := gitPkg.IsClean(recipeName)
+	if err != nil {
+		return err
+	}
+
+	if !isClean {
+		return fmt.Errorf("'%s' has locally unstaged changes", recipeName)
+	}
+
 	repo, err := git.PlainOpen(recipeDir)
 	if err != nil {
 		return err