diff --git a/sway/commands/workspace.c b/sway/commands/workspace.c
index 8364e607..5abbb676 100644
--- a/sway/commands/workspace.c
+++ b/sway/commands/workspace.c
@@ -38,10 +38,6 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {
 	if ((error = checkarg(argc, "workspace", EXPECTED_AT_LEAST, 1))) {
 		return error;
 	}
-	if (!root->outputs->length) {
-		return cmd_results_new(CMD_INVALID, "workspace",
-				"Can't run this command while there's no outputs connected.");
-	}
 
 	int output_location = -1;
 	int gaps_location = -1;
@@ -112,6 +108,9 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {
 	} else {
 		if (config->reading || !config->active) {
 			return cmd_results_new(CMD_DEFER, "workspace", NULL);
+		} else if (!root->outputs->length) {
+			return cmd_results_new(CMD_INVALID, "workspace",
+					"Can't run this command while there's no outputs connected.");
 		}
 
 		bool no_auto_back_and_forth = false;