diff --git a/vcsh b/vcsh
index b78235b7e9b06fa0f15842f9bbc62c0e80444a4f..068c61817dc5a08e371e0802fecb028730352cf2 100755
--- a/vcsh
+++ b/vcsh
@@ -175,6 +175,7 @@ commit() {
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git commit --untracked-files=no --quiet
+		VCSH_COMMAND_RETURN_CODE=$?
 		echo
 	done
 	hook post-commit
@@ -270,6 +271,7 @@ push() {
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git push
+		VCSH_COMMAND_RETURN_CODE=$?
 		echo
 	done
 	hook post-push
@@ -305,12 +307,14 @@ status() {
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git status --short --untracked-files='no'
+		VCSH_COMMAND_RETURN_CODE=$?
 	else
 		for VCSH_REPO_NAME in $(list); do
 			echo "$VCSH_REPO_NAME:"
 			export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 			use
 			git status --short --untracked-files='no'
+			VCSH_COMMAND_RETURN_CODE=$?
 			echo
 		done
 	fi