diff --git a/src/jio/features/jobChecker.js b/src/jio/features/jobChecker.js
index 5b5538c3285603ad76fdf1b1116ad57e8a3897c1..de5c5b3073c778ffd4cb7d785a46e8481727a618 100644
--- a/src/jio/features/jobChecker.js
+++ b/src/jio/features/jobChecker.js
@@ -1,5 +1,5 @@
 /*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true, unparam: true */
-/*global arrayInsert, indexOf, deepClone, defaults */
+/*global arrayInsert, indexOf, deepClone, defaults, IODeferred */
 
 // creates
 // - some defaults job rule actions
@@ -44,8 +44,9 @@ function enableJobChecker(jio, shared, options) {
       new_job.modified = new Date();
     },
     deny: function (original_job, new_job) {
-      new_job.state = 'running';
-      new_job.command.reject(
+      new_job.state = 'fail';
+      new_job.modified = new Date();
+      IODeferred.createFromParam(new_job).reject(
         'precondition_failed',
         'command denied',
         'Command rejected by the job checker.'
diff --git a/src/jio/features/jobQueue.js b/src/jio/features/jobQueue.js
index a372d01383936a9b39adf390d2c50e05816c1a17..8892677a867162c8526dcc3f7801da72a5562027 100644
--- a/src/jio/features/jobQueue.js
+++ b/src/jio/features/jobQueue.js
@@ -1,6 +1,6 @@
 /*jslint indent: 2, maxlen: 80, sloppy: true, nomen: true, unparam: true */
 /*global arrayExtend, localStorage, Workspace, uniqueJSONStringify, JobQueue,
-  constants */
+  constants, indexOf */
 
 function enableJobQueue(jio, shared, options) {
 
@@ -40,11 +40,13 @@ function enableJobQueue(jio, shared, options) {
     );
 
     shared.on('job', function (param) {
-      if (!param.stored) {
-        shared.job_queue.load();
-        shared.job_queue.post(param);
-        shared.job_queue.save();
-        param.stored = true;
+      if (indexOf(param.state, ['fail', 'done']) === -1) {
+        if (!param.stored) {
+          shared.job_queue.load();
+          shared.job_queue.post(param);
+          shared.job_queue.save();
+          param.stored = true;
+        }
       }
     });