diff --git a/arkindex_worker/worker/base.py b/arkindex_worker/worker/base.py
index eacaad55cf26660fe9207057e34486cacf84fd61..58874657a8fb6fb75a147d704ade510f7cbae911 100644
--- a/arkindex_worker/worker/base.py
+++ b/arkindex_worker/worker/base.py
@@ -170,6 +170,13 @@ class BaseWorker(object):
                 f"Loaded worker {worker_version['worker']['name']} revision {worker_version['revision']['hash'][0:7]} from API"
             )
             self.config = worker_version["configuration"]["configuration"]
+            if "user_configuration" in worker_version["configuration"]:
+                # Use default values from user configurable parameters if they are set
+                for key, value in worker_version["configuration"][
+                    "user_configuration"
+                ].items():
+                    if "default" in value:
+                        self.config.update({key: value["default"]})
             self.worker_details = worker_version["worker"]
             required_secrets = worker_version["configuration"].get("secrets", [])
         elif self.args.config:
diff --git a/tests/conftest.py b/tests/conftest.py
index 04c8c7949f7102b1e8a492fb4f85971bbf995413..a1e5049b8a163df6e12fd912723dafe5666c2a7d 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -101,7 +101,9 @@ def setup_api(responses, monkeypatch, cache_yaml):
 
 
 @pytest.fixture(autouse=True)
-def give_env_variable(monkeypatch):
+def give_env_variable(request, monkeypatch):
+    if "disable_autouse_env" in request.keywords:
+        return
     """Defines required environment variables"""
     monkeypatch.setenv("WORKER_VERSION_ID", "12341234-1234-1234-1234-123412341234")
     monkeypatch.setenv("ARKINDEX_PROCESS_ID", "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeffff")
diff --git a/tests/test_base_worker.py b/tests/test_base_worker.py
index 5d17d091cdd8a7db22a41f3a8fd53ecb731f710a..df50e02e91bc2136a3b562004277c39362824765 100644
--- a/tests/test_base_worker.py
+++ b/tests/test_base_worker.py
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-
+import json
 import logging
 import os
 import sys
 from pathlib import Path
+from unittest import mock
 
 import gnupg
 import pytest
@@ -160,11 +162,40 @@ def test_configure_worker_run(mocker, monkeypatch, responses, mock_config_api):
     assert worker.user_configuration == {"a": "b"}
 
 
-def test_configure_worker_run_missing_worker_conf(
-    mocker, monkeypatch, responses, mock_config_api
+@pytest.mark.disable_autouse_env
+@mock.patch.dict(
+    os.environ,
+    {
+        "WORKER_VERSION_ID": "ddddddddd-dddd-dddd-dddd-dddddddddddd",
+        "ARKINDEX_PROCESS_ID": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeffff",
+    },
+)
+def test_configure_user_configuration_defaults(
+    mocker, monkeypatch, mock_user_api, mock_process_api, responses
 ):
+    worker_version = {
+        "worker": {"id": "1234", "name": "Workerino", "slug": "workerino"},
+        "revision": {"hash": "1234lala-lalalalala-lala"},
+        "configuration": {
+            "configuration": {"param_1": "/some/path/file.pth", "param_2": 12},
+            "user_configuration": {
+                "param_3": {
+                    "title": "A Third Parameter",
+                    "type": "string",
+                    "default": "Animula vagula blandula",
+                },
+                "param_4": {"title": "Parameter The Fourth", "type": "int"},
+                "param_5": {
+                    "title": "Parameter 5 (Five)",
+                    "type": "bool",
+                    "default": True,
+                },
+            },
+        },
+    }
+    test_worker_version_id = "ddddddddd-dddd-dddd-dddd-dddddddddddd"
     worker = BaseWorker()
-    mocker.patch.object(sys, "argv", ["worker"])
+    mocker.patch.object(sys, "argv")
     run_id = "aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
     monkeypatch.setenv("ARKINDEX_WORKER_RUN_ID", run_id)
     responses.add(
@@ -172,9 +203,20 @@ def test_configure_worker_run_missing_worker_conf(
         f"http://testserver/api/v1/imports/workers/{run_id}/",
         json={"id": run_id},
     )
+    responses.add(
+        responses.GET,
+        f"http://testserver/api/v1/workers/versions/{test_worker_version_id}/",
+        body=json.dumps(worker_version),
+        content_type="application/json",
+    )
     worker.configure()
 
-    assert worker.user_configuration == {}
+    assert worker.config == {
+        "param_1": "/some/path/file.pth",
+        "param_2": 12,
+        "param_3": "Animula vagula blandula",
+        "param_5": True,
+    }
 
 
 def test_configure_worker_run_missing_conf(
diff --git a/tox.ini b/tox.ini
index aa0cb057b524dbd1f80595c7e06f54953a378df5..6dd6c78857b6ac04165c16fc12c2bc7da3361b42 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,3 +14,5 @@ deps =
 [pytest]
 testpaths =
   tests
+markers =
+  disable_autouse_env: do not use pre-set (autouse) environment variables.