diff --git a/build/evaluate.js b/build/evaluate.js
index 92f7e6d..b4f606f 100644
--- a/build/evaluate.js
+++ b/build/evaluate.js
@@ -4,6 +4,7 @@ const log = require('fancy-log');
 const Promise = require('bluebird');
 const fs = require('fs-extra');
 const path = require('path');
+const actions = require('./actions');
 
 const LOG = {
   new:     true,
@@ -45,8 +46,21 @@ module.exports = exports = async function process (tasks, cache) {
           output: 'dist/' + output,
         });
       } catch (err) {
-        log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err);
-        return false;
+        if (status.duplicate && await fs.pathExists(status.duplicate)) {
+          try {
+            result = await actions.copy({
+              input: status.duplicate,
+              output: 'dist/' + output,
+            });
+            log.info(`Task (${task.action.name}) failed for file ${output}, fell back to saved duplicate ${status.duplicate}`);
+          } catch (err2) {
+            log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err);
+            return false;
+          }
+        } else {
+          log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err);
+          return false;
+        }
       }
 
       status = await cache.set(task, result, lastSeen);